Примерные ответы на профильные билеты Е.А. Еремин, А.П. Шестаков От авторов Уважаемые читатели! Предлагаемые вашему вниманию материалы предназначены прежде всего в помощь учителю при подготовке, организации и проведении “экзамена по выбору выпускникам XI (XII) классов общеобразовательных учреждений РФ”1 . Как известно, экзаменационные билеты существуют в двух вариантах (двух уровнях) — базовом и профильном. В сопроводительных материалах сказано, что “на базовом уровне содержание ориентировано на обобщение, систематизацию изученного материала; на профильном уровне — на расширение и углубление материала”. В данной публикации мы ориентируемся на профильный уровень, хотя часть материалов, несомненно, будет полезна и при подготовке к экзамену на базовом уровне. В каком-то смысле выбор в пользу “расширения и углубления материала” сделан нами и потому, что речь идет об экзамене по выбору; мы исходим из того, что выбор учащимися того или иного экзамена определяется прежде всего их интересами и знаниями, так что разрабатываемые материалы должны быть ориентированы на учеников, интересующихся информатикой. Как и в сериях своих предыдущих статей по данной тематике (см. “Информатику” № 9– 20, 2002; № 5–15, 2003, и № 6–20, 2004), мы категорически возражаем против того, чтобы публикуемый текст рассматривался как некие “эталонные” ответы на вопросы билетов, при воспроизведении которых на экзамене любой ученик немедленно получает отличную оценку. Авторы вообще считают, что всякие попытки написать (и особенно опубликовать) с такой целью тексты порочны, ибо целью обучения является не воспроизведение составленного кем-то другим текста, а сознательное применение необходимых в той или иной ситуации (вопрос, задача, практическая проблема и т.п.) 2 собственных знаний . В этом наша позиция полностью совпадает с официальными рекомендациями по проведению экзамена, где, в частности, недвусмысленно сказано, что “сообщать формулировки конкретных задач в период подготовки к экзаменам не рекомендуется, т.к. велика вероятность заучивания учащимися правильных решений без понимания сущности вопроса”. Казалось бы, все это тривиальные вещи. Но если в порядке эксперимента взять текст одного из наших первых материалов по билетам и ввести в замечательную интернетсистему Антиплагиат (http://www.antiplagiat.ru/quick.php), то она немедленно выдаст, что наша публикация3 на 99% совпадает с текстом реферата с сайта referatbank.ru (на самом деле, конечно, наоборот, но машина не в состоянии определить авторства текста!). В данном случае печален не столько сам по себе факт плагиата, сколько то, что подход к образованию под девизом “закачай на referat.ru и получи “заслуженную” пятерку!” стал так активно востребован. В этом видна и заметная недоработка учителей, т.к. установить факт получения реферата путем закачки из Сети в состоянии любой выпускник педагогического вуза, не говоря уже об учителе со стажем. Для этого достаточно одногодвух вопросов по существу дела, а затем — получи в полном смысле слова заслуженную оценку… Короче говоря, мы очень не хотим, чтобы наши публикации считались “контентом” для массовой подмены сложного информационного процесса обучения и контроля знаний школьников примитивными процессами получения, копирования и распечатки файлов на компьютере. Мы убедительно просим рассматривать наши публикации как традиционное учебное пособие, которое учитель использует при подготовке к занятиям, а ученик читает для закрепления рассказанного на уроке. Что касается ответа ученика на экзамене, то в идеале — это его рассказ своими словами той части материала, которую он усвоил, да еще и дополненный встречавшимися в его личной практике примерами. И еще одно замечание. Наши материалы в известном смысле субъективны, т.к. отражают наше мировоззрение и значительный личный педагогический опыт. Тем не менее мы всегда стараемся компенсировать субъективность проработкой большого количества учебных материалов других авторов. Везде, где это не оговорено особо, излагаемый материал соответствует общепринятому подходу. В то же время советуем не забывать, что билеты (а тем более ответы на них!) являются примерными и “образовательное учреждение на их основе составляет комплекты билетов, непосредственно используемых на экзамене, с учетом содержания учебной программы, наличия средств ИКТ и используемого программного обеспечения”. Структура ответа на билет чаще всего будет выглядеть следующим образом: раскрыто содержание теоретического вопроса, показаны выходы на практическую составляющую; показаны решения примерных заданий практической части, предложено до 3–5 наших вариантов примерных заданий (где это возможно) по каждому из двух практических заданий билета. Желаем всем удачной подготовки и сдачи экзаменов! Здесь и далее цитируются сопроводительные материалы к билетам (см. газету “Информатика”, 2006, № 6, с. 3–16, или журнал “Информатика и образование”, 2006, № 3, с. 10–30). 1 Кроме того, нельзя не учитывать вариативность программ в конкретных учебных заведениях. 2 Был проверен текст первого вопроса билета № 2, опубликованный в № 11, 2002, с. 11–13 газеты. 3 Билет № 1 1. Понятие информации. Виды информации, ее свойства, классификации по различным основаниям, проблема определения. Выбор способа представления информации в соответствии с поставленной задачей. Информационные процессы. Передача информации в социальных, биологических и технических системах. Информационное взаимодействие в системе, управление, обратная связь. Информация относится к фундаментальным, неопределяемым понятиям науки информатика. Тем не менее смысл этого понятия должен быть разъяснен. Предпримем попытку рассмотреть это понятие с различных позиций. Термин информация происходит от латинского слова informatio, что означает сведения, разъяснения, изложение. В настоящее время наука пытается найти общие свойства и закономерности, присущие многогранному понятию информация, но пока это понятие во многом остается интуитивным и получает различные смысловые наполнения в различных отраслях человеческой деятельности: ··в быту информацией называют любые данные, сведения, знания, которые кого-либо интересуют. Например, сообщение о каких-либо событиях, о чьей-либо деятельности и т.п.; ··в технике под информацией понимают сообщения, передаваемые в форме знаков или сигналов (в этом случае есть источник сообщений, получатель (приемник) сообщений, канал связи); ··в кибернетике под информацией понимают ту часть знаний, которая используется для ориентирования, активного действия, управления, т.е. в целях сохранения, совершенствования, развития системы; ··в теории информации под информацией понимают сведения об объектах и явлениях окружающей среды, их параметрах, свойствах и состоянии, которые уменьшают имеющуюся о них степень неопределенности, неполноты знаний. Согласно Большому энциклопедическому словарю, информация — первоначально — сведения, передаваемые людьми устным, письменным или другим способом (с помощью условных сигналов, технических средств и т.д.); с сер. XX в. — общенаучное понятие, включающее обмен сведениями между людьми, человеком и автоматом, автоматом и автоматом; обмен сигналами в животном и растительном мире; передачу признаков от клетки к клетке, от организма к организму; одно из основных понятий кибернетики. Применительно к компьютерной обработке данных под информацией понимают некоторую последовательность символических обозначений (букв, цифр, закодированных графических образов и звуков и т.п. — см. билет № 2), несущую смысловую нагрузку и представленную в понятном компьютеру виде. Каждый новый символ в такой последовательности символов увеличивает информационный объем сообщения. Информация может существовать в виде [7]: ·· текстов, рисунков, чертежей, фотографий; ·· световых или звуковых сигналов; ·· радиоволн; ·· электрических и нервных импульсов; ·· магнитных записей; ·· жестов и мимики; ·· запахов и вкусовых ощущений; ·· хромосом, посредством которых передаются по наследству признаки и свойства организмов, и т.д. Свойства информации (с точки зрения бытового подхода к определению информации): релевантность — способность информации соответствовать нуждам (запросам) потребителя; полнота — свойство информации исчерпывающе (для данного потребителя) характеризовать отображаемый объект или процесс; своевременность — способность информации соответствовать нуждам потребителя в нужный момент времени; достоверность — свойство информации не иметь скрытых ошибок. Достоверная информация со временем может стать недостоверной, если устареет и перестанет отражать истинное положение дел; доступность — свойство информации, характеризующее возможность ее получения данным потребителем; защищенность — свойство, характеризующее невозможность несанкционированного использования или изменения информации; эргономичность — свойство, характеризующее удобство формы или объема информации с точки зрения данного потребителя. Информацию следует считать особым видом ресурса, при этом имеется в виду толкование “ресурса” как запаса неких знаний материальных предметов или энергетических, структурных или каких-либо других характеристик предмета. В отличие от ресурсов, связанных с материальными предметами, информационные ресурсы являются неистощимыми и предполагают существенно иные методы воспроизведения и обновления, чем материальные ресурсы. С этой точки зрения можно рассмотреть такие свойства информации: · запоминаемость; · передаваемость; · воспроизводимость; · преобразуемость; · стираемость. Запоминаемость — одно из самых важных свойств. Запоминаемую информацию будем называть макроскопической (имея в виду пространственные масштабы запоминающей ячейки и время запоминания). Именно с макроскопической информацией мы имеем дело в реальной практике. Передаваемость информации с помощью каналов связи (в том числе с помехами) хорошо исследована в рамках теории информации К.Шеннона. В данном случае имеется в виду несколько иной аспект — способность информации к копированию, т.е. к тому, что она может быть “запомнена” другой макроскопической системой и при этом останется тождественной самой себе. Очевидно, что количество информации не должно возрастать при копировании. Воспроизводимость информации тесно связана с ее передаваемостью и не является ее независимым базовым свойством. Если передаваемость означает, что не следует считать существенными пространственные отношения между частями системы, между которыми передается информация, то воспроизводимость характеризует неиссякаемость и неистощимость информации, т.е. что при копировании информация остается тождественной самой себе. Фундаментальное свойство информации — преобразуемость. Оно означает, что информация может менять способ и форму своего существования. Копируемость есть разновидность преобразования информации, при котором ее количество не меняется. В общем случае количество информации в процессах преобразования меняется, но возрастать не может. Свойство стираемости информации также не является независимым. Оно связано с таким преобразованием информации (передачей), при котором ее количество уменьшается и становится равным нулю. Данных свойств информации недостаточно для формирования ее меры, так как они относятся к физическому уровню информационных процессов. В заключение отметим, что предпринимаются усилия ученых, представляющих самые разные области знания, построить единую теорию, которая призвана формализовать понятие информации и информационного процесса, описать превращения информации в процессах самой разной природы. С момента возникновения кибернетики управление рассматривается применительно ко всем формам движения материи, а не только к высшим (биологической и социальной). Многие проявления движения в неживых — искусственных (технических) и естественных (природных) — системах также обладают общими признаками управления, хотя их исследуют в химии, физике, механике в энергетической, а не в информационной системе представлений. Информационные аспекты в таких системах составляют предмет новой междисциплинарной науки — синергетики. Высшей формой информации, проявляющейся в управлении в социальных системах, являются знания. Это наддисциплинарное понятие, широко используемое в педагогике и исследованиях по искусственному интеллекту, также претендует на роль важнейшей философской категории. В философском плане познание следует рассматривать как один из функциональных аспектов управления. Под информационным понимают процесс, связанный с определенными операциями над информацией, в ходе которого может измениться содержание информации или форма ее представления. В информатике к таким процессам относят получение, хранение, передачу, обработку, использование информации. Вообще информатика (informatics, амер. computer science) — в широком смысле — отрасль знаний, изучающая общие свойства и структуру научной информации, а также закономерности и принципы ее создания, преобразования, накопления, передачи и использования в различных областях человеческой деятельности; в узком смысле — отрасль знаний, изучающая законы и методы накопления, передачи и обработки информации с помощью компьютера. Получение информации основано на отражении различных свойств объектов, явлений и процессов окружающей среды. В природе такого рода отражение выражается в восприятии с помощью органов чувств. Человек пошел дальше по этому пути и создал множество приборов, которые многократно усиливают природные способности к восприятию. Человек воспринимает с помощью органов чувств следующую информацию: ··визуальная (восприятие зрительных образов, различение цветов и т.д.) — с помощью зрения; ··звуковая (восприятие музыки, речи, сигналов, шума и т.д.) — с помощью слуха; ··обонятельная (восприятие запахов) — с помощью обоняния; ··вкусовая (восприятие посредством вкусовых рецепторов языка) — с помощью вкуса; ··тактильная (посредством кожного покрова восприятие информации о температуре, качестве предметов и т.д.) — с помощью осязания. Примеры получения информации: 1) динамик компьютера издает специфический звук, хорошо знакомый Васе, — следовательно, пришло новое сообщение по ICQ; 2) с вертолета пожарной охраны в глубине леса замечен густой дым — обнаружен новый лесной пожар; 3) всевозможные датчики, расположенные в сейсмологически неустойчивом районе, фиксируют изменение обстановки, характерное для приближающегося землетрясения. Хранение информации имеет большое значение для многократного использования информации, передачи информации во времени. С точки зрения человека, различная информация, в зависимости от степени ее важности и ценности, может иметь разное по длительности время хранения. Некоторую информацию он хранит в течение всей жизни (а может и передать потомкам), другую же — от нескольких секунд до нескольких дней. Память человека не способна хранить всю получаемую информацию (следует иметь в виду, что получение информации не прекращается ни на секунду). Для долговременного хранения используются книги, в настоящее время — компьютерные носители внешней памяти и др. Следует заметить, что информация чаще всего хранится для неоднократной дальнейшей работы с ней. В этом случае для ускорения поиска информация должна быть тем или иным образом упорядочена. В библиотеках это картотеки, при хранении с использованием компьютера — базы данных, информационно-поисковые системы и т.д., в простейшем случае — размещение информации в определенных папках. При указанных способах хранения информация хранится в знаковой форме. Передача информации необходима для того или иного ее распространения. Простейшая схема передачи такова: источник информации — канал связи — приемник (получатель) информации Для передачи информации с помощью технических средств необходимо кодирующее устройство, предназначенное для преобразования исходного сообщения источника информации к виду, удобному для передачи, и декодирующее устройство, необходимое для преобразования кодированного сообщения в исходное. При передаче информации необходимо учитывать тот факт, что информация при этом может теряться или искажаться, т.е. присутствуют помехи. Для нейтрализации помех при передаче информации зачастую используют помехоустойчивый избыточный код, который позволяет восстановить исходную информацию даже в случае некоторого искажения. Другой случай — преднамеренное искажение информации злоумышленниками. На этот счет тоже предусмотрены свои средства. Существует специальная наука, которая разрабатывает способы защиты информации, — криптология. Основными устройствами для быстрой передачи информации на большие расстояния в настоящее время являются телеграф, радио, телефон, телевизионный передатчик, телекоммуникационные сети на базе вычислительных систем. Обработка информации подразумевает преобразование ее к виду, отличному от исходной формы или содержания информации. Наиболее общая схема обработки информации такова: входная информация — преобразователь информации — выходная информация Процесс изменения информации может включать в себя, например, такие действия: численные расчеты, редактирование, упорядочивание, обобщение, систематизация и т.д. Примеры изменения формы информации при обработке: перевод с одного языка на другой, двоичное кодирование изображения и т.д. Вообще чаще всего изменение формы информации предполагает наличие процесса кодирования и декодирования. Частные примеры обработки информации: 1) в приведенном выше примере с сейсмологической станцией после получения информации о приближающемся землетрясении все полученные данные обобщаются, процесс землетрясения моделируется, и прогнозируются возможные его ход и последствия; 2) учителю приносят личные дела учащихся, поступивших в первый класс. На основе анализа этих материалов учитель составляет классный журнал, где список учащихся составлен в алфавитном порядке, заполнена необходимая справочная информация об учащихся и т.д.; 3) ученый-математик доказывает новую теорему, т.е. на основе имеющейся системы аксиом, определений и ранее доказанных теорем обосновывается новое утверждение. Живые организмы и растения обрабатывают информацию с помощью своих органов и систем. Компьютер является устройством, которое по разработанным человеком программам производит автоматическую обработку информации. Чаще всего, с точки зрения человека, он действует по принципу “черного ящика”, т.е. для определенных наборов данных по указанной выше схеме позволяет получить соответствующие им выходные результаты (алгоритм обработки при этом неизвестен). Результаты обработки информации в дальнейшем используются в тех или иных целях. Деятельность человека, которая связана с процессами получения, преобразования, накопления, передачи и использования информации, управления, называют информационной деятельностью. В заключение представим основные вехи в процессе развития и совершенствования информационной деятельности человека. Появление речи. Значительно расширило возможности информационной деятельности человека, в особенности передачи информации. Возникновение письменности. Дало возможность долговременного хранения информации и передачи накопленных знаний и культурных ценностей последующим поколениям. Изобретение книгопечатания. Революция в мире тиражирования знаний, хранящихся в письменном виде. Расширение научной информации, развитие художественной литературы и т.д. Возможность быстрого тиражирования книг приводит к росту количества библиотек, архивов, аккумулирующих знания человечества. Целенаправленная обработка информации по-прежнему остается прерогативой человека. Изобретение ЭВМ — универсальных инструментов информационной деятельности. В последние десятки лет рост объема информации настолько велик, что это стало объективной предпосылкой появления такого рода инструментов. Практически во все сферы информационной (да и не только) деятельности человека внедряются компьютеры. Разработка способов и методов представления информации, технологий решения повседневных и научных задач с использованием компьютеров стала важным аспектом деятельности людей многих профессий. Литература 1. Гейн А.Г., Сенокосов А.И., Шолохович В.Ф. Информатика: 7–9 кл. Учебник для общеобразовательных учебных заведений. М.: Дрофа, 1998. 2. Каймин В.А., Щеголев А.Г., Ерохина Е.А., Федюшин Д.П. Основы информатики и вычислительной техники: Пробный учебник для 10–11-х классов средней школы. М.: Просвещение, 1989. 3. Кушниренко А.Г., Лебедев Г.В., Сворень Р.А. Основы информатики и вычислительной техники: Учебник для средних учебных заведений. М.: Просвещение, 1993. 4. Семакин И., Залогова Л., Русаков С., Шестакова Л. Информатика: учебник по базовому курсу. М.: Лаборатория Базовых Знаний, 1998. 5. Угринович Н. Информатика и информационные технологии. Учебное пособие для общеобразовательных учреждений. М.: БИНОМ, 2001, 464 с. (Введение в информатику, с. 13–16.) 6. Информатика. 7–8-е классы / Под ред. Н.В. Макаровой. СПб.: ПитерКом, 1999, 368 с. 7. Шауцукова Л.З. Информатика: Учебник для 10–11-х классов. М.: Просвещение, 2000. 8. Гейн А.Г. Обязательный минимум содержания образования по информатике: и в нем нам хочется дойти до самой сути. // Информатика № 24, 2001, с. 3–9. 9. Андреева Е.В. Математические основы информатики. Элективный курс: Учебное пособие / Е.В. Андреева, Л.Л. Босова, И.Н. Фалина. М.: БИНОМ. Лаборатория Знаний, 2005, 328 с. 2. С помощью электронной таблицы смоделировать 100 исходов бросания игрального кубика. Сравнить результаты опыта с теоретическими значениями. Проведем моделирование указанной в задании ситуации. Для решения задачи необходимо сгенерировать 100 случайных целых значений из диапазона [1; 6] (на игральном кубике на соответствующих гранях записаны именно эти числа и при бросании — если он не упадет на ребро, что ничтожно маловероятно — выпадает именно одно из этих чисел). Воспользуемся встроенным датчиком случайных чисел. Функция СЛЧИСЛО в Excel возвращает случайное значение из полуинтервала [0; 1). Умножив это значение на 6, прибавив единицу и отбросив дробную часть, как раз получим значение из нужного диапазона. Например, для ячейки A2 (см. рисунок на с. 16) формула выглядит следующим образом: =ЦЕЛОЕ(СЛЧИС()*6;0)+1 Скопировав эту формулу в диапазон $A$2:$A$101, как раз получим 100 необходимых значений. Проанализируем полученные значения. Для этого подсчитаем количество выпадений каждого из значений 1, 2, 3, 4, 5, 6. Можно воспользоваться функцией СЧЁТЕСЛИ, которая позволяет подсчитывать значения, удовлетворяющие определенному критерию. Например, для ячейки C2, где подсчитывается число единиц, формула будет выглядеть так: =СЧЁТЕСЛИ($A$2:$A$101;1) Для других значений подсчет ведется аналогично. Ниже вычисляются относительные частоты выпадения каждого из значений. При большом количестве испытаний эти частоты становятся близкими к вероятности выпадения каждого из значений (в нашем случае все события являются равновероятными, вероятность выпадения каждого из чисел равна 1/6). 100 испытаний, которые мы провели, в данном случае недостаточно, поэтому относительные частоты порой значительно отличаются от теоретических значений. Предлагаем читателю самостоятельно подобрать то количество испытаний, при котором теоретические данные и результаты опыта практически сравняются. Отметим, что поскольку работа ведется со случайными числами, то при каждом запуске Excel или при вводе каждой новой формулы значения пересчитываются. Поэтому, составив такую же таблицу, читатель может получить отличающиеся от наших результаты. Примечание. Отметим, что для решения данной задачи можно было воспользоваться и другим приемом. Заполнение таблицы, а также обработка полученных опытных результатов могли осуществляться посредством скрипта на Visual Basic for Application. Очевидно, в тех школах, где данный язык изучался (например, если обучение велось по учебникам Н.Угриновича), приветствуется и скриптовый вариант решения. Варианты заданий 1. С помощью электронной таблицы смоделировать 500 исходов гаданий на ромашке по принципу “любит — не любит”. Сравнить результаты опыта с теоретическими значениями. Выяснить, при каком количестве испытаний экспериментальные данные становятся близки к теоретическим. 2. С помощью электронной таблицы смоделировать следующую ситуацию. Вы стоите на автобусной остановке и собираете статистику. Согласно графику движения, каждые 7 минут к остановке должен подходить автобус маршрута № 11. Определить, какой процент автобусов приходит вовремя, сколько опаздывает, сколько приходит раньше графика. Считать, что вероятность прийти согласно графику составляет 2/3, опоздать — 1/6, прийти раньше графика — 1/6. Провести моделирование для 100 автобусов. Сравнить экспериментальные данные с теоретическими. 3. Проверить гипотезу, что встроенный в табличный процессор датчик случайных чисел выдает последовательность равномерно распределенных случайных чисел. Для этого сгенерировать 2000 случайных чисел на полуинтервале [0; 1). Разбить полуинтервал на 10 равных частей, подсчитать количество случайных чисел, попавших в каждый из 10 получившихся полуинтервалов; при этом, согласно гипотезе, эти количества должны быть примерно одинаковыми. Объяснить, почему результат испытаний отличается от гипотезы. 3. Построить таблицу истинности для заданного логического выражения (логическое выражение должно содержать не менее четырех логических операций, в том числе импликацию). Построить таблицу истинности для данного логического выражения: Для решения задачи будем согласно приоритету операций строить таблицу истинности последовательно, получив в конечном итоге результат для заданного выражения Варианты заданий Построить таблицу истинности для заданного логического выражения: Билет № 2 1. Понятие о кодировании информации. Универсальность дискретного (цифрового) представления информации. Позиционные и непозиционные системы счисления. Алгоритмы перевода из десятичной системы счисления в произвольную и наоборот. Связь между двоичной, восьмеричной и шестнадцатеричной системами счисления. Двоичная арифметика. Как мы уже знаем (см. билет № 1), предметом изучения для комплекса наук, называемого информатикой, является информация. Разные дисциплины информатики рассматривают те или иные аспекты действий над информацией — ее получение, передачу, обработку и т.д.; в современных учебниках информатики их принято называть информационными процессами. Для любой операции над информацией (даже такой простой, как сохранение) она должна быть как-то представлена (записана, зафиксирована). Следовательно, прежде всего необходимо договориться об определенном способе представления информации, т.е. ввести некоторые обозначения и правила их использования (порядок записи, возможности комбинации знаков и др.). Когда все это аккуратно определено, используя указанные соглашения, информацию можно записывать, причем с уверенностью, что она будет однозначно воспринята. Вследствие важности данного процесса он имеет специальное название — кодирование информации. Кодирование информации необычайно разнообразно. Указания водителю автомобиля по проезду дороги кодируются в виде дорожных знаков, а также специальных индикаторных устройств (светофоров и всевозможных светящихся табло около них). Музыкальное произведение кодируется с помощью знаков нотной грамоты, для записи шахматных партий и химических формул также созданы специализированные нотации (системы записи). Менее стандартными, но легко интуитивно понимаемыми являются комбинации изображений солнышка и облаков, компактно описывающие погоду. Весьма специфическую азбуку флажков придумали моряки. Устная речь человека, которая служит одним из важных каналов передачи информации, состоит из стандартного набора звуков (имеющего свои особенности для каждого национального языка) в различных сочетаниях. Любой грамотный компьютерный пользователь знает о существовании кодировок символов ASCII, Unicode и некоторых других. Правила записи чисел в десятичной системе — это тоже способ кодирования, предназначенный для произвольных чисел. Географическая карта по определенным правилам кодирует информацию о рельефе местности и относительном расположении объектов, электрическая схема или сборочный чертеж — о соединении деталей. Высота столбика термометра или отклонение стрелки амперметра на фоне нарисованной шкалы представляют данные о температуре или силе тока и т.д. Понятие кодирования используется в информатике необычайно широко, причем существуют даже разные уровни кодирования информации. Например, из практики известна проблема с выбором кодировки русских текстов; это своего рода теоретическая проблема — какие коды выбрать для каждой буквы. А вот пример другого свойства: при наличии некачественных дисководов и дискет информация где-то читается, а где-то нет. Здесь имеет значение другой уровень кодирования — физический: записываемая на дискету двоичная информация (в том числе представляющая собой те же тексты!) кодируется с помощью интенсивности намагничивания определенных мест магнитной поверхности, а проблемы возникают при попытке найти и распознать эти “магнитные пятна”. Подчеркнем, что если сопоставить приведенные примеры, то отчетливо видно, что проблема кодирования далеко не всегда непосредственно связана с рассмотрением какоголибо конкретного материального носителя. Если читатели пожелают подробнее познакомиться с “оттенками” использования термина кодирование в информатике, советуем обратиться к детальному аналитическому обзору А.Г. Гейна, опубликованному в газете в прошлом году (см. ссылку в списке литературы). Теория кодирования информации является одной из дисциплин, которые входят в состав информатики. Она занимается вопросами экономичности (архивация, ускорение передачи данных), надежности (обеспечение восстановления переданной информации в случае повреждения) и безопасности (шифрование) кодирования информации. Закодированная информация всегда имеет под собой какую-либо объективную основу, поскольку информация есть отражение тех или иных свойств окружающего нас мира. В то же время, одну и ту же информацию можно закодировать разными способами: число записать в десятичной или двоичной системе, данные о выпуске продукции по годам представить в виде таблицы или диаграммы, текст лекции записать на магнитофон или сохранить в печатном виде, собрание сочинений классика перевести и издать на всех языках народов мира. Существует два принципиально отличных способа представления информации: непрерывный и дискретный. Если некоторая величина, несущая информацию, в пределах заданного интервала может принимать любое значение, то она называется непрерывной. Наоборот, если величина способна принимать только конечное число значений в пределах интервала, она называется дискретной. Хорошим примером, демонстрирующим различия между непрерывными и дискретными величинами, могут служить целые и вещественные числа. В частности, между значениями 2 и 4 имеется всего одно целое число, но бесконечно много вещественных (включая знаменитое p). Для наглядного представления о сути явления дискретности можно также сравнить таблицу значений функции и ее график, полученный путем соединения соответствующих точек плавной линией. Очевидно, что с увеличением количества значений в таблице (интервал дискретизации сокращается) различия существенно уменьшаются, и дискретизированная величина все лучше описывает исходную (непрерывную). Наконец, когда имеется настолько большое количество точек, что мы не в состоянии различить соседние, на практике такую величину можно считать непрерывной. Компьютер способен хранить только дискретно представленную информацию. Его память, как бы велика она ни была, состоит из отдельных битов, а значит, по своей сути дискретна. В заключение заметим, что сама по себе информация не является непрерывной или дискретной: таковыми являются лишь способы ее представления. Например, давление крови можно с одинаковым успехом измерять аналоговым или цифровым прибором. Принципиально важным отличием дискретных данных от непрерывных является конечное число их возможных значений. Благодаря этому каждому из них может быть поставлен в соответствие некоторый знак (символ) или, что для компьютерных целей гораздо лучше, определенное число. Иными словами, все значения дискретной величины могут быть тем или иным способом пронумерованы. Примечание. Рассмотрим такую, казалось бы, “неарифметическую” величину, как цвет, обычно представляемую в компьютере как совокупность интенсивности трех базовых цветов RGB. Тем не менее, записанные вместе, все три интенсивности образуют единое “длинное” число, которое формально вполне можно принять за номер цвета. Значение сформулированного выше положения трудно переоценить: оно позволяет любую дискретную информацию свести к единой универсальной форме — числовой. Не случайно поэтому в последнее время большое распространение получил термин “цифровой”, например, цифровой фотоаппарат. Заметим, что для цифрового фотоаппарата важно не столько существование дискретной светочувствительной матрицы из миллионов пикселей (в конце концов “химическая” фотопленка также состояла из отдельных зерен), сколько последующая запись состояния ячеек этой матрицы в числовой форме. В свете сказанного выше вопрос об универсальности дискретного представления данных становится очевидным: дискретная информация любой природы сводится тем или иным способом к набору чисел. Кстати, данное положение лишний раз подчеркивает, что каким бы “мультимедийным” не выглядел современный компьютер, “в глубине души” он попрежнему “старая добрая ЭВМ”, т.е. устройство для обработки числовой информации1 . Примечание. Здесь было бы очень уместно привести некоторые примеры методов дискретного кодирования данных: текстов, графики, звука. Для экономии мы не будем этого делать, лишь сошлемся на билеты № 19–21, где данные вопросы будут обсуждаться подробно. Тем, кто планирует свой будущий ответ на экзамене, советуем продумать примеры, которыми вы дополните свой рассказ. Таким образом, проблема кодирования информации для компьютера естественным образом распадается на две составляющие: кодирование чисел и способ кодирования, который сводит информацию данного вида к числам. Согласно вопросу, мы здесь рассмотрим подробнее только первое направление. Теоретической основой кодирования чисел является подробным образом развитая в математике теория систем счисления. Система счисления — это способ записи чисел с помощью фиксированного числа знаков. Последние имеют общепринятое название — цифры. Системы счисления весьма разнообразны. Прежде всего они делятся на позиционные и непозиционные. Позиционной называется система счисления, в которой количественный эквивалент цифры зависит от ее положения в записи числа; в противном случае система является непозиционной. Большинство используемых на практике систем позиционно, поскольку именно для них обеспечивается наиболее простая арифметика. В частности, используемая в быту система представления чисел позиционная (сравните значение цифры 2 в записи чисел 132 и 123!). Что же касается непозиционных систем, то сюда относятся хорошо известный римский способ записи чисел, а также унарная система, с которой вы, вероятно, встречались в первом классе (вспомните счетные палочки!). В основе большинства систем счисления лежит принцип разложения по степеням некоторого целого числа2 , которое называется основанием системы счисления. Для используемой в быту системы основанием служит число 10 и его степени (сотни, тысячи и т.д.); математики называют ее десятичной, или системой счисления с основанием 10. Попутно заметим, что для построенных рассматриваемым традиционным способом систем счисления основание равняется количеству различных цифр, требуемых для изображения произвольных чисел. Важно понимать, что десятичная система счисления лишь одна из возможных и не имеет никаких принципиальных преимуществ перед системами с другими основаниями 3 . Например, двенадцатеричная денежная система значительно удобнее десятичной: английский шиллинг удается поровну разделить между двумя, тремя, четырьмя, шестью и двенадцатью людьми, тогда как 10 рублей справедливо распределяется только на двоих, пятерых или десятерых. Для производства электронной вычислительной техники значительное удобство представляет двоичная система. Для инженеров существенно проще создать электронные элементы с двумя устойчивыми состояниями, соответствующими базовым цифрам системы 0 и 1. Кроме того, все арифметические и логические (булевские) операции наиболее просто реализовываются именно на двоичной основе, а их теория разработана в мельчайших деталях. Заметим, что на преимущества двоичной системы при разработке ЭВМ Джон фон Нейман указывал в своей классической работе еще в 1946 году. Кроме перечисленных достоинств, двоичная система имеет, конечно, и недостатки, среди которых в первую очередь необходимо назвать необходимость перевода данных из “человеческой” (десятичной) системы счисления в “машинную” (двоичную) и обратно, а также громоздкость записи двоичных чисел. Рассмотрим названные проблемы подробнее. Поскольку с математической точки зрения системы счисления с любыми основаниями равноправны, существует единый алгоритм перевода чисел из одной системы счисления в другую. Он заключается в последовательном делении рассматриваемого числа на основание системы счисления. К сожалению, алгоритм требует проведения арифметических действий в той системе счисления, в которой представлено исходное число, поэтому удобен лишь для перевода из десятичной системы в произвольную, но не наоборот. Частным случаем указанного выше способа является перевод из десятичной системы счисления в двоичную, который нужен, чтобы узнать представление в компьютере произвольного десятичного числа. Опуская подробности4 , напомним, как выглядит процесс перевода числа 2010 в двоичный код: Остается “собрать” итоговое двоичное число из остатков от деления, не забывая при этом, что старшие разряды получаются всегда позднее, чем младшие. В итоге получим: (20)10 = (10100)2. Что касается обратного перевода из двоичной системы в десятичную, то универсальный алгоритм деления на основание системы здесь также возможен, но, как уже говорилось, его непосредственная арифметическая реализация неудобна. Поэтому на практике используется иной алгоритм, базирующийся на другом универсальном свойстве, о котором уже упоминалось в связи с определением основания системы счисления. Речь идет о том, что запись произвольного числа в любой системе счисления суть его разложение по степеням основания. Для интересующего нас сейчас случая двоичной системы вычисления будут выглядеть, например, так: (10100)2 = 1 x 24 + 0 x 23 + 1 x 22 + 0 x 21 + 0 x 20 = = 16 + 4 = (20)10. Подчеркнем, что в приведенных выше примерах рассматривалась связь десятичной системы именно с двоичной только потому, что последняя применяется в компьютерах5 . С математической точки зрения вместо двоичной можно взять систему с любым другим основанием. Обратимся теперь к проблеме громоздкости двоичного кода. Если посмотреть на двоичное число, представляющее собой представление некоторого десятичного с весьма умеренным числом цифр (например, трех- или четырехзначного числа), то обнаружится, что выглядит это чрезмерно длинно. Более того, длинная “однообразная” цепочка из нулей и единиц очень плохо воспринимается глазами. Чтобы облегчить ситуацию, для более компактной записи используется восьмеричная или шестнадцатеричная система счисления. Особенностью данных оснований является тот факт, что и 8, и 16 есть степени двойки, а значит, перевод между ними и двоичной системой максимально прост. Учитывая, что 8 = 23, а 16 = 24, получаем, что каждая восьмеричная цифра объединяет ровно 3 двоичных разряда, а шестнадцатеричная — 4. Отсюда немедленно следует алгоритм перевода из двоичной системы в восьмеричную (шестнадцатеричную): ··сгруппировать двоичные разряды справа налево по три (четыре); если в старшей (т.е. самой левой) группе битов не хватает, их можно дополнить слева незначащими нулями; ··заменить каждую из полученных групп соответствующей ей восьмеричной (шестнадцатеричной) цифрой. Например: 110102 = 0001 1010 = 1A16. Обратный переход еще проще: достаточно каждую восьмеричную (шестнадцатеричную) цифру заменить ее двоичным представлением, дополняя его при необходимости до трех (четырех) двоичных цифр нулями слева. Для облегчения процессов перевода удобно составить таблицу соответствия между восьмеричными или шестнадцатеричными цифрами и их двоичными кодами. Остается обсудить вопросы, связанные с двоичной арифметикой. Отметим, что арифметические действия в системах счисления с любыми основаниями производятся по одинаковым правилам. Единственное отличие состоит в том значении, при превышении которого возникает перенос в следующий разряд. В общепринятой десятичной системе “критическое” значение равно 10 (вспомните: “8 + 7 = 15, 5 пишем, 1 в уме”). В двоичной системе, где нет никаких цифр, кроме 0 и 1, перенос наступает, когда в разряде получается результат, равный 2 (или больше). Нетрудно сообразить, что минимальное значение, при котором возникает перенос, равно количеству цифр и, следовательно, основанию системы счисления. В свете последнего вывода можно сформулировать правила арифметических операций, которые не зависят от применяемой системы счисления. Покажем, как это сделать на примере сложения. Сложение двух чисел в системе счисления с основанием N осуществляется поразрядно от младших разрядов к старшим (“справа налево”, если смотреть на запись числа). Когда сумма данного разряда S не превышает значения N, результат сложения является окончательным. Если же S N, то происходит перенос в старший (“более левый”) разряд, причем каждая единица переноса уменьшает значение S на величину N. Можно сформулировать аналогичные правила и для остальных арифметических операций. После этого достаточно положить N = 2, и мы получим правила арифметики для двоичной системы. или в десятичной системе 6 + 10 = 16 Для выполнения арифметических операций (сложение, вычитание, умножение, деление) в системе счисления с основанием P необходимо иметь соответствующие таблицы сложения и умножения. Для P = 2 таблицы представлены ниже. Литература 1. Андреева Е.В., Фалина И.Н. Информатика: Системы счисления и компьютерная арифметика. М.: Лаборатория Базовых Знаний, 1999, 256 с. 2. Андреева Е.В., Усатюк В.В., Фалина И.Н. Представление информации в компьютере. Информатика, 2005, № 13, с. 1–48. 3. Андреева Е.В., Босова Л.Л., Фалина И.Н. Математические основы информатики. М.: БИНОМ. Лаборатория Знаний, 2005, 328 с. 4. Гейн А.Г. Четыре года спустя, или Стандарт по информатике: и в нем нам хочется дойти до самой сути. Информатика, 2005, № 5, с. 3–11. 5. Еремин Е.А. Популярные лекции об устройстве компьютера. СПб.: BHV-Петербург, 2003, 272 с. (см. п. 2.5.5). 6. Еремин Е.А. Непрерывная и дискретная информация. Информатика, 2004, № 42, с. 16– 17. 7. Еремин Е.А. У компьютера своя информатика. Информатика, 2006, № 9, с. 37–40; № 10, с. 38. 8. Еремин Е.А., Шестаков А.П. Материалы для подготовки к устной итоговой аттестации по информатике в 11-м классе. Информатика № 9, 2003, с. 6–9. 9. Информационная культура: Кодирование информации. Информационные модели. М.: Дрофа, 2000, 208 с. 10. Стариченко Б.Е. Теоретические основы информатики. М.: Горячая линия — Телеком, 2003, 312 с. 11. Толстых Г.Д. Числа в математике, физике и информатике. Информатика и образование, 1997, № 8, с. 36–40. 12. Толстых Г.Д. Представление чисел: от абака до компьютера. Информатика и образование, 1998, № 1, с. 43–47. 13. Фомин С.В. Системы счисления (Популярные лекции по математике, вып. 40). М.: Наука, 1980, 48 с. Для тех, кто не силен в английском языке, напоминаем, что computer и переводится как “вычислитель”. 1 Строго говоря, это не единственно возможный способ, но для экзаменационных целей его явно хватит; заинтересованные читатели могут обратиться к указанным в списке литературы книгам. 2 Кроме, разумеется, удобства счета на пальцах, но, по-видимому, современному образованному человеку это не требуется. 3 Вопрос этот настолько “затаскан”, что авторы не считают вправе тратить место на газетной странице, в 1001-й (в десятичной системе!) раз излагая то, что есть в любом учебнике. 4 На самом деле применение алгоритмов перевода при практической реализации в компьютере обнаруживает целый ряд неожиданных особенностей; интересующихся читателей адресуем к статье одного из авторов, опубликованной в газете в этом году в номерах 9 и 10. 5 2. В векторном графическом редакторе построить чертеж, иллюстрирующий условие планиметрической задачи. Среди векторных графических редакторов наиболее популярным является Corel Draw, поэтому велика вероятность выбора в качестве инструмента решения задачи именно этого редактора. Поскольку технология создания рисунка в векторном редакторе обсуждается в одном из билетов (см. билет № 19), не будем здесь на этом останавливаться. Приведем лишь несколько примеров математических задач, которые можно использовать при формулировании данного задания. Варианты заданий В векторном графическом редакторе построить чертеж, иллюстрирующий условие следующей планиметрической задачи. 1. Точка на гипотенузе, равноудаленная от обоих катетов, делит гипотенузу на отрезки длиной 30 и 40 см. Найдите катеты треугольника. 2. К окружности, вписанной в равнобедренный треугольник с основанием 12 см и высотой 8 см, проведена касательная, параллельная основанию. Найти длину отрезка этой касательной, заключенного между сторонами треугольника. 3. В равнобедренную трапецию вписан круг. Одна из боковых сторон делится точкой касания на отрезки длиной m и n. Определить площадь трапеции. 4. Три окружности разных радиусов попарно касаются друг друга. Прямые, соединяющие их центры, образуют прямоугольный треугольник. Найти радиус меньшей окружности, если радиусы большей и средней окружностей равны 6 и 4 см. 5. Каждая из трех равных окружностей радиуса r касается двух других. Найти площадь треугольника, образованного общими внешними касательными к этим окружностям. 3. Построить логическую схему для заданной таблицы истинности (таблица задана для трех переменных). Построить логическую схему для заданной таблицы истинности: Для решения задачи необходимо записать логический многочлен (конъюнктивный или дизъюнктивный), имеющий в качестве своей таблицы истинности заданную, а затем построить соответствующую ему логическую схему. Чаще всего полученный многочлен предварительно упрощают с целью минимизации количества используемых логических элементов. Очевидно, что поскольку предполагаются лишь эквивалентные преобразования, то результирующая схема будет эквивалентна той, которая была бы построена по исходному логическому выражению и, таким образом, будет соответствовать условию задачи. Анализируя таблицу истинности, замечаем, что количество нулей и единиц в результате (значения переменной F) одинаково, поэтому выбор конкретного способа построения может быть любым. Выберем дизъюнктивный многочлен. Получаем (для сокращения записи знак конъюнкции пропущен, отрицание переменной обозначено горизонтальной черточкой сверху): При преобразовании выражения использовались законы логики (см. билет № 8). Построим соответствующую логическую схему: Варианты заданий Построить логическую схему для заданной таблицы истинности: Билет № 3 1. Подходы к измерению информации. Преимущества и недостатки вероятностного и алфавитного подходов к измерению информации. Единицы измерения информации. Скорость передачи информации. Пропускная способность канала связи Информация является важнейшим понятием и основным объектом изучения в информатике (см. билет № 1). Неудивительно поэтому, что проблема измерения информации имеет фундаментальное значение1. На бытовом уровне информация является синонимом слов сведения, знания, данные, новость, известие, сообщение и аналогичным им. При этом неявно подразумевается, что тот, кто получает информацию, выделяет из нее некоторый смысл (содержание). Смысловая составляющая информации во многом индивидуальна. Большинство россиян не способны извлечь никакой информации из текста на японском языке. Многие взрослые, взяв учебник для начальных классов, также не сочтут его заслуживающей своего внимания информацией, хотя, в отличие от предыдущего случая, понимают (слишком хорошо!), что там написано. Химика редко интересуют сообщения об археологических открытиях, а большая часть литераторов активно игнорирует любые сведения из области математики. Наконец, многие образованные люди не верят в статьи, опубликованные в бульварной прессе, заранее считая их недостоверными. Таким образом, информативность любых сведений и сообщений существенно зависит от воспринимающего их человека, его предыдущих знаний, опыта, интересов, отношения к источнику информации и множества других факторов личного характера, т.е. по своей сути является субъективной. Дополнительное пояснение. Во всех наиболее распространенных школьных учебниках подобными описаниями и несколькими несвязанными примерами неинформативных сообщений дело и ограничивается. Но на самом деле вопрос о соотношении между информативностью и предыдущими знаниями человека имеет самостоятельное значение. Например, в недавно вышедших учебниках [1, 2] приведен следующий весьма наглядный и любопытный качественный график зависимости воспринимаемой пользователем информации I от предварительно известных ему сведений S (для обозначения совокупности сведений, которыми располагает пользователь или любая другая система, принят специальный научный термин — тезаурус). Из графика отчетливо видно, что воспринимаемая из фиксированного сообщения информация зависит от познаний пользователя неоднозначно. При малых S (тезаурус мал, пользователь неквалифицирован) воспринимаемая информация близка к нулю — человек ее просто не понимает. По мере роста S ситуация улучшается, и количество воспринятой из данного сообщения информации растет (невежественный пользователь быстро прогрессирует). Но лишь до определенного предела, а затем величина I начинает постепенно уменьшаться. Здесь вступает в действие другой фактор: при больших S (большой объем знаний, мы имеем дело с образованным пользователем) многие сообщения не могут добавить к тезаурусу ничего нового и их информативность вновь устремляется к нулю. Выражаясь житейским языком, когда человек много знает, его ничем не удивишь. Таким образом, график количества воспринимаемой информации имеет максимум (на рисунке он обозначен Sопт), соответствующий вполне определенному соотношению между содержащейся в сообщении информацией и уже имеющимися у субъекта знаниями2. Если задуматься над сутью рассмотренного графика, то можно получить целый ряд практически интересных выводов. Например, что передаваемая информация должна определенным образом соотноситься с уже имеющимися в ее приемнике сведениями, иначе данные могут оказаться бесполезными и только напрасно будут загружать каналы связи и узлы обработки. Между прочим, учащиеся после этих рассуждений должны проникнуться еще большим уважением к учителю, который постоянно вынужден “подстраивать” степень информативности своего рассказа, интуитивно оценивая разнообразные объемы тезаурусов сидящих в классе учеников, причем с учетом возможности их интеллектуального роста по мере освоения материала. Несколько иная трактовка измерения смысла сообщений по способу А.Н. Колмогорова весьма просто и интересно обсуждается в школьном учебнике [3]. Таким образом, субъективный характер восприятия информации делает однозначное измерение количества информации весьма затруднительным. Заметим, что современным компьютерам смысл обрабатываемых данных вообще принципиально недоступен, что делает еще более призрачной надежду на решение проблемы автоматического измерения “количества” содержания, которое в этих данных заключено. Как же все-таки измерить информацию? Общепринятым на данный момент решением проблемы является измерение объема информации при полном игнорировании ее смысла. Такой подход, несмотря на кажущуюся бессмысленность, оказывается необычайно полезным и широко применяется на практике. Действительно, в целом ряде важных практических задач смысл информации и даже ее вид (числа, текст, видео) несущественен. Например, при передаче информации по каналам связи, при распределении объемов ОЗУ для хранения различных типов данных, при записи информации на внешние носители, при архивации и многих других компьютерных применениях содержание передаваемой и обрабатываемой информации особого значения не имеет. Нечто похожее наблюдается и в “некомпьютерных” областях. Так, книги хранятся и ищутся не по содержанию, а по другим, часто весьма формальным признакам; в библиотеке нашего университета, в частности, книги расставлены на стеллажах в том числе с учетом размера обложки, который явно слабо связан с содержанием книги. Аналогично почтальону должно быть все равно, что именно находится внутри доставляемого им конверта, а диктор телевидения не может пропускать отдельные новости или их фрагменты в соответствии со своими личными убеждениями. Примечание. Подобно тому, как в физике при полном игнорировании трения можно установить фундаментальные законы движения, можно надеяться, что изучение “информации без смысла” позволит понять наиболее важные закономерности протекания информационных процессов. На этих и многочисленных подобных примерах мы видим, что информация перестает зависеть от человека при абстрагировании от ее смысла. Следовательно, появляется возможность объективного измерения количества информации. При этом используется два подхода: вероятностный или алфавитный. Вероятностный подход к измерению информации Любая информация может рассматриваться как уменьшение неопределенности наших знаний об окружающем мире (в теории информации принято говорить именно об уменьшении неопределенности, а не об увеличении объема знаний). Математически это высказывание эквивалентно простой формуле I = H1 – H2 где I — это количество информации, а H1 и H2 — начальная и конечная неопределенность соответственно (очевидно, что H1 l H2). Величину H, которая описывает степень неопределенности, в литературе принято называть энтропиRей. Важным частным случаем является ситуация, когда некоторое событие с несколькими возможными исходами уже произошло, а, значит, неопределенность его результата исчезла. Тогда H2 = 0 и формула для информации упрощается: I=H Таким образом, энтропия опыта равна той информации, которую мы получаем в результате его осуществления. И наоборот: информация, получаемая из опыта, может быть вычислена через его энтропию. Очевидно, что единицы измерения информации и энтропии совпадают. Вычисление энтропии при вероятностном подходе базируется на рассмотрении данных о результате некоторого случайного события, т.е. события, которое может иметь несколько исходов. Случайность события заключается в том, что реализация того или иного исхода имеет некоторую степень неопределенности. Пусть, например, абсолютно незнакомый нам ученик сдает экзамен, результатом которого может служить получение оценок 2, 3, 4 или 5. Поскольку мы ничего не знаем о данном ученике, то степень неопределенности всех перечисленных результатов сдачи экзамена совершенно одинакова. Напротив, если нам известно, как он учится, то уверенность в некоторых исходах будет больше, чем в других: так, отличник скорее всего сдаст экзамен на пятерку, а получение двойки для него — это нечто почти невероятное. Наиболее просто определить количество информации в случае, когда все исходы события могут реализоваться с равной долей вероятности. В этом случае для вычисления информации используется формула Хартли. В более сложной ситуации, когда исходы события ожидаются с разной степенью уверенности, требуются более сложные вычисления по формуле Шеннона, которую обычно выносят за рамки школьного курса информатики. Очевидно, что формула Хартли является некоторым частным случаем более общей формулы Шеннона. Формула Хартли была предложена в 1928 году американским инженером Р.Хартли. Она связывает количество равновероятных состояний N с количеством информации I в сообщении о том, что любое из этих состояний реализовалось. Наиболее простая форма для данной формулы записывается следующим образом: 2I = N Причем обычно значение N известно, а I приходится подбирать, что не совсем удобно. Поэтому те, кто знает математику получше, предпочитают преобразовать данную формулу так, чтобы сразу выразить искомую величину I в явном виде: I = log2 N Важный частный случай получается из приведенной формулы при N = 2, когда результатом вычисления является единичное значение. Единица информации носит название бит (от англ. BInary digiT — двоичная цифра); таким образом, 1 бит — это информация о результате опыта с двумя равновероятными исходами. Чем больше возможных исходов, тем больше информации в сообщении о реализации одного из них. Пример 1. Из колоды выбрали 16 карт (все “картинки” и тузы) и положили на стол рисунком вниз. Верхнюю карту перевернули (см. рисунок). Сколько информации будет заключено в сообщении о том, какая именно карта оказалась сверху? Все карты одинаковы, поэтому любая из них могла быть перевернута с одинаковой вероятностью. В таких условиях применима формула Хартли. Событие, заключающееся в открытии верхней карты, для нашего случая могло иметь 16 возможных исходов. Следовательно, информация о реализации одного из них равняется I = log2 16 = 4 бита Примечание. Если вы не любите логарифмы, можно записать формулу Хартли в виде 2I = 16 и получить ответ, подбирая такое I, которое ей удовлетворяет. Пример 2. Решите предыдущую задачу для случая, когда сообщение об исходе случайного события было следующим: “верхняя перевернутая карта оказалась черной дамой”. Отличие данной задачи от предыдущей заключается в том, что в результате сообщения об исходе случайного события не наступает полной определенности: выбранная карта может иметь одну из двух черных мастей. В этом случае, прежде чем воспользоваться формулой Хартли, необходимо вспомнить, что информация есть уменьшение неопределенности знаний: I = H1 – H2 До переворота карты неопределенность (энтропия) составляла H1 = log2 N1 после него — H2 = log2 N2 (причем для нашей задачи N1 = 16, а N2 = 2). В итоге информация вычисляется следующим образом: I = H1 – H2 = log2 N1 – log2 N2 = log2 N1/N2 = log2 16/2 = 3 бита Заметим, что в случае, когда нам называют карту точно (см. предыдущий пример), неопределенность результата исчезает, N2 = 1, и мы получаем “традиционную” формулу Хартли. И еще одно полезное наблюдение. Полная информация о результате рассматриваемого опыта составляет 4 бита (см. пример 1). В данном же случае мы получили 3 бита информации, а оставшийся четвертый описывает сохранившуюся неопределенность выбора между двумя дамами черной масти. Алфавитный (объемный) подход к измерению информации Помимо описанного выше вероятностного подхода к измерению информации, состоящего в подсчете неопределенности исходов того или иного события, существует и другой. Его часто называют объемным, и он заключается в определении количества информации в каждом из знаков дискретного сообщения с последующим подсчетом количества этих знаков в сообщении. Пусть сообщение кодируется с помощью некоторого набора знаков. Заметим, что если для данного набора установлен порядок следования знаков, то он называется алфавитом. Наиболее сложной частью работы при объемном измерении информации является определение количества информации, содержащейся в каждом отдельном символе: остальная часть процедуры весьма проста. Для определения информации в одном символе алфавита можно также использовать вероятностные методы, поскольку появление конкретного знака в конкретном месте текста есть явление случайное. Самый простой метод подсчета заключается в следующем. Пусть алфавит, с помощью которого записываются все сообщения, состоит из M символов. Для простоты предположим, что все они появляются в тексте с одинаковой вероятностью (конечно, это грубая модель3, но зато очень простая). Тогда в рассматриваемой постановке применима формула Хартли для вычисления информации об одном из исходов события (о появлении любого символа алфавита): I = log2 M Поскольку все символы “равноправны”, естественно, что объем информации в каждом из них одинаков. Следовательно, остается полученное значение I умножить на количество символов в сообщении, и мы получим общий объем информации в нем. Напомним читателям, что осмысленность сообщения в описанной процедуре нигде не требуется, напротив, именно при отсутствии смысла предположение о равновероятном появлении всех символов выполняется лучше всего! Примечание. Стоит знать, что описанный простой способ кодирования, когда коды всех символов имеют одинаковую длину, не является единственным. Часто при передаче или архивации информации по соображениям экономичности тем символам, которые встречаются чаще, ставятся в соответствие более короткие коды и наоборот. Мы здесь не будем рассматривать этот весьма интересный и практически важный вопрос. Желающие могут обратиться, например, к известному школьному учебнику информатики [4] (начиная со второго издания) или к более глубокому, но тоже достаточно понятному [5]. Можно показать, что при любом варианте кодирования (чем экономичнее способ кодирования, тем меньше разница между этими величинами — см. пример 4, приведенный ниже). Пример 3. Определить информацию, которую несет в себе 1-й символ в кодировках ASCII и Unicode. В алфавите ASCII предусмотрено 256 различных символов, т.е. M = 256, а I = log2 256 = 8 бит = 1 байт В современной кодировке Unicode заложено гораздо большее количество символов. В ней определено 256 алфавитных страниц по 256 символов в каждой. Предполагая для простоты, что все символы используются, получим, что I = log2 (256 * 256) = 8 + 8 = 16 бит = 2 байта Пример 4. Текст, сохраненный в коде ASCII, состоит исключительно из арифметических примеров, которые записаны с помощью 10 цифр от 0 до 9, 4 знаков арифметических операций, знака равенства и некоторого служебного кода, разделяющего примеры между собой. Сравните количество информации, которое несет один символ такого текста, применяя вероятностный и алфавитный подходы. Легко подсчитать, что всего рассматриваемый в задаче текст состоит из N = 16 различных символов. Следовательно, по формуле Хартли Iвероятностная = log2 16 = 4 бита В то же время, согласно вычислениям примера 3, для символа ASCII Iалфавитная = 8 бит Двукратный избыток при кодировании символов связан с тем, что далеко не все коды ASCII оказываются в нашем тексте востребованными. В то же время несложно построить вариант специализированной 4-битной кодировки для конкретной задачи4, для которого Iвероятностная и Iалфавитная окажутся равными. В порядке подведения итогов сравним вероятностный и алфавитный подходы, как того требует вопрос билета. Первый подход позволяет вычислить предельное (минимально возможное) теоретическое значение количества информации, которое несет сообщение о данном исходе события. Второй — каково количество информации на практике с учетом конкретной выбранной кодировки. Очевидно, что первая величина есть однозначная характеристика рассматриваемого события, тогда как вторая зависит еще и от способа кодирования: в “идеальном” случае обе величины совпадают, однако на практике используемый метод кодирования может иметь ту или иную степень избыточности. С рассмотренной точки зрения вероятностный подход имеет преимущество. Но, с другой стороны, алфавитный способ заметно проще и с некоторых позиций (например, для подсчета требуемого количества памяти) полезнее. Примечание. В учебниках информатики обычно ограничиваются описанием обоих подходов и не производится их сравнение. Приведенное выше сопоставление авторы провели исходя из собственных представлений. Возможно, составители билетов имели в виду какие-либо еще преимущества и недостатки. Вопрос о единицах измерения информации уже возникал при обсуждении вероятностного и алфавитного подходов. В самом деле, трудно изложить способ измерения величины, не упоминая при этом о единицах ее измерения. Поэтому мы уже сформулировали выше, что с теоретической точки зрения 1 бит — это информация, которая сокращает неопределенность наших знаний вдвое (ответ на вопрос типа “да”/“нет”, наличие или отсутствие какого-либо свойства, четность числа и т.д.). С точки зрения практической реализации компьютерных устройств для обработки информации 1 бит — это отдельный двоичный разряд любого из таких устройств. Иначе говоря, в вычислительной технике бит служит конструктивной базой для построения всех цифровых двоичных устройств: регистров, сумматоров и т.п. Отсюда очевидно, что в теории информации количество бит может быть любым, в том числе дробным, в то время как в реальных устройствах оно обязательно целое. Бит, будучи минимально возможной порцией информации в компьютере, довольно маленькая единица измерения. Поэтому на практике чаще всего используется другая единица, которая называется 1 байт = 8 бит. С точки зрения устройства компьютера байт замечателен тем, что является минимальной адресуемой информацией в компьютере, иначе говоря, считать из памяти часть байта невозможно. В современных компьютерах все устройства памяти имеют байтовую структуру, а внешние устройства также обмениваются информацией байтами или кратными ему порциями. Как следствие все типы данных (числа, символы и др.) представляются в компьютере величинами, кратными байту. Примечание. Даже логические переменные, для каждой из которых, казалось бы, достаточно 1 бита, обычно занимают в оперативной памяти полный байт (или иногда ради единообразия даже несколько байт, например, LongBool в Паскале). С целью получения шкалы для измерения объемов информации в широких пределах от байта с помощью стандартных приставок образуется целая система более крупных производных единиц: 1 килобайт = 1024 байта 1 мегабайт = 1024 килобайта 1 гигабайт = 1024 мегабайта и т.д. В отличие от общепринятой системы производных единиц (широко используемой, например, в физике) при пересчете применяется множитель 1024, а не 1000. Причина заключается в двоичном характере представления информации в компьютере: 1024 = 210, и, следовательно, лучше подходит к измерению двоичной информации. Научившись измерять количество информации, можно ставить вопрос, как быстро она передается. Величину, которая равна количеству информации, передаваемому за единицу времени, принято называть скоростью передачи информации. Очевидно, что если за время t по каналу связи передано количество информации I, то скорость передачи вычисляется как отношение I / t. Примечание. При практической работе с величиной скорости передачи информации следует очень внимательно относиться к тому, что именно понимается под передаваемой информацией I. В частности, в процессе передачи к собственно пользовательской информации может добавляться значительное количество служебных, вспомогательных данных: например, согласно сетевому протоколу UDP (User Datagram Protocol), который является некоторой разновидностью известного протокола TCP (Transmission Control Protocol), из 146 байт стандартного Ethernet-кадра 46 являются служебными [6]. Кроме того, непосредственно перед передачей данные могут сжиматься или шифроваться, что также повлияет на время их передачи. Скорость передачи данных нельзя сделать сколь угодно большой; ее предельная максимальная величина имеет специальное название — пропускная способность канала связи. Данная характеристика определяется устройством канала и, что не так очевидно, способом передачи сигналов по нему. Иными словами, для разных способов представления данных одна и та же линия связи может иметь разную пропускную способность. К.Шеннон в созданной им теории информации доказал, что достигнуть при передаче пропускной способности линии можно всегда и путем к этому является повышение эффективности кодирования. Более того, даже при наличии в канале шумов любого уровня всегда можно закодировать сообщение таким образом, чтобы не происходило потери информации [1, 5]. Обе величины — скорость передачи и пропускная способность — по определению измеряются в одних и тех же единицах, являющихся отношением единиц информации и времени: бит/с, байт/с, Кб/с и т.д. Дополнительное пояснение. Кроме того, существует еще одна родственная единица измерения параметров передачи — бод. Количество бод есть количество изменений информационного параметра в секунду. Скорость передачи в битах в секунду в общем случае не совпадает с количеством бод. В [1] приводится очень наглядный пример, когда скорость в бит/с втрое выше, чем число бод. “Если информационными параметрами являются фаза и амплитуда синусоиды, причем различают 4 состояния фазы (0, 90, 180 и 270) и два значения амплитуды, то информационный сигнал имеет восемь различимых состояний. В этом случае модем, работающий со скоростью 2400 бод (с тактовой частотой 2400 Гц), передает информацию со скоростью 7200 бит/с, так как при одном изменении сигнала передается три бита информации”. Возможно, кстати, и обратное соотношение между величинами в бит/с и бод; в частном случае они могут совпадать. В качестве примера типичных значений скоростей передачи данных в современных компьютерах ниже приводятся табл. 1 и 2, составленные на основе сведений из известной книги [7]. Таблица 1. Характеристики устройств внешней памяти Таблица 2. Характеристики шин расширения Примечание. Хотя проблема пропускной способности каналов связи весьма подробно излагается в специальной литературе, в доступных для учителей и школьников источниках она рассматривается не всегда, а если и рассматривается, то весьма поверхностно. Поэтому на экзамене, по мнению авторов, надо требовать от учеников знания только самых минимальных сведений. Расширенный материал в нашей публикации приведен исключительно для того, чтобы дать некоторую общую ориентировку учителям. Нам кажется, что это один из примеров, когда, прежде чем требовать знания вопроса от учащихся, стоит описать его на нужном уровне в школьных учебниках. Литература 1. Акулов О.А., Медведев Н.В. Информатика: базовый курс. М.: Омега-Л, 2005, 552 с. 2. Бройдо Э.А., Ильина О.П. Архитектура ЭВМ и систем. СПб.: Питер, 2006, 718 с. 3. Информационная культура: Кодирование информации, информационные модели. 9–10е классы. М.: Дрофа, 2000, 208 с. 4. Семакин И.Г. Информатика. Базовый курс. 7–9-е классы / И.Г. Семакин, Л.А. Залогова, С.В. Русаков, Л.В. Шестакова. 2-е изд. М.: БИНОМ, 2004, 390 с. 5. Стариченко Б.Е. Теоретические основы информатики. М.: Горячая линия — Телеком, 2003, 312 с. 6. Никифоров С.В. Введение в сетевые технологии. М.: Финансы и статистика, 2003, 224 с. 7. Аппаратные средства IBM PC. Энциклопедия. / М.Гук. СПб.: Питер, 2003, 923 с. 2. С использованием электронной таблицы произвести обработку данных с помощью статистических функций Даны сведения об учащихся класса, включающие средний балл за четверть, возраст (год рождения) и пол. Определить средний балл мальчиков, долю отличниц среди девочек и разницу среднего балла учащихся разного возраста. Решение Заполним таблицу исходными данными и проведем необходимые расчеты. В таблицу будем заносить данные из школьного журнала. В таблице используются дополнительные колонки, которые необходимы для ответа на вопросы, поставленные в задаче (текст в них записан синим цветом), — возраст ученика и является ли учащийся отличником и девочкой одновременно. Для расчета возраста использована следующая формула (на примере ячейки G4): =ЦЕЛОЕ((СЕГОДНЯ()-E4)/365,25) Прокомментируем ее. Из сегодняшней даты вычитается дата рождения ученика. Таким образом, получаем полное число дней, прошедших с рождения ученика. Разделив это количество на 365,25 (реальное количество дней в году, 0,25 дня для обычного года компенсируется високосным годом), получаем полное количество лет ученика; наконец, выделив целую часть, — возраст ученика. Является ли девочка отличницей, определяется формулой (на примере ячейки H4): =ЕСЛИ(И(D4=5;F4="ж");1;0) Приступим к основным расчетам. Прежде всего требуется определить средний балл мальчиков. Согласно определению, необходимо разделить суммарный балл мальчиков на их количество. Для этих целей можно воспользоваться соответствующими функциями табличного процессора. =СУММЕСЛИ(F4:F15;"м";D4:D15)/СЧЁТЕСЛИ(F4:F15;"м") Функция СУММЕСЛИ позволяет просуммировать значения только в тех ячейках диапазона, которые отвечают заданному критерию (в нашем случае ребенок является мальчиком). Функция СЧЁТЕСЛИ подсчитывает количество значений, удовлетворяющих заданному критерию. Таким образом и получаем требуемое. Для подсчета доли отличниц среди всех девочек отнесем количество девочек-отличниц к общему количеству девочек (здесь и воспользуемся набором значений из одной из вспомогательных колонок): =СУММ(H4:H15)/СЧЁТЕСЛИ(F4:F15;"ж") Наконец, определим отличие средних баллов разновозрастных детей (воспользуемся в расчетах вспомогательной колонкой Возраст): =ABS(СУММЕСЛИ(G4:G15;15;D4:D15)/СЧЁТЕСЛИ(G4:G15;15)СУММЕСЛИ(G4:G15;16;D4:D15)/СЧЁТЕСЛИ(G4:G15;16)) Таким образом, задача полностью решена. На рисунке представлены результаты решения для заданного набора данных. Варианты заданий С использованием электронной таблицы произвести обработку данных с помощью статистических функций. 1. Даны сведения об учащихся класса, включающие оценки в течение одного месяца. Подсчитайте количество пятерок, четверок, двоек и троек, найдите средний балл каждого ученика и средний балл всей группы. Создайте диаграмму, иллюстрирующую процентное соотношение оценок в группе. 2. Четверо друзей путешествуют на трех видах транспорта: поезде, самолете и пароходе. Николай проплыл 150 км на пароходе, проехал 140 км на поезде и пролетел 1100 км на самолете. Василий проплыл на пароходе 200 км, проехал на поезде 220 км и пролетел на самолете 1160 км. Анатолий пролетел на самолете 1200 км, проехал поездом 110 км и проплыл на пароходе 125 км. Мария проехала на поезде 130 км, пролетела на самолете 1500 км и проплыла на пароходе 160 км. Построить на основе вышеперечисленных данных электронную таблицу. · Добавить к таблице столбец, в котором будет отображаться общее количество километров, которое проехал каждый из ребят. · Вычислить общее количество километров, которое ребята проехали на поезде, пролетели на самолете и проплыли на пароходе (на каждом виде транспорта по отдельности). · Вычислить суммарное количество километров всех друзей. · Определить максимальное и минимальное количество километров, пройденных друзьями по всем видам транспорта. · Определить среднее количество километров по всем видам транспорта. 3. Создайте таблицу “Озера Европы”, используя следующие данные по площади (кв. км) и наибольшей глубине (м): Ладожское 17 700 и 225; Онежское 9510 и 110; Каспийское море 371 000 и 995; Венерн 5550 и 100; Чудское с Псковским 3560 и 14; Балатон 591 и 11; Женевское 581 и 310; Веттерн 1900 и 119; Боденское 538 и 252; Меларен 1140 и 64. Определите самое большое и самое маленькое по площади озеро, самое глубокое и самое мелкое озеро. 4. Создайте таблицу “Реки Европы”, используя следующие данные длины (км) и площади бассейна (тыс. кв. км): Волга 3688 и 1350; Дунай 2850 и 817; Рейн 1330 и 224; Эльба 1150 и 148; Висла 1090 и 198; Луара 1020 и 120; Урал 2530 и 220; Дон 1870 и 422; Сена 780 и 79; Темза 340 и 15. Определите самую длинную и самую короткую реку, подсчитайте суммарную площадь бассейнов рек, среднюю протяженность рек европейской части России. 5. В банке производится учет своевременности выплат кредитов, выданных нескольким организациям. Известна сумма кредита и сумма, уже выплаченная организацией. Для должников установлены штрафные санкции: если фирма выплатила кредит более чем на 70 процентов, то штраф составит 10 процентов от суммы задолженности, в противном случае штраф составит 15 процентов. Посчитать штраф для каждой организации, средний штраф, общее количество денег, которые банк собирается получить дополнительно. Определить средний штраф бюджетных организаций. 3. Решить текстовую логическую задачу (необходимо использовать не менее четырех переменных) Решить текстовую логическую задачу: Болельщики футбольных команд делали прогнозы об итогах соревнований “Турнир четырех”: — Я уверен, что “Спартак” будет чемпионом, а “ЦСКА” займет последнее место, — сказал Иван. — Что ты, “Спартак” выше третьего не поднимется, а “ЦСКА” станет вторым, — возразил Сергей. — Чемпионом будет “Динамо”, а “ЦСКА” войдет в тройку сильнейших, — сделал свой прогноз Петр. — “Динамо” будет вторым, а вот “Ротор” точно будет последним, — промолвил Алексей. Выяснилось, что каждый из болельщиков был прав в одном прогнозе и ошибся во втором. Как распределились места, занятые командами? Решение Решим задачу путем сопоставления высказываний и опираясь на информацию о том, что одно из них истинно, другое — ложно. Анализ начнем с последнего высказывания. Предположим, что высказывание “Ротор” займет 4-е место” истинно. Тогда “Динамо” будет вторым” — ложно (т.е. “Динамо” занимает 1-е или 3-е место). Пусть истинно высказывание “Динамо” займет первое место”, тогда ложно высказывание “ЦСКА” войдет в тройку сильнейших”, т.е. “ЦСКА” занимает 4-е место, но это место у нас уже занял “Ротор”. Поэтому эта цепочка рассуждений неверна. Следовательно, истинным будет высказывание “ЦСКА” займет 2-е или 3-е место”, а ложным — “Динамо” займет 1-е место”. Для “Динамо” осталась единственная возможность — 3-е место. Тогда далее высказывание “ЦСКА” станет вторым” истинно, а “Спартак” выше третьего не поднимется” — ложно. Таким образом, для “Спартака” остается единственная возможность — 1-е место, что не противоречит высказываниям Ивана, исходя из того, что одно из них истинно, другое — ложно. Таким образом, распределение мест: “Спартак” — I, “ЦСКА” — II, “Динамо” — III, “Ротор” — IV. Если отталкиваться от посылки, что истинно высказывание “Динамо” будет вторым”, ложно “Ротор” будет четвертым”, придем к противоречию (проделать рассуждения самостоятельно”. Варианты заданий 1. Три подразделения — А, В, С — торговой фирмы стремились получить по итогам года максимальную прибыль. Экономисты высказали следующие предположения: 1) А получит максимальную прибыль только тогда, когда получат максимальную прибыль В и С, 2) Либо А и С получат максимальную прибыль одновременно, либо одновременно не получат, 3) Для того чтобы подразделение С получило максимальную прибыль, необходимо, чтобы и В получило максимальную прибыль. По завершении года оказалось, что одно из трех предположений ложно, а остальные два истинны. Какие из названных подразделений получили максимальную прибыль? 2. Задача “Валютные махинации”. В нарушении правил обмена валюты подозреваются четыре работника банка — Антипов (А), Борисов (B), Цветков (С) и Дмитриев (D). Известно: 1) если А нарушил правила обмена валюты, то и В нарушил; 2) если В нарушил, то и С нарушил или А не нарушил; 3) если D не нарушил, то А нарушил, а С не нарушил; 4) если D нарушил, то и А нарушил. Кто из подозреваемых нарушил правила обмена валюты? 3. Задача “Пятеро друзей”. Пятеро друзей решили записаться в кружок любителей логических задач: Андрей (А), Николай (N), Виктор (V), Григорий (G), Дмитрий (D). Но староста кружка поставил им ряд условий: “Вы должны приходить к нам так, чтобы: 1) если А приходит вместе с D, то N должен присутствовать обязательно; 2) если D отсутствует, то N должен быть, а V пусть не приходит; 3) А и V не могут одновременно ни присутствовать, ни отсутствовать; 4) если придет D, то G пусть не приходит; 5) если N отсутствует, то D должен присутствовать, но это в том случае, если не присутствует V; если же и V присутствует при отсутствии N, то D приходить не должен, a G должен прийти”. В каком составе друзья смогут прийти на занятия кружка? 4. Брауну, Джонсу и Смиту предъявлено обвинение в соучастии в ограблении банка. Похитители скрылись на поджидавшем их автомобиле. На следствии Браун показал, что преступники скрылись на синем “Бьюике”; Джонс сказал, что это был черный “Крайслер”, а Смит утверждал, что это был “Форд Мустанг” и ни в коем случае не синий. Стало известно, что, желая запутать следствие, каждый из них указал правильно либо только марку машины, либо только ее цвет. Какого цвета и какой марки был автомобиль? 5. Для полярной экспедиции из восьми претендентов — А, В, С, D, Е, F, G и Н — надо отобрать шестерых специалистов: биолога, гидролога, синоптика, радиста, механика и врача. Обязанности биолога могут выполнять Е и G, гидролога — В и F, синоптика — F и G, радиста — С и D, механика — С и Н, врача — А и D. Хотя некоторые претенденты владеют двумя специальностями, в экспедиции каждый сможет выполнять только одну обязанность. Кого и кем следует взять в экспедицию, если F не может ехать без В, D — без С и без Н, С не может ехать одновременно с G, а A вместе с B? Билет № 4 1. Понятие алгоритма: свойства алгоритмов, исполнители алгоритмов. Автоматическое исполнение алгоритма. Способы описания алгоритмов. Основные алгоритмические структуры и их реализация на языке программирования. Оценка эффективности алгоритмов. Алгоритм — это понятное и точное предписание исполнителю совершить последовательность действий, направленных на решение поставленной задачи или достижение указанной цели. Термин имеет интересное историческое происхождение. В IX веке великий узбекский математик аль-Хорезми разработал правила арифметических действий над десятичными числами. Совокупность этих правил в Европе стали называть “алгоризм”. Впоследствии слово трансформировалось до известного нам сейчас вида и, кроме того, расширило свое значение: алгоритмом стали называть любую последовательность действий (не только арифметических), которая приводит к решению той или иной задачи. Можно сказать, что понятие вышло за рамки математики и стало применяться в самых различных областях. Можно выделить три крупных разновидности алгоритмов: вычислительные, информационные и управляющие. Первые, как правило, работают с простыми видами данных (числа, вектора, матрицы), но зато процесс вычисления может быть длинным и сложным. Информационные алгоритмы, напротив, реализуют сравнительно небольшие процедуры обработки (например, поиск элементов, удовлетворяющих определенному признаку), но для больших объемов информации. Наконец, управляющие алгоритмы непрерывно анализируют информацию, поступающую от тех или иных источников, и выдают результирующие сигналы, управляющие работой тех или иных устройств. Для этого вида алгоритмов очень существенную роль играет их быстродействие, т.к. управляющие сигналы всегда должны появляться в нужный момент времени. Каждый алгоритм — это правила, описывающие процесс преобразования исходных данных в необходимый результат. Заметим, что данное важное свойство в некоторых книгах приводят как определение алгоритма. Для того чтобы произвольное описание последовательности действий было алгоритмом, оно должно обладать следующими свойствами. · Дискретность Процесс решения задачи должен быть разбит на последовательность отдельных шагов, каждый из которых называется командой. Примером команд могут служить пункты инструкции, нажатие на одну из кнопок пульта управления, рисование графического примитива (линии, дуги и т.п.), оператор языка программирования. Наиболее существенным здесь является тот факт, что алгоритм есть последовательность четко выделенных пунктов — такие “прерывные” объекты в науке принято называть дискретными. · Понятность Каждая команда алгоритма должна быть понятна тому, кто исполняет алгоритм; в противном случае эта команда и, следовательно, весь алгоритм в целом не могут быть выполнены. Данное требование можно сформулировать более просто и конкретно. Составим полный список команд, который умеет делать исполнитель алгоритма, и назовем его системой команд исполнителя (СКИ). Требование использовать при составлении алгоритмов только те команды, которые входят в СКИ, связано с тем, что исполнение алгоритма осуществляется формально, без возможности вникнуть в суть команд и проанализировать их. Одним из таких (вернее, основным из них) “бездушных” исполнителей является ЭВМ. Вообще ЭВМ является универсальным исполнителем алгоритмов. Это связано с тем, что любой алгоритм, составленный для ЭВМ, в конечном итоге транслируется в ее СКИ и, таким образом, становится доступным для исполнения. · Определенность (детерминированность) Команды, образующие алгоритм (или, можно сказать, входящие в СКИ), должны быть предельно четкими и однозначными. Их результат не может зависеть от какой-либо дополнительной информации извне алгоритма. Сколько бы раз вы не запускали программу, для одних и тех же исходных данных всегда будет получаться один и тот же результат. При наличии ошибок в алгоритме последнее сформулированное свойство может иногда нарушаться. Например, если не было предусмотрено присвоение переменной начального значения, то результат в некоторых случаях может зависеть от случайного состояния той или иной ячейки памяти компьютера. Но это, скорее, не опровергает, а подтверждает правило: алгоритм должен быть определенным, в противном случае это не алгоритм. Определенность также предполагает, что данные, необходимые для выполнения очередной команды алгоритма, получены на одном из предыдущих шагов алгоритма. · Результативность (конечность) Результат выполнения алгоритма должен быть обязательно получен, т.е. правильный алгоритм не может обрываться безрезультатно из-за какого-либо непреодолимого препятствия в ходе выполнения. Кроме того, любой алгоритм должен завершиться за конечное число шагов. Большинство алгоритмов данным требованиям удовлетворяют, но при наличии ошибок возможны нарушения результативности. · Корректность Любой алгоритм создан для решения той или иной задачи, поэтому нам необходима уверенность, что это решение будет правильным для любых допустимых исходных данных. Указанное свойство алгоритма принято называть его корректностью. В связи с обсуждаемым свойством большое значение имеет тщательное тестирование алгоритма перед его использованием. Как показывает опыт, грамотная и всесторонняя отладка для сложных алгоритмов часто требует значительно больших усилий, чем собственно разработка этих алгоритмов. При этом важно не столько количество проверенных сочетаний входных данных, сколько количество их типов. Например, можно сделать сколько угодно проверок для положительных значений аргумента алгоритма, но это никак не будет гарантировать корректную его работу в случае отрицательной величины аргумента. · Массовость Алгоритм имеет смысл разрабатывать только в том случае, когда он будет применяться многократно для различных наборов исходных данных. Например, если составляется алгоритм обработки текстов, то вряд ли целесообразно ограничивать его возможности только русскими буквами — стоит предусмотреть также латинский алфавит, цифры, знаки препинания и т.п. Тем более что такое обобщение особых трудностей не вызывает. Таковы основные свойства алгоритмов. Если их внимательно проанализировать, то становится очевидным, что исполнитель алгоритма не нуждается в какой-либо фантазии и сообразительности. Более того, для выполнения алгоритма совсем не требуется его понимание, а правильный результат может быть получен путем формального и чисто механического следования содержанию алгоритма. Из возможности формального исполнения алгоритма следует очень важное следствие: поскольку осознавать содержание алгоритма не требуется, его исполнение вполне можно доверить автомату или ЭВМ. Таким образом, составление алгоритма является обязательным этапом автоматизации любого процесса. Как только разработан алгоритм, машина может исполнять его лучше человека — быстрее и, что очень важно, не ошибаясь. Основными способами записи алгоритмов являются: · словесный; · словесно-формульный; · на алгоритмическом языке; · графический (блок-схема); · на языке программирования высокого уровня. Основными алгоритмическими структурами (ОАС) являются следование, развилка и цикл. В более сложных случаях используются суперпозиции (вложения) ОАС. Ниже приведены графические обозначения (обозначения на блок-схемах) ОАС. На схемах СЕРИЯ обозначает один или несколько любых операторов; ЛВ — логическое выражение (если его значение ИСТИНА, переход происходит по ветви ДА, иначе — по НЕТ). На схеме цикла с параметром использованы обозначения: ПЦ — параметр цикла, НЗ — начальное значение параметра цикла, КЗ — конечное значение параметра цикла, Ш — шаг изменения параметра цикла. Простейшие задачи имеют линейный алгоритм решения. Это означает, что такой алгоритм не содержит проверок условий и повторений, действия в нем выполняются последовательно, одно за другим, т.е. при его реализации используется структура “следование”. Чаще всего алгоритмы предполагают обработку некоторых величин. Величина — это элемент данных с точки зрения их смыслового (семантического) содержания или обработки. При разработке алгоритма данные можно разбить по смыслу на входные — аргументы, выходные — результаты, и промежуточные. Исходные (входные) — это данные, известные перед выполнением задачи, из условия. Выходные данные — результат решения задачи. Переменные, которые не являются ни аргументом, ни результатом алгоритма, а используются только для обозначения вычисляемого промежуточного значения, называются промежуточными. Чаще всего требуется указать имена и типы данных — целый, вещественный, логический и символьный, либо структурированный, базирующийся на одном из названных. Ветвления играют в алгоритмах очень большую роль, поскольку предусматривают корректную реакцию на самые разнообразные ситуации, возникающие в процессе обработки информации. Благодаря этой структуре алгоритм приобретает способность выбирать один из существующих вариантов работы, наиболее подходящий к сложившейся в данный момент ситуации. В частном случае речь может идти о выполнении или игнорировании при определенных условиях того или иного участка алгоритма. Значение ветвления в современном программном обеспечении трудно переоценить. Достаточно вспомнить стандартные элементы управления, такие, как меню, радиокнопки, флажки проверки или списки. Именно они дают возможность пользователю чувствовать себя за компьютером свободно и комфортно и выбирать те режимы работы, которые ему нужны. Приведем также полную форму ветвления в различных алгоритмических языках. QBasic IF <ЛВ> THEN операторы ELSE операторы ENDIF Pascal IF <ЛВ> THEN оператор ELSE оператор C if (<ЛВ>) оператор; else оператор; Очевидно, что запись отличается лишь незначительными второстепенными деталями. Для получения неполного ветвления ветвь “иначе” разрешается опускать. Достаточно часто при организации алгоритма решения задачи необходимо одну и ту же определенную последовательность команд выполнить несколько раз подряд. Конечно, самый простой способ — записать эти команды несколько раз друг за другом, и необходимое повторение действий будет организовано. Но как быть в тех случаях, когда количество команд, которые исполняются несколько раз, слишком велико? Или само количество повторений команд огромно? Или вообще неизвестно, а сколько же раз нужно повторить последовательность команд? Решить все эти проблемы можно, если использовать алгоритмическую структуру “цикл”. Командой повторения, или циклом, называется такая форма организации действий в алгоритме, при которой выполнение одной и той же последовательности команд повторяется до тех пор, пока истинно некоторое логическое выражение. Для организации цикла необходимо выполнять следующие действия: · перед началом цикла задать начальное значение параметров (переменных, используемых в логическом выражении, отвечающем за продолжение или завершение цикла); · внутри цикла изменять переменную (или переменные), которая сменит значение логического выражения, за счет которого продолжается цикл, на противоположное (для того чтобы цикл в определенный момент завершился); · вычислять логическое выражение — проверять условие продолжения или окончания цикла; · выполнять операторы внутри цикла; · управлять циклом, т.е. переходить к его началу, если он не закончен, или выходить из цикла в противном случае. Различают циклы с известным числом повторений (цикл с параметром) и итерационные (с пред- и постусловием). Опишем схематично, как выполняется каждый из циклов. Цикл с предусловием: а) вычисляется значение логического выражения; б) если значение логического выражения “истина”, переход к следующему пункту, иначе к п. д); в) выполняется тело цикла; г) переход к п. а); д) конец цикла. Цикл с постусловием: а) выполняется тело цикла; б) вычисляется значение логического выражения; в) если значение логического выражения “ложь”, переход к п. а), иначе к следующему пункту; г) конец цикла. Замечание. Таким образом, цикл с постусловием организован, в частности, в алгоритмических языках Pascal и QBasic. В языке C переход к повторению вычислений, как и в цикле с предусловием, осуществляется в случае истинности логического выражения. Цикл с параметром: а) вычисляются значения выражений, определяющие начальное и конечное значения параметра цикла; б) параметру цикла присваивается начальное значение; в) параметр цикла сравнивается с конечным значением; г) если параметр цикла превосходит (при положительном шаге) конечное значение параметра цикла (или, наоборот, меньше конечного значения параметра цикла при отрицательном шаге), переход к п. з), иначе к следующему пункту; д) выполняется тело цикла; е) параметр цикла автоматически увеличивается на значение шага; ж) переход к п. в); з) конец цикла. Циклы с предусловием и постусловием в большинстве случаев (за исключением отдельных реализаций алгоритмических языков) являются более универсальными по сравнению с циклом с параметром, поскольку в последнем требуется заранее указать число повторений, в то время как в первых двух это не требуется. Цикл с параметром в любом случае может быть преобразован к циклу с пред- или постусловием. Обратное верно не всегда. Замечание. В языке C цикл for на самом деле является универсальным циклом с предусловием. В частности, из него можно сделать и описанную форму цикла с параметром. Примеры использования основных алгоритмических структур и их суперпозиций для составления алгоритмов, а по ним — программ приводятся в многочисленной литературе по программированию, поэтому не будем на них здесь останавливаться. Наконец, рассмотрим вопрос анализа алгоритмов. Одну и ту же задачу могут решать много алгоритмов. Эффективность работы каждого из них описывается разнообразными характеристиками. Прежде чем анализировать эффективность алгоритма, нужно доказать, что данный алгоритм правильно решает задачу. В противном случае вопрос об эффективности не имеет смысла. Если алгоритм решает поставленную задачу, то можно посмотреть, насколько это решение эффективно. При анализе алгоритма определяется количество “времени”, необходимое для его выполнения. Это не реальное число секунд или других промежутков времени, а приблизительное число операций, выполняемых алгоритмом. Число операций и измеряет относительное время выполнения алгоритма. Таким образом, иногда “временем” называют вычислительную сложность алгоритма. Фактическое количество секунд, требуемое для выполнения алгоритма на компьютере, непригодно для анализа, т.к. обычно интересует только относительная эффективность алгоритма, решающего конкретную задачу. Действительно, время, требуемое на решение задачи, — не очень хороший способ измерять эффективность алгоритма, потому что алгоритм не становится лучше, если его перенести на более быстрый компьютер, или хуже, если его исполнять на более медленном. На самом деле фактическое количество операций алгоритма на тех или иных входных данных не представляет большого интереса и не очень много сообщает об алгоритме. Реально определяется зависимость числа операций конкретного алгоритма от размера входных данных. Можно сравнить два алгоритма по скорости роста числа операций. Именно скорость роста играет ключевую роль, поскольку при небольшом размере входных данных алгоритм А может требовать меньшего количества операций, чем алгоритм В, но при росте объема входных данных ситуация может поменяться на противоположную. Два самых больших класса алгоритмов — это алгоритмы с повторением и рекурсивные алгоритмы. В основе алгоритмов с повторением лежат циклы и условные выражения; для анализа таких алгоритмов требуется оценить число операций, выполняемых внутри цикла, и число итераций цикла. Рекурсивные алгоритмы разбивают большую задачу на фрагменты и применяются к каждому фрагменту по отдельности. Такие алгоритмы называются иногда “разделяй и властвуй”, и их использование может оказаться очень эффективным. В процессе решения большой задачи путем деления ее на меньшие создаются небольшие, простые и понятные алгоритмы. Анализ рекурсивного алгоритма требует подсчета количества операций, необходимых для разбиения задачи на части, выполнения алгоритма на каждой из частей и объединения отдельных результатов для решения задачи в целом. Объединяя эту информацию и информацию о числе частей и их размере, можно вывести рекуррентное соотношение для сложности алгоритма. Полученному рекуррентному соотношению можно придать замкнутый вид, затем сравнивать результат с другими выражениями. Приведем пример оценки сложности алгоритма. Рассмотрим известный алгоритм сортировки выбором (здесь он записан в виде функции на C++) и оценим его сложность по описанной выше методике. void v(int n, int a[1000]) { int i, j, vs, m; for (i = 0; i < n - 1; i++) { m = i; for (j = i + 1; j < n; j++) if (a[j] < a[m]) m = j; vs = a[i]; a[i] = a[m]; a[m] = vs; } } Для каждой отдельной операции введем понятие “стоимости” (т.е. времени ее выполнения), в конечном итоге оценим, как зависит “время” выполнения алгоритма от размера сортируемого массива n. Суммируем S = c1(n – 1) + c2(n – 1) + c3(n – 1) + c1(n – 1) + c1n2 + c2n2 + + c3n2 + c1n2 + c2n2 + c1(n – 1) + c1(n – 1) + c1(n – 1) = (2c1 + + 2c2 + c3)n2 + (4c1 + c2 + c3)n – (c1 + c2 + c3) Таким образом, замечаем, что наибольший вклад в количество операций при больших n вносит величина n2, т.е. сложность алгоритма пропорциональна n2. Использованные источники информации 1. Семакин И., Залогова Л., Русаков С., Шестакова Л. Информатика: учебник по базовому курсу. М.: Лаборатория Базовых Знаний, 1998. (Глава 12. Введение в программирование, с. 323–371.) 2. Угринович Н. Информатика и информационные технологии. Учебное пособие для общеобразовательных учреждений. М.: БИНОМ, 2001, 464 с. 3. Информатика. 7–8-е классы / Под ред. Н.В. Макаровой. СПб.: ПитерКом, 1999, 368 с. 4. Шафрин Ю.А. Информационные технологии. М.: Лаборатория Базовых Знаний, 1998, 704 с. (п. 1.6. Понятие об алгоритмах, п. 1.7. Понятие о программировании, с. 53–72). 5. Информатика. Задачник-практикум в 2 т. / Под ред. И.Г. Семакина, Е.К. Хеннера: Т. 1. М.: Лаборатория Базовых Знаний, 1999, 304 с. 6. Основы информатики и вычислительной техники. Пробное учебное пособие для средних учебных заведений / Под ред. А.П. Ершова, В.М. Монахова. М.: Просвещение, 1985. Ч. I, II. 7. Шауцукова Л.З. Информатика: Учебник для 10–11-х классов. М.: Просвещение, 2000 г. (Глава 7. Алгоритмы. Алгоритмизация. Алгоритмические языки.) 7. http://cjmp-science.narod.ru/didakt_i.html — дидактические и методические материалы по программированию и информатике. 8. Макконнелл Дж. Анализ алгоритмов. Вводный курс. М.: Техносфера, 2002, 304 с. 2. Средствами почтовой программы обеспечить автоматическое уведомление отправителя о получении от него письма Рассмотрим решение поставленной задачи в двух разных почтовых клиентах. Outlook Express В данной программе можно настроить получение уведомления о прочтении письма для каждого отправленного сообщения (настройка с помощью меню Сервис > Параметры > Уведомления). Если уведомление требуется не часто, то эту настройку можно не осуществлять, а запросить уведомление непосредственно при создании сообщения. Mail.ru При создании сообщения можно установить извещение о получении этого сообщения. В других почтовых клиентах и бесплатных почтовых сервисах существует аналогичная возможность. 3. Подсчитать информационный объем графического файла по размеру в пикселях с учетом палитры (заданы количество цветов в палитре и размер рисунка) и того же рисунка в графическом формате со сжатием (задан коэффициент сжатия). Задан рисунок размером 1024х768 с представлением информации в формате RGB. Определить информационный объем графического файла, хранящего такой рисунок. Вычислить объем файла в том случае, если для хранения этого же рисунка используется формат со сжатием с коэффициентом 0,2. Решение В формате RGB для представления каждого пикселя используется три байта (по одному на каждый базовый цвет). Таким образом, получаем 1024 х 768 х 3 байта = 768 х 3 Кб = 2,25 Мб При использовании формата со сжатием получаем 2,25 Мб х 0,8 = 1,8 Мб Билет № 5 1. Язык программирования. Типы данных. Реализация основных алгоритмических структур на языке программирования. Основные этапы разработки программ Язык программирования — это набор правил для описания алгоритмов решения задачи с помощью ЭВМ. Как известно (см. билет № 12), одним из базовых принципов архитектуры современных компьютеров до сих пор остается двоичный характер любой используемой информации, причем программа обработки также представляет собой двоичный код. Тем не менее программирование в двоичных кодах — занятие необычайно утомительное и требующее глубокого знания деталей архитектуры компьютера. Для облегчения данного процесса и предназначены языки программирования, используя которые человеку проще описать алгоритм решения задачи. Переход от языковых конструкций к машинным командам осуществляет специальная программа — транслятор языка. В соответствии с устройством языка (точнее говоря, со степенью его близости машине или человеку) различают языки низкого и высокого уровня. Языки низкого уровня, называемые еще машинными (или машинно-ориентированными) языками, — это языки, которые компьютер воспринимает непосредственно, т.е. языки машинных команд данной модели компьютера. Языки высокого уровня, напротив, ближе к естественному (человеческому); они не зависят от конкретного типа машины. Языком низкого уровня является ассемблер, а языков высокого уровня существует множество: Фортран, Алгол, Бейсик, Паскаль, Си, Ада, Пролог, Лисп, Ява и др. Один и тот же язык программирования может быть реализован по-разному даже на одном и том же компьютере (пример: GW Basic и QBasic). В синтаксисе различных реализаций допускаются некоторые второстепенные отличия. Одна из книг выдающегося специалиста по разработке языков программирования Никлауса Вирта (кстати, создателя языков Паскаль, Модула, Эйлер и Оберон) очень емко и глубоко названа “Алгоритмы + структуры данных = программы”. Таким образом, в теории программирования налицо две взаимосвязанные составляющие процесса решения задачи: собственно данные и инструкции по их обработке, т.е. алгоритм. Рассмотрение начнем с первой составляющей — данных. Одно из главных свойств алгоритма состоит в том, что он по определенным правилам преобразует исходные (входные) данные в выходные (чаще говорят — в результат). При этом в процессе выполнения алгоритма может потребоваться создать некоторые рабочие (промежуточные) данные, которые будут необходимы только в ходе обработки, а после ее завершения потеряют свое значение. Кроме того, для некоторых алгоритмов аргумент может одновременно являться и результатом (например: увеличить все элементы массива вдвое), что приводит к существованию еще одной разновидности данных. Специального термина для них в учебной литературе нет, поэтому приведенное на рисунке название несколько условно. Описанное нами четкое функциональное разделение данных имеется в любом школьном учебнике, начиная с самого первого [1]. Перечисленные выше категории у А.Г. Кушниренко в [2] названы видами величин. Как определено в [2], “вид величины показывает ее информационную роль в алгоритме”. В конкретном языке программирования каждой величине соответствует своя переменная. Помимо вида, каждая величина в алгоритме имеет свой тип. Процитируем еще раз учебник [2]: “Тип величины показывает, какие значения может принимать величина и какие операции можно с ней выполнять”. Кратко перечислим основные типы данных, использующихся в алгоритмических языках. Для вычислений используются различные числовые типы данных. Этот тип возник в ЭВМ самым первым, поэтому неудивительно, что он включает в себя достаточное количество разновидностей. Прежде всего назовем вещественные и целые числа. Последние могут быть как содержащими знак, так и беззнаковыми. В качестве примера вспомним в Турбо Паскале типы integer (значения от –32 768 до 32 767) и word (от 0 до 65 535). Кроме того, конкретные реализации языков программирования чаще всего содержат несколько разновидностей целых и вещественных данных, что связано с различным объемом памяти, выделяемым для них. В качестве самого простого примера назовем вещественные числа обычной и двойной точности в языке Basic. Наконец, для иллюстрации многообразия числовых данных упомянем введенный в Delphi тип currency (валюта), специально предназначенный для максимально точного хранения значений денежных сумм и вычисления процентов от них. Еще одна категория данных, которая часто используется в программировании, это символьные величины. В зависимости от конкретного языка программирования такие данные могут иметь некоторые не очень существенные особенности, но все они служат для хранения и организации обработки текстовой информации. Наконец, очень важным типом данных для построения программ со сложной структурой являются логические величины. Их часто называют булевскими в честь ирландского математика Д.Буля, который был основоположником алгебры логики. Хотя логические переменные имеют всего два значения — “ложь” и “истина”, без них в языках программирования не было бы ни полноценной развилки, ни цикла. В современных реализациях языков программирования появился особый тип данных — вариантный, который может принимать любые (числовые, символьные и т.д.) значения, причем тип текущего значения также хранится в самой переменной и может быть запрошен программистом. Подобный тип данных лежит в основе языка VBA (Visual Basic for Applications); на его базе реализуется общий формат ячеек электронной таблицы Excel. До сих пор мы говорили о том, какие значения могут принимать те или иные типы данных. Не стоит забывать и о второй части определения, а именно о том, какие действия можно совершать над каждым из них. Поскольку это довольно простая часть вопроса, ограничимся лишь парой примеров. Для целых и вещественных типов данных операции деления различны; они даже по-разному обозначаются: в языке Паскаль “div” и “/” соответственно. Или другой пример. Если для чисел вывести результат действия 123 + 45, то получится 168, в то время как для строковых значений “123” + “45” приведет к появлению на экране совсем другой результирующей строки: “12345”. Здесь, наоборот, операции с одинаковым обозначением производят над различными типами данных разные действия. Все рассмотренные выше типы данных являются простыми. Языки программирования позволяют сконструировать и сложные типы данных, причем для этого можно объединять как несколько простых, так и другие сложные данные. Самым известным сложным типом является массив, объединяющий в себе набор данных одного типа, например, массив из целых чисел или массив из логических величин. Кстати, конструкция массив из массивов также является вполне допустимой. Более подробно сложные типы данных будут рассмотрены в билете № 7. На стандартный простой тип можно непосредственно ссылаться, а для сложного типа требуется предварительно описывать его структуру. Отметим попутно, что типы данных не всегда определены заранее. Во многих языках существует возможность определения собственного типа данных. Зачем нужны типы данных? “Прежде всего они указывают, как кодировать данные в ЭВМ при их вводе и трансляции программ и как декодировать данные при их выводе и исполнении программ. …Благодаря этому кодированию становится возможным контроль над многими ошибками в программе. Зная тип переменной, транслятор может обнаружить, что переменной присваивается недопустимое значение, что к ней применяется неправильная операция… и выдать программисту сообщение об ошибке”. [3] Для обработки данных используются различные алгоритмы. Любой алгоритм состоит из последовательности команд, которые часто по-другому называются операторами. Набор операторов в различных языках программирования, как ни странно, относительно невелик и примерно одинаков. Основу любого алгоритмического языка составляет оператор присваивания. Именно он позволяет изменять значения данных программы и тем самым получать результат решения задачи. Как метко сказано в [4], “удивительно, что в обычных языках программирования есть только один оператор, который фактически что-то делает, — оператор присваивания. Все другие операторы, такие, как условные операторы и вызовы процедур, существуют только для того, чтобы управлять последовательностью выполнения операторов присваивания”. Чтобы получить простейшую законченную линейную программу, к операторам присваивания надо добавить какие-то средства ввода-вывода значений переменных. Ввод и вывод информации для различных языков отличаются наиболее сильно. Так, например, в языке Basic для ввода и вывода существуют особые операторы input и print, а в Паскале и Си для этой цели предусмотрены специальные системные процедуры. Для организации разветвляющихся и циклических участков алгоритма в языках программирования предусмотрены специальные операторы, которые обычно называются управляющими. К ним относятся имеющиеся в любом алгоритмическом языке условный оператор (дополненный, как правило, некоторой разновидностью — конструкцией выбора) и несколько видов циклов. Помимо этого стандартного обязательного набора, могут существовать и другие операторы. В частности, отметим оператор безусловного перехода goto, который хотя и есть практически в любом языке, но фактически является “запрещенным”: дело в том, что его применение существенно усложняет чтение программы, тогда как перечисленные выше стандартные конструкции вполне позволяют без него обойтись. В теории программирования строго доказывается, что для реализации любого алгоритма достаточно всего трех стандартных структур: следования (операторы выполняются в строгом соответствии с порядком написания), ветвления и цикла. Рассмотрим в качестве примера реализацию этих базовых структур в языке Паскаль. Примечание. Если в школе изучался другой язык программирования, то, безусловно, надо рассматривать его; мы надеемся, что замена синтаксиса записи в этом случае не вызовет особых затруднений. Условный оператор, обеспечивающий реализацию ветвления в алгоритмах, в рассматриваемом языке программирования имеет вид: IF <логическое выражение> THEN <оператор1> ELSE <оператор2> — причем ветвь с ELSE не является обязательной. Рассказывая о структуре условного оператора, стоит подчеркнуть два момента. Во-первых, логическое выражение совсем не обязательно представляет собой математическое неравенство типа x > 0 — оно вполне может содержать еще и булевские переменные, а также объединять несколько логических величин с помощью операций AND, OR и NOT. Во-вторых, согласно синтаксису языка в качестве операторов 1 и 2 может использоваться только один оператор. Когда для программиста этого недостаточно, разрешается создавать так называемый составной оператор, заключая необходимое количество операторов внутри служебных слов BEGIN…END. Приведем несколько конкретных вариантов записи условного оператора. IF x = 0 THEN WRITELN('Нулевое значение!') ELSE y := 1/x; IF x <> 0 THEN y := 1/x ELSE WRITELN('Нулевое значение!'); IF n1 < n2 THEN BEGIN n1 := n1 + 1; n2 := n2 - 1 END; IF control AND (x1 > 0) AND (x2 > 0) AND (dx > 0) THEN WRITELN('Все параметры положительны') (в последнем случае подразумевается, что переменная control является логической). Рассмотрим теперь операторы цикла. Имеется их три основных вида: с предусловием, с постусловием и с параметром. Соответствующий синтаксис перечисленных разновидностей циклов приведен ниже. WHILE <логическое выражение> DO <оператор> REPEAT <операторы> UNTIL <логическое выражение> FOR <параметр>:=<начальное значение> TO <конечное значение> DO <оператор> Правила записи логических выражений для циклов такие же самые, что и описанные выше для условного оператора. Заметим, что пара операторов REPEAT…UNTIL по смыслу эквивалентна “операторным скобкам” BEGIN…END, так что внутри данной конструкции допускается запись сразу нескольких операторов. Данная особенность цикла с постусловием является исключением из общего правила. Цикл с параметром организует автоматическое изменение некоторой переменной (параметра цикла). Такая конструкция особенно удачно подходит для последовательного перебора всех значений индексов, что существенно облегчает работу с массивами. Несколько примеров операторов цикла. WHILE dy > eps DO BEGIN n := n + 1; dy := 1/(n * n); y := y + dy END; REPEAT READLN(s); res := res + s UNTIL s = '.'; FOR i := 1 TO n - 1 DO READLN(m[i]); FOR s := 'A' TO 'Z' DO WRITE(s); В других языках программирования правила записи операторов управления во многом аналогичны. Чаще всего при написании реальной прикладной программы (здесь речь не идет об учебных упражнениях типа “в массиве найти максимальный элемент”) требуется не только программирование. Дело в том, что взятая из жизни задача обычно не представлена в форме, немедленно готовой к решению на компьютере: приходится сначала получать ее, выбирая при этом подходящий метод. Кроме того, когда программа будет написана, введена и отлажена, потребуется провести анализ полученных числовых результатов и сделать выводы относительно исходной задачи. В итоге можно выделить следующие основные этапы разработки программ. 1. Постановка задачи (выяснение наиболее существенных ее параметров и закономерностей, влияющих на изучаемую ситуацию; формулировка целей решения и определение необходимых для этого данных). 2. Математическая формализация (запись основных закономерностей в математической форме: в виде уравнений, соотношений, связей, условий). 3. Выбор компьютерного метода (обычно данный этап требуется, поскольку получившаяся математическая задача нуждается в преобразовании в эквивалентную форму, пригодную для обработки на компьютере, — например, дифференциальные уравнения приводятся к алгебраическим формулам, а для статистического моделирования требуется реализация датчика случайных чисел). 4. Построение алгоритма. 5. Составление программы на языке программирования. 6. Отладка и тестирование программы (устранение синтаксических и логических ошибок, анализ полученных результатов на предмет согласованности с имеющимися в науке закономерностями и ранее надежно установленными результатами; если необходимо — “ручная” проверка результатов для простейших случаев). 7. Проведение расчетов и анализ полученных результатов (все предшествующие этапы выполнялись с целью получить сведения о некотором реальном предмете или явлении, а не просто провести вычисления). Примечание. Приведенная схема первоначально возникла для решения чисто вычислительных задач, но, в силу своей общности, она применима и к другим задачам обработки информации. Например, создание информационной системы с незначительными оговорками вполне в нее укладывается. Проиллюстрируем описанную схему на примере некоторой конкретной задачи. Обратимся, например, к упражнению 7 на странице 77 в учебнике [1], которое формулируется следующим образом. Найдите распределение температуры во внутренних точках тонкого однородного стержня, считая, что стержень разбит на 5 отрезков и что на концах стержня температура равна 10 и 20°. Начните с температуры 15° на всех отрезках. Выполните 5 шагов вычислений. Так же, как в случае пластины, исходите из предположения, что температура каждого отрезка равна среднему арифметическому температур соседних отрезков. Примечание для учителей. Подробное рассмотрение решения конкретной физической задачи авторы считают дополнительным материалом, требовать который с учеников во время экзамена нет необходимости. С другой стороны, рассмотренный пример кажется весьма удачным сочетанием простоты с наличием в решении всех перечисленных этапов (в большинстве учебных задач те или иные этапы “выпадают”). 1. Рассматривается задача распределения температуры в тонком однородном стержне. Последнее обстоятельство позволяет считать, что искомое распределение температуры является функцией только одной координаты. Теплоотдачу окружающей среде вдоль стержня и остальные тепловые факторы предполагаем пренебрежимо малыми. Параметрами задачи являются два значения температуры на концах стержня. 2. Процесс описывается одномерным уравнением теплопроводности с граничными условиями на концах стержня. Поскольку в физике его принято записывать в дифференциальном виде, то школьникам его представить затруднительно. К счастью, существует “облегченный” вариант, который даже с точки зрения физиков считается корректным: необходимо вместо дифференциального соотношения (для бесконечно малых величин) записать уравнение задачи в виде конечно-разностного аналога (для конечных, но малых разностей). Фактически это означает переход к следующему этапу. Поскольку данный этап в учебной задаче оказывается “свернутым”, в учебниках (см., например, [5]) его часто объединяют со следующим; подобный методический прием вполне допустим. 3. Задача формулируется в виде, пригодном для обработки на компьютере. Стержень разбивается на несколько отрезков, для каждого из которых записывается уравнение теплового баланса (подробности см. в [1]). В результате получается, что температура каждого отрезка равняется среднему арифметическому всех (в одномерном случае двух!) соседних, что описывается простой формулой Ti = (Ti-1 + Ti+1) / 2 где i — это номер отрезка, изменяющийся от 1 до некоторого значения n. Последнее является “вычислительным” параметром задачи: в исходной формулировке его нет, но, поскольку результаты от него зависят, это влияние также необходимо проанализировать. Фактически для значений Ti мы получили систему из n связанных алгебраических уравнений, которую при больших n решить затруднительно. Поэтому решение предполагается производить итерационным методом, суть которого заключается в следующем. В начальный момент температура по всему стержню полагается однородной. Затем по выведенной формуле производится вычисление новых значений. Полученные значения температуры снова берутся в качестве исходных данных для дальнейших вычислений. Как правило, описанная процедура после некоторого количества повторений (итераций) k приводит к тому, что вычисляемые значения с практической тонностью перестают изменяться (математики говорят, что метод сходится). Подобные итерационные методы используются в научных расчетах весьма часто. Заметим, что при практической реализации метода удобно ввести два “фиктивных” граничных отрезка с номерами 0 и n + 1, в которые записать постоянные значения, взятые из условия задачи. Расчетные формулы применяются только для внутренних узлов с номерами от 1 до n. 4. Далее необходимо разработать алгоритм расчетов. Его возможная реализация показана в виде блок-схемы на следующем рисунке. 5. Написать программу по готовой блок-схеме, как правило, особого труда уже не представляет. Вот как, например, она может выглядеть на языке Паскаль. PROGRAM temp(INPUT,OUTPUT); CONST n = 5; {количество отрезков} t0 = 10; tn = 20; tbeg = 15; VAR t: ARRAY [0..n + 1] OF REAL; i, j ,k: INTEGER; BEGIN t[0] := t0; t[n + 1] := tn; FOR i := 1 TO n DO t[i] := tbeg; READLN(k); {количество итераций} WRITELN('n=',n); FOR j := 1 TO k DO BEGIN FOR i := 1 TO n DO t[i] := (t[i - 1] + t[i + 1])/2; WRITE(j:2); FOR i := 0 TO n + 1 DO WRITE(t[i]:9:4); WRITELN END END. 6. Приведем теперь несколько рекомендаций по отладке и тестированию программы. Как только очевидные ошибки синтаксиса будут устранены и программа начнет считать, выдавая на экран необходимое количество чисел, можно заняться проверкой правильности проводимых расчетов. Для этого необходимо тщательно проверить выведенные на экран значения температуры: на границах стержня она должна равняться в точности 10 и 20 градусам, а значения во внутренних точках должны заключаться в интервале между ними. Интуитивно кажется (и расчет подтверждает это), что значения ti должны нарастать слева направо. Для проверки правильности вычислений можно без компьютера провести 1–2 итерации при небольших значениях n1. Заметим, что для отладки вполне годятся даже весьма неразумные с физической точки зрения значения вроде n = 1. Когда все числа будут тщательно проверены, появится некоторая уверенность в том, что получаются правильные результаты. Остается дополнительно выяснить, как на них влияют “счетные” параметры n и k. Их следует подбирать не очень большими, но такими, чтобы изменение значения в 1,5–2 раза меняло результирующие температуры в пределах практически требуемой точности (1% для учебной задачи вполне достаточно). 7. Наконец, все вычислительные тесты позади и можно приступать к анализу физических результатов решения задачи. Построим график температуры вдоль стержня и убедимся, что он представляет собой прямую. Поменяем граничные температуры и проверим, как их значения влияют на температурное распределение. Подчеркнем, что без подобного анализа, о котором идет речь в данном пункте, решение задачи на компьютере особого смысла не имеет. Если читателей интересует реализация описанной общей схемы на более содержательных физических примерах, советуем заглянуть в подшивку газеты и в серии “Жаркое лето” этого года найти публикацию [6]. Литература 1. Основы информатики и вычислительной техники: Пробное учебное пособие для средних учебных заведений. Ч. 1 / А.П. Ершов, В.М. Монахов, С.А. Бешенков и др.; под ред. А.П. Ершова и В.М. Монахова. М.: Просвещение, 1985, 96 с. 2. Кушниренко А.Г., Лебедев Г.В., Зайдельман Я.Н. Информатика. 7–9-е классы: Учебник для общеобразовательных учебных заведений. М.: Дрофа, 2000, 336 с. 3. Информатика: Энциклопедический словарь для начинающих / Сост. Д.А. Поспелов. М.: Педагогика-Пресс, 1994, 352 с. 4. Бен-Ари М. Языки программирования. Практический сравнительный анализ. М.: Мир, 2000, 366 с. 5. Семакин И.Г. Информатика. Базовый курс. 7–9-е классы / И.Г. Семакин, Л.А. Залогова, С.В. Русаков, Л.В. Шестакова. М.: БИНОМ, 2004, 390 с. 6. Бирих Р.В., Еремин Е.А., Чернатынский В.И. Компьютерные модели в школьном курсе физики. Информатика, 2006, № 14, с. 3–45; № 15, с. 3–13. 2. Сформировать и выполнить запрос к готовой базе данных для поиска группы записей по заданным критериям В качестве примера рассмотрим поиск информации в базе данных в формате MS Access. База данных содержит следующие поля. Запросы на поиск информации в базе данных 1. Кто родился весной? 2. Кто учится в одиннадцатом классе? 3. Кто не занимается тяжелой атлетикой? 4. Кто не определил свое хобби? 5. Кто из мальчиков живет на улице Чердынской? 6. У кого карие глаза и этот человек не умеет вязать? Примерная информация для заполнения базы данных приведена ниже. Для указанных выше запросов логические выражения могут выглядеть так: 1. К весенним месяцам относятся март, апрель и май. Соответствующее логическое выражение запроса: "Дата" = Like "*.03.*" Or Like "*.04.*" Or Like "*.05.*" Диалоговое окно для создания запроса в режиме конструктора выглядит в этом случае так: 2. "Класс" = 11 3. "Хобби" <>"тяжелая атлетика" 4. "Хобби" Is Null 5. "Пол" = Истина and "Улица" = "Чердынская" 6. "Глаза" = "карие" and "Хобби" <> "аэробика" В данном примере рассматривается однотабличная база данных. Соответственно, запросы в этом случае строятся, хотя и с помощью сложных логических выражений, более простые, чем в случае многотабличной базы данных. Примеры использования многотабличных баз данных и задания для формирования данного билета можно найти в элективном курсе информатики И.Г. Семакина, Е.К. Хеннера2. 3. Подсчитать размер текстового файла при заданной кодовой таблице, формате страницы и количестве страниц. Оценить размеры того же текста в других изученных форматах текстовых редакторов Задача. Используется кодовая таблица CP1251 (Windows Cyrillic). Сколько килобайт будет занимать файл в простом текстовом формате (plain text), если в тексте 300 страниц, на странице 25 строк, а в строке в среднем 45 символов? Оцените объемы того же текста в форматах doc, rtf и в HTML. Как изменится объем файла в этих форматах, если применить элементы форматирования (использовать различные шрифты и начертания)? 3 Решение. В заданной системе кодировки один символ занимает 1 байт. Поэтому для ответа на поставленный вопрос достаточно подсчитать количество символов в тексте. 300 x 25 x 45 = 337 500 символов, что соответствует 337 500 байтам, или около 329,59 Кб. В HTML собственно текстовая информация дополнится служебной информацией, тегами для разметки текста, что в среднем увеличит размер предыдущего файла до »500 Кб. Добавление дополнительных элементов форматирования (за счет добавления соответствующих тегов) может незначительно увеличить размер на 10–15 Кб4. Оценивая объемы того же текста в форматах doc, rtf, можно лишь предположить, что использование некоторых команд разметки и т.д., присутствующих в этих форматах, приведет к росту размера файла, увеличив его в 2,5–3 раза, т.е. около 1 Мб. При этом дополнительные элементы форматирования несущественно изменят объем. Не следует забывать, что в файлах этих форматов хранится и некоторая служебная информация, объем которой оценить затруднительно. Что касается формулирования аналогичных заданий для экзаменационного билета, то необходимо основательно продумать корректность формулировок, если предполагается получить четкий и однозначный ответ. Для n = 2, в частности, окончательные значения t1 и t2 легко вычисляются путем решения системы из двух уравнений для них, что позволяет провести еще один тест программы. 1 Семакин И.Г. Информационные системы и модели. Элективный курс: Учебное пособие / И.Г. Семакин, Е.К. Хеннер. М.: БИНОМ. Лаборатория Знаний, 2005, 303 с.: илл. 2 Семакин И.Г. Информационные системы и модели. Элективный курс: Практикум / И.Г. Семакин, Е.К. Хеннер. М.: БИНОМ. Лаборатория Знаний, 2006, 87 с.: илл. Следует признать формулировку задания (как общего, так и этого частного) некорректной, поскольку, говоря об оценке размера файла, необходимо знать о внутренних форматах файлов, а, например, формат .doc является закрытым (открытым является формат файлов WinWord 97). 3 Если для добавления новых элементов форматирования используется стиль (в частности, его описание хранится в отдельном файле), то объем файла в формате HTML просто не изменится. 4 Билет № 6 1. Технология программирования. Структурное и объектноориентированное программирование. Процедуры и функции. Локальные и глобальные переменные Программирование — сравнительно молодая и быстро развивающаяся отрасль науки и техники. Опыт ведения реальных разработок и совершенствования имеющихся программных и технических средств постоянно переосмысливается, в результате чего появляются новые методы, методологии и технологии, которые, в свою очередь, служат основой более современных средств разработки программного обеспечения. Исследовать процессы создания новых технологий и определять их основные тенденции целесообразно, сопоставляя эти технологии с уровнем развития программирования и особенностями имеющихся в распоряжении программистов программных и аппаратных средств. Технологией программирования называют совокупность методов и средств, используемых в процессе разработки программного обеспечения. Как любая другая технология, технология программирования представляет собой набор технологических инструкций, включающих: · указание последовательности выполнения технологических операций; · перечисление условий, при которых выполняется та или иная операция; · описания самих операций, где для каждой операции определены исходные данные, результаты, а также инструкции, нормативы, стандарты, критерии и методы оценки и т.п. Кроме набора операций и их последовательности, технология также определяет способ описания проектируемой системы, точнее модели, используемой на конкретном этапе разработки. Различают технологии, используемые на конкретных этапах разработки или для решения отдельных задач этих этапов, и технологии, охватывающие несколько этапов или весь процесс разработки. В основе первых, как правило, лежит ограниченно применимый метод, позволяющий решить конкретную задачу. В основе вторых обычно лежит базовый метод или подход (парадигма), определяющий совокупность методов, используемых на разных этапах разработки, или методологию. Исторически в развитии программирования можно выделить несколько принципиально отличающихся методологий. Изначально понятие технологии как таковой появилось в период “стихийного” программирования (это 60-е годы прошлого столетия). В этот период отсутствовало понятие структуры программы, типов данных и т.д. Вследствие этого код получался запутанным, противоречивым. Программирование тех лет считалось искусством. Конец 60-х — кризис в программировании. Выход из этого кризиса — переход к структурной парадигме программирования. Структурный подход к программированию представляет собой совокупность рекомендуемых технологических приемов, охватывающих выполнение всех этапов разработки программного обеспечения. В основе структурного подхода лежит декомпозиция (разбиение на части) сложных систем с целью последующей реализации в виде отдельных небольших подпрограмм. С появлением других принципов декомпозиции (объектного, логического и т.д.) данный способ получил название процедурной декомпозиции. Другим базовым принципом структурного программирования является использование при составлении программ только базовых алгоритмических структур (см. билет № 4), запрет на использование оператора GOTO. Структурный подход требовал представления задачи в виде иерархии подзадач простейшей структуры. Проектирование осуществлялось “сверху вниз” и подразумевало реализацию общей идеи, обеспечивая проработку интерфейсов подпрограмм. Одновременно вводились ограничения на конструкции алгоритмов, рекомендовались формальные модели их описания, а также специальный метод проектирования алгоритмов — метод пошаговой детализации. Поддержка принципов структурного программирования была заложена в основу так называемых процедурных языков программирования. Как правило, они включали основные “структурные” операторы передачи управления, поддерживали вложение подпрограмм, локализацию и ограничение области “видимости” данных. Среди наиболее известных языков этой группы стоит назвать PL/1, ALGOL-68, Pascal, С. Дальнейший рост сложности и размеров разрабатываемого программного обеспечения потребовал развития структурирования данных. Как следствие этого в языках появляется возможность определения пользовательских типов данных. Одновременно усилилось стремление разграничить доступ к глобальным данным программы, чтобы уменьшить количество ошибок, возникающих при работе с глобальными данными. В результате появилась и стала развиваться технология модульного программирования. Модульное программирование предполагает выделение групп подпрограмм, использующих одни и те же глобальные данные, в отдельно компилируемые модули (библиотеки подпрограмм), например, модуль графических ресурсов. Связи между модулями при использовании данной технологии осуществляются через специальный интерфейс, в то время как доступ к реализации модуля (телам подпрограмм и некоторым “внутренним” переменным) запрещен. Эту технологию поддерживают современные версии языков Pascal и С (C++), языки Ада и Modula. Объектно-ориентированное программирование (ООП) определяется как технология создания сложного программного обеспечения, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного типа (класса), а классы образуют иерархию с наследованием свойств. Взаимодействие программных объектов в такой системе осуществляется путем передачи сообщений. Основным достоинством объектно-ориентированного программирования по сравнению с модульным программированием является “более естественная” декомпозиция программного обеспечения, которая существенно облегчает его разработку. Это приводит к более полной локализации данных и интегрированию их с подпрограммами обработки, что позволяет вести практически независимую разработку отдельных частей (объектов) программы. Кроме этого, объектный подход предлагает новые способы организации программ, основанные на механизмах наследования, полиморфизма, композиции, наполнения. Эти механизмы позволяют конструировать сложные объекты из сравнительно простых. В результате существенно увеличивается показатель повторного использования кодов и появляется возможность создания библиотек классов для различных применений. Бурное развитие технологий программирования, основанных на объектном подходе, позволило решить многие проблемы. Так, были созданы среды, поддерживающие визуальное программирование, например, Delphi, C++ Builder, Visual C++ и т.д. При использовании визуальной среды у программиста появляется возможность проектировать некоторую часть, например, интерфейсы будущего продукта, с применением визуальных средств добавления и настройки специальных библиотечных компонентов. Результатом визуального проектирования является заготовка будущей программы, в которую уже внесены соответствующие коды. Можно дать обобщающее определение: объект ООП — это совокупность переменных состояния и связанных с ними методов (операций). Упомянутые методы определяют, как объект взаимодействует с окружающим миром. Под методами объекта понимают процедуры и функции, объявление которых включено в описание объекта и которые выполняют действия. Возможность управлять состояниями объекта посредством вызова методов в итоге и определяет поведение объекта. Эту совокупность методов часто называют интерфейсом объекта. Инкапсуляция — это механизм, который объединяет данные и методы, манипулирующие этими данными, и защищает и то и другое от внешнего вмешательства или неправильного использования. Когда методы и данные объединяются таким способом, создается объект. Применяя инкапсуляцию, мы защищаем данные, принадлежащие объекту, от возможных ошибок, которые могут возникнуть при прямом доступе к этим данным. Кроме того, применение этого принципа очень часто помогает локализовать возможные ошибки в коде программы. А это намного упрощает процесс поиска и исправления этих ошибок. Можно сказать, что инкапсуляция подразумевает под собой сокрытие данных, что позволяет защитить эти данные. Однако применение инкапсуляции ведет к снижению эффективности доступа к элементам объекта. Это обусловлено необходимостью вызова методов для изменения внутренних элементов (переменных) объекта. Но при современном уровне развития вычислительной техники эти потери в эффективности не играют существенной роли. Наследование — это процесс, посредством которого один объект может наследовать свойства другого объекта и добавлять к ним черты, характерные только для него. В итоге создается иерархия объектных типов, где поля данных и методов “предков” автоматически являются и полями данных и методов “потомков”. Смысл и универсальность наследования заключается в том, что не надо каждый раз заново (“с нуля”) описывать новый объект, а можно указать “родителя” (базовый класс) и описать отличительные особенности нового класса. В результате новый объект будет обладать всеми свойствами родительского класса плюс своими собственными отличительными особенностями. Полиморфизм — это свойство, которое позволяет одно и то же имя использовать для решения нескольких технически разных задач. Полиморфизм подразумевает такое определение методов в иерархии типов, при котором метод с одним именем может применяться к различным родственным объектам. В общем смысле концепцией полиморфизма является идея “один интерфейс — множество методов”. Преимуществом полиморфизма является то, что он помогает снижать сложность программ, разрешая использование одного интерфейса для единого класса действий. Выбор конкретного действия, в зависимости от ситуации, возлагается на компилятор. Современная технология программирования — компонентный подход, который предполагает построение программного обеспечения из отдельных компонентов — физически отдельно существующих частей программного обеспечения, которые взаимодействуют между собой через стандартизованные двоичные интерфейсы. В отличие от обычных объектов объекты-компоненты можно собрать в динамически вызываемые библиотеки или исполняемые файлы, распространять в двоичном виде (без исходных текстов) и использовать в любом языке программирования, поддерживающем соответствующую технологию. На сегодня рынок объектов стал реальностью. Это позволяет программистам создавать продукты, хотя бы частично состоящие из повторно использованных частей, т.е. использовать технологию, хорошо зарекомендовавшую себя в области проектирования аппаратуры. Компонентный подход лежит в основе технологий, разработанных на базе COM (Component Object Model — компонентная модель объектов), и технологии создания распределенных приложений CORBA (Common Object Request Broker Architecture — общая архитектура с посредником обработки запросов объектов). Эти технологии используют сходные принципы и различаются лишь особенностями их реализации. Технология СОМ фирмы Microsoft является развитием технологии OLE (Object Linking and Embedding — связывание и внедрение объектов), которая использовалась в ранних версиях Windows для создания составных документов. Технология СОМ определяет общую парадигму взаимодействия программ любых типов: библиотек, приложений, операционной системы, т.е. позволяет одной части программного обеспечения использовать функции (службы), предоставляемые другой, независимо от того, функционируют ли эти части в пределах одного процесса, в разных процессах на одном компьютере или на разных компьютерах. Модификация СОМ, обеспечивающая передачу вызовов между компьютерами, называется DCOM (Distributed COM — распределенная СОМ). Таковы вкратце основные этапы изменения технологий программирования. Поскольку программное обеспечение на сегодняшний день используется в самых различных устройствах и сферах деятельности человека, то можно прогнозировать дальнейшее совершенствование технологий программирования. Обсудим далее то, что в конечном итоге является “кирпичиками”, строительным материалом любой программы — подпрограммы и варианты их реализации на примере языка Pascal — процедуры и функции. При решении новых задач можно попытаться воспользоваться ранее написанными программами. Алгоритм, ранее разработанный и целиком используемый в составе других алгоритмов, называется вспомогательным. Применение вспомогательных алгоритмов позволяет разбить задачу на части, структурировать ее. Вся программа условно может быть разделена на две части: основную и вспомогательную. В основной части производится простейшая обработка информации, организуется обращение к разным подпрограммам. Вспомогательный алгоритм тоже может вызывать другие вспомогательные, длина такой цепочки вызовов теоретически не ограничена. Вспомогательными и основными алгоритмы являются не сами по себе, а по отношению друг к другу. При использовании вспомогательных алгоритмов необходимо учитывать способ передачи значений исходных данных для них и получения результата от них. Аргументы вспомогательного алгоритма — это переменные, в которых должны быть помещены исходные данные для решения соответствующей подзадачи. Результаты вспомогательного алгоритма — это также переменные, где содержатся результаты решения этих подзадач, а также результатом может быть конкретное действие, которое совершает компьютер под действием подпрограммы. Подпрограммы могут быть двух видов: подпрограмма без параметров и подпрограмма с параметрами. Обращение к подпрограмме может быть организовано из любого места основной программы или другой подпрограммы сколько угодно раз. При работе с подпрограммами важными являются понятия формальных и фактических параметров. Формальные параметры — это идентификаторы входных данных для подпрограммы. Если формальные параметры получают конкретные значения, то они называются фактическими. Формальные параметры могут получить конкретные значения только в той программе, где производится обращение к данному модулю-подпрограмме. Тип и порядок записи, а также семантическое (смысловое) наполнение фактических параметров должны быть такими же, как и формальных параметров. В противном случае результат работы программы будет непредсказуемым. Из этого следует, что фактические параметры используются при обращении к подпрограмме из основной, а формальные параметры — только в самой подпрограмме. Подпрограмма с параметрами используется для записи многократно повторяющихся действий при разных исходных данных. Подпрограммы с параметрами можно разделить на два типа: подпрограммы-функции и просто подпрограммы с параметрами (их называют процедурами). При составлении подпрограмм с параметрами надо соблюдать следующие правила: 1) каждая подпрограмма имеет свое имя и список формальных параметров; 2) процедура из основной программы вызывается командой вызова, которая по форме ничем не отличается от вызова команды исполнителя. Результат присваивается одной или нескольким переменным, которые находятся в списке формальных параметров. Но результатом могут быть, конечно, не только значения переменных, но какое-либо действие, выполненное ЭВМ. Пример 1. Используем алгоритм нахождения наибольшего общего делителя двух натуральных чисел в качестве вспомогательного при решении задачи: составить программу вычитания дробей (a, b, c, d — натуральные числа). Результат представить в виде обыкновенной несократимой дроби. Program Sub; Var A, B, C, D, G, E, F : Integer; Procedure Nod(M, N : Integer; Var K : Integer); Begin While M <> N Do If M > N Then M := M — N Else N := N — M; K := M End; Begin Write('Введите числители и знаменатели дробей:'); ReadLn(A, B, C, D); E := A * D — B * C; F := B * D; If E = 0 Then WriteLn(E) Else Begin Nod(Abs(E), F, G); E := E Div G; F := F Div G; WriteLn('Ответ: ', E, '/', F) End End. Как видно из примера, объявление и тело подпрограмм находится в разделе описаний. В заголовке подпрограммы содержится список формальных параметров с указанием их типа, которые условно можно разделить на входные и выходные (перед ними стоит служебное Var). При обращении к процедуре указывается ее имя и список фактических параметров. Формальные и фактические параметры должны соответствовать по количеству и по типу. Вызов процедуры осуществляется следующим образом: <Идентификатор (имя) процедуры> (<список фактических параметров>); Например, Nod(Abs(E), F, G); По способу передачи фактических значений в подпрограмму в Turbo Pascal выделяют параметры-переменные, параметры-значения, параметры-константы. Есть и другие способы, которые менее актуальны. Функция (в отличие от процедуры) всегда возвращает единственное значение. Покажем, как изменится подпрограмма из примера, если ее записать в виде функции. Function Nod(M, N : Integer) : Integer; Begin While M <> N Do If M > N Then M := M — N Else N := N — M; Nod := M End; Итак, после списка параметров указывается тип значения функции, а в теле функции хотя бы один раз встречается присваивание переменной, имя которой совпадает с именем функции соответствующего значения. Вызов функции будет следующим: G := Nod(Abs(E), F); Вообще вызов функции может присутствовать в выражении, стоящем: в правой части оператора присваивания, в процедуре вывода, в качестве фактического параметра в вызове другой подпрограммы и т.д. При решении задач целесообразно проанализировать условие, записать решение в крупных блоках (не являющихся операторами Pascal), детализировать каждый из блоков (записав в виде блоков, возможно, по-прежнему не операторов Pascal) и т.д., продолжать до тех пор, пока каждый из блоков не будет реализован с помощью операторов языка. Пример 2. Дано натуральное число n. Переставить местами первую и последнюю цифры этого числа. Program Integ; Var N : Integer; Begin Write('Введите натуральное число: '); ReadLn(N); If Impossible(N) Then WriteLn('Невозможно переставить цифры, возникнет переполнение') Else Begin Change(N); WriteLn('Ответ: ', N) End; End. Можно заметить, что необходимо детализировать логическую функцию Impossible, которая диагностирует, возможна ли перестановка, и процедуру Change, которая эту перестановку (в случае, если она возможна) выполняет. Function Impossible(N : Integer) : Boolean; Begin If Number(N) < 10000 Then Impossible := False Else Impossible := (N Mod 10 > 3) Or N Mod 10 = 3) And (N Mod 10000 Div 10 * 10 + N Div 10000 > MaxInt Mod 10000) End; Здесь необходимо детализировать функцию Number, возвращающую количество цифр в записи натурального числа (т.к. функция Impossible содержит ее вызов, то в разделе описаний функция Number должна ей предшествовать). Function Number(N : Integer) : Integer; Var Vsp : Integer; Begin Vsp := 1; While N > 10 Do Begin Vsp := Vsp * 10; N := N Div 10 End; Number := Vsp End; Наконец, последняя процедура. Procedure Change(Var N : Integer); Var Kol, P, S, R : Integer; Begin Kol := Number(N); P := N Mod 10; {последняя цифра} If Kol > 1 Then S := N Div Kol Else S := 0; {первая цифра} R := N Mod Kol div 10; N := P * Kol + R * 10 + S End; Возможны также подпрограммы, которые вызывают сами себя. Они называются рекурсивными. Создание таких подпрограмм является красивым приемом программирования, но не всегда целесообразно из-за чрезмерного расхода памяти ЭВМ. Пример 3. Найти максимальную цифру в записи данного натурального числа. Program MaxDigit; Type NaturLong = 1..MaxLongInt; Digit = 0..9; Var A : NaturLong; Function Maximum(N : NaturLong) : Digit; Begin If N < 10 Then Maximum := N Else If N Mod 10 > Maximum(N Div 10) Then Maximum := N mod 10 Else Maximum := Maximum(N Div 10) End; Begin Write('Введите натуральное число: '); ReadLn(A); WriteLn('Максимальная цифра равна ', Maximum(A)) End. При создании функции Maximum было использовано следующее соображение: если число состоит из одной цифры, то она является максимальной, иначе если последняя цифра не является максимальной, то ее следует искать среди других цифр числа. При написании рекурсивного алгоритма следует позаботиться о граничном условии, когда цепочка рекурсивных вызовов обрывается и начинается ее обратное “раскручивание”. В нашем примере это условие N < 10. В структурном языке программирования любой программный объект (константа, переменная, тип и др.) должен быть описан перед использованием в программе. Иначе говоря, описание объекта должно предшествовать его первому появлению в других фрагментах программы. Это правило относится и к подпрограммам. На рисунке схематически показана структура взаимного расположения описаний подпрограмм в некоторой условной программе. Попробуем, используя эту схему, разобраться в вопросе об области действия описаний подпрограмм. Любая подпрограмма может использоваться лишь в пределах области действия ее описания (а описанные в ней объекты — лишь внутри этой подпрограммы). Например, область действия подпрограмм А и В — основная программа. Поэтому из основной программы можно обратиться к подпрограммам А и В. В свою очередь, в подпрограмме В могут быть обращения к подпрограмме А; а из А нельзя обратиться к В, поскольку описание А предшествует описанию В. Подпрограммы А1 и А2 локализованы в подпрограмме А и могут использоваться только в ней; из А2 можно обратиться к А1, но нельзя наоборот. Из подпрограммы В1 можно обратиться к А, поскольку ее описание является глобальным по отношению к В1, но нельзя обратиться к А1, поскольку область действия описания А1 не распространяется на блок подпрограммы В. Из подпрограммы В22 можно обратиться только к В21, В1, B2, А. Таким образом, можно заметить, что все внешние описания по отношению к той или иной подпрограмме носят глобальный характер. Все, что объявляется внутри подпрограммы, локализовано. Понятие “локальный-глобальный” является относительным, поскольку одно и то же описание по отношению к разным подпрограммам (основной программе) может являться и локальным, и глобальным. Использованные источники информации 1. Семакин И., Залогова Л., Русаков С., Шестакова Л. Информатика: учебник по базовому курсу. М.: Лаборатория Базовых Знаний, 1998. (Глава 12. Введение в программирование, с. 323–371.) 2. Угринович Н. Информатика и информационные технологии. Учебное пособие для общеобразовательных учреждений. М.: БИНОМ, 2001, 464 с. 3. Информатика. 7–8-е классы / Под ред. Н.В. Макаровой. СПб.: ПитерКом, 1999, 368 с. 4. Шафрин Ю.А. Информационные технологии. М.: Лаборатория Базовых Знаний, 1998, 704 с. (п. 1.6. Понятие об алгоритмах, п. 1.7. Понятие о программировании, с. 53–72). 5. Информатика. Задачник-практикум в 2 т. / Под ред. И.Г. Семакина, Е.К. Хеннера: Т. 1. М.: Лаборатория Базовых Знаний, 1999, 304 с. 6. Основы информатики и вычислительной техники. Пробное учебное пособие для средних учебных заведений / Под ред. А.П. Ершова, В.М. Монахова. М.: Просвещение, 1985. Ч. I, II. 7. Шауцукова Л.З. Информатика: Учебник для 10–11-х классов. М.: Просвещение, 2000 (Глава 7. Алгоритмы. Алгоритмизация. Алгоритмические языки). 8. http://comp-science.narod.ru/didakt_i.html — дидактические и методические материалы по программированию и информатике. 9. Семакин И.Г., Шестаков А.П. Основы программирования (учебник) — допущен Министерством образования Российской Федерации в качестве учебника для студентов образовательных учреждений среднего профессионального образования, обучающихся по специальностям 2202 “Автоматизированные системы обработки информации и управления (по отраслям)”, 2203 “Программное обеспечение вычислительной техники и автоматизированных систем”. М.: Мастерство, НМЦ СПО; Высшая школа, 2001, 432 с. 10. Гладков В.П., Шестаков А.П. Вопросы, задания и контрольные работы для начинающих программистов. // Информатика № 20, 33, 34, 35, 37, 38, 40, 47, 48/2001. 11. Иванова Г.С. Технология программирования: Учебник для вузов. М.: Изд-во МГТУ им. Н.Э. Баумана, 2002, 320 с. 2. Средствами почтовой программы создать фильтр для автоматического распределения входящих писем по почтовым папкам в зависимости от темы письма Рассмотрим решение поставленной задачи в двух разных почтовых клиентах. Outlook Express Для того чтобы такое распределение было возможно, необходимо существование тех папок, по которым предполагается “раскладывать” письма (или нужно создать такие папки в процессе формирования правила сортировки почты). Необходимо выбрать меню Сообщение > Создать правило из сообщения… Далее в диалоговом окне Создать правило для почты (см. рисунок) указать, что сортировка почты осуществляется по полю Тема, в качестве действия указать Переместить в заданную папку, далее — описать правило. Описание правила включает: 1) ввод ключевых слов 2) выбор папки, куда будут помещаться указанные сообщения Последнее — задание названия для правила (либо можно согласиться с предлагаемым по умолчанию). Таким образом, почтовый клиент будет автоматически сортировать часть почты. Аналогично можно сортировать почту по отправителю и т.д. Служба mail.ru В персональных настройках можно установить фильтры. Выбрать Добавить фильтр в список фильтров. Настроить фильтр. 3. Задание на подсчет полного набора символов (мощности алфавита), используемого при кодировании информации Пример. Перед въездом в город стоят пять флагштоков. На флагштоках можно поднимать флаги желтого, зеленого и красного цветов. Какое количество различных сигналов можно подать при помощи этих флагштоков при условии, что не обязательно поднимать флаг на каждом из флагштоков? Решение. При условии, что не обязательно поднимать флаг на каждом из флагштоков, для каждого флагштока есть 4 возможности: нет флага, желтый флаг, зеленый флаг, красный флаг. Тогда общее количество комбинаций получается следующим: 4 · 4 · 4 · 4 · 4 = 1024. Варианты заданий В качестве задач в этом разделе можно предлагать любые простейшие задачи из комбинаторики. 1. В стране лилипутов живут 3000 жителей. Доказать, что по крайней мере 3 из них имеют одинаковые инициалы, учитывая то, что алфавит лилипутов состоит из 40 букв, каждый из которых можно использовать для инициалов. 2. Сколькими способами можно рассадить аллею, если у нас есть яблоня, береза, липа, сосна, елка и рябина? Притом сосну нельзя сажать первой, а яблоню нельзя сажать рядом с рябиной. 3. Сколько можно составить пятизначных телефонных номеров из цифр от 0 до 7? 4. На полке стоит 5 напитков. Сколько разных коктейлей из них можно составить? 5. Номер машины состоит из 3 цифр. Сколько неправильных вариантов можно получить, угадывая номер? Билет № 7 1. Типы данных. Структуры данных. Обработка массивов. Итеративные и рекурсивные алгоритмы обработки массивов. Многомерные массивы Обсуждая билет № 5, мы уже говорили о типах данных, их роли в алгоритме, а также о том, что дает компьютеру “знание” типа конкретной величины. Мы также говорили, что существуют простые и сложные типы данных. Простые типы чаще всего используются для хранения рабочих величин, но могут быть также аргументами или результатами в несложных алгоритмах. Тем не менее для представления данных в реальных задачах возможностей простых данных обычно недостаточно. В самом деле, в типичном случае о человеке необходимо хранить фамилию, имя и отчество (текстовые данные), год рождения (число), пол и семейное положение (одно из значений, выбираемых из фиксированного набора), факты наличия или отсутствия определенных признаков, например, обладания недвижимостью (логические данные) и т.д. В результате для объединения совокупности всех относящихся к одному реальному объекту данных (компонентов) требуется возможность создания из них единой сложной структуры. Примечание. Стоит отметить, что если к сложному набору данных, состоящему из отдельных компонентов (полей), добавить методы их обработки, то получится автономная конструкция еще более высокого уровня — объект (см. билет № 6). Необходимость в обработке на компьютере сложных видов данных также непосредственно вытекает из цикличности большинства применяемых на практике алгоритмов. Свойство массовости (см. билет № 4) требует, чтобы алгоритм реализовывался для обработки максимально большого количества данных, а не для какого-то одного конкретного значения1. Следовательно, компьютер в подавляющем большинстве случаев производит многократную обработку множества данных по одному и тому же алгоритму (например, просматривает информацию о каждом человеке, отбирая по определенному признаку только тех, кто нужен согласно запросу). В результате в языке программирования необходимо предусмотреть средства, которые позволяют компактно представлять программы такого рода обработки: описать действия над одним из типичных данных, а затем циклически многократно повторять эти действия. Нетрудно понять, что над формальной совокупностью простых данных (набором простых переменных с разными обозначениями) такую процедуру построить трудно — для этого лучше подойдет одна величина, определенным образом организованная (например, массив). Как неявно следует из дальнейшей формулировки вопроса, в данном билете требуется рассказывать именно о сложных типах данных (в некоторых языках, подобных Си, подобные конструкции данных принято называть структурами). Современные языки программирования позволяют создавать весьма разнообразные сложные структуры данных, причем для этого можно объединять как несколько простых, так и другие сложные данные. Самым распространенным сложным типом является массив, соединяющий в себе набор данных одного типа, например, массив из целых чисел или массив из логических величин. Кстати, конструкция “массив из массивов” также является вполне допустимой, о чем мы будем говорить несколько позже. Для сложного типа в обязательном порядке требуется предварительно описать его состав. Это логически понятно, поскольку для конкретной структуры данных компоненты выбирает пользователь, и компьютер в принципе не в состоянии предугадать их набор; следовательно, никакое самое дружественное программное обеспечение не в состоянии автоматизировать данную операцию. В то же время сложные структуры данных требуют больших объемов памяти, так что и с этой точки зрения компьютеру требуется заранее знать состав компонентов структуры (для распределения памяти под каждый ее компонент). Как уже отмечалось ранее, наиболее простой из сложных структур данных в памяти компьютера является массив. Поэтому мы будем рассматривать компьютерную обработку сложных данных именно на его примере. Массив — это единая структура, компоненты которой имеют один и тот же тип. Обращение к отдельным элементам массива производится путем указания общего имени массива и определенной информации, характеризующей позицию требуемого элемента внутри массива. Последняя имеет смысл некоторой координаты (или, может быть, нескольких координат) и называется индексом (индексами). Отсюда видно, что массивы естественным образом делятся по количеству индексов на одномерные (с одним индексом), двумерные и, что допускается в большинстве языков, многомерные массивы (с боRльшим числом индексов). Для удобства изложения начнем рассмотрение с одномерных массивов. Описание одномерного массива в различных языках программирования выглядит несколько по-разному, но всегда содержит информацию об устройстве индекса и типе элементов. Например: m1: array [1..10] of real; — Паскаль float m2[10]; — Си, Java и ряд других языков программирования dim m3(9) as variant; — VBA (Visual Basic for Applications) Во всех приведенных примерах в той или иной форме присутствует информация об индексах массива2 и типе его компонентов3. Видно, что, несмотря на различную форму записи, ее смысл во всех языках программирования примерно один и тот же, что легко объясняется общностью целей описаний массивов. Подчеркнем, что хотя в одних языках (Basic, Си) индексы, определяющие положение элемента массива, всегда числовые, в других (Паскаль, Ада) допускаются и другие “счетные” типы (более точно их называть порядковыми). Хорошим примером порядковых данных может служить символьный тип CHAR, упорядоченный в соответствии с принятым в компьютере алфавитом (см. билет № 21). Следует четко различать значения элементов массива и значения их индексов, обеспечивающие доступ к этим элементам. Можно провести весьма глубокую аналогию, сопоставив эту пару понятий с человеком и его почтовым адресом, который позволяет доставить необходимую информацию нужному лицу. При решении задач на обработку массивов очень важно постоянно контролировать корректность значений индексов. Особенно актуальной эта проблема становится в том случае, если значения индекса задаются не в явном виде, а вычисляются тем или иным способом. Рассмотрим в качестве примера следующий фрагмент программы. Пусть в описании сказано, что массив Q состоит из элементов с номерами от 1 до 5. Пусть далее в некотором месте программы находится оператор присваивания Q[t+2] := 0. Тогда в случае t > 3 нулевое значение будет сохранено вне массива, точнее говоря, в то место памяти, где находился бы элемент под номером t+2, если бы он существовал. Так что в результате выполнения данного некорректного присвоения в лучшем случае будет “испорчено” значение какой-либо другой переменной, а в худшем — сама исполняемая программа. В любом случае найти такую ошибку крайне сложно: для этого потребуется большое внимание и глубокое понимание логики работы программы. Примечание. Возможно, у некоторых читателей возник вопрос: неужели компьютер не в состоянии проконтролировать “попадание” значения индекса в “разрешенный” диапазон? Разумеется, в состоянии, вот только контроль этот увеличивает длину программы и замедляет ее работу. Именно поэтому во многих компиляторах контроль индексов является отключаемым, причем ради эффективности итоговой программы по умолчанию контроль как раз бывает выключен (именно так работает система программирования Turbo Pascal фирмы Borland). Введение сложного типа “массив” позволяет компактно описывать решение широкого круга важных для практики задач. К типовым задачам обработки массива относятся: · заполнение его элементов по определенному закону; · нахождение некоторого характерного элемента (например, максимального или первого нулевого) и, может быть, его положения; · поиск элементов, удовлетворяющих определенному условию (или подсчет их количества); · определение некоторых характеристик массива (сумма, среднее значение, наличие упорядоченности или симметрии); · сортировка массива; · перенос данных из одного массива в другой, разделение массива на части, объединение массивов — и некоторые другие. Подчеркнем, что к этим, казалось бы, весьма абстрактным упражнениям сводится огромное множество практических задач: от обслуживания каталогов дисков до обработки результатов соревнований. В качестве примера рассмотрим задачу поиска в массиве положения максимального элемента, которое определяется числовым значением его индекса. Программа решения этой стандартной для массивов задачи на языке Паскаль может быть реализована следующим образом. PROGRAM ind_max(INPUT, OUTPUT); CONST n = 10; m: ARRAY [1..n] OF INTEGER = (8,10,9,4,7,2,5,6,3,1); VAR k,im: INTEGER; BEGIN im := 1; FOR k := 2 TO n DO IF m[k] > m[im] THEN im := k; WRITELN('max=',im) END. Программа настолько проста и традиционна, что не требует особых комментариев. Отметим только, что для простоты отладки4 элементы массива не вводятся с клавиатуры, а инициализируются входящими в текст программы значениями с помощью механизма так называемых типизированных констант. Разумеется, вместо этого для ввода может быть написан и стандартный цикл FOR k := 1 TO n DO READLN(m[k]). Существует большое количество способов организации обработки массивов. Помимо рассмотренной выше традиционной реализации, можно дополнительно выделить итерационный и рекурсивный методы. Опишем подробнее названные технологии обработки массивов на примере классической задачи сортировки массива. Примечание. В том, что такой сложности задание соответствует уровню проведения выпускного экзамена, свидетельствуют задачи под номером 3, предлагаемые в качестве образцов в билетах № 12 базового и № 17 профильного уровня (см. [1] или [2]). Пример итеративной обработки массива Рассмотрим итерационный способ сортировки элементов одномерного числового массива в порядке возрастания, суть которого заключается в следующем. Просматривая массив, будем менять местами его соседние элементы в тех случаях, когда они нарушают требуемый порядок, иными словами, больший элемент оказывается в положении с меньшим индексом. Очевидно, что каждая такая перестановка “соседей” с позиций сортировки улучшает ситуацию в массиве, но одного “прохода вдоль массива” скорее всего будет недостаточно. Максимальное число просмотров равняется количеству элементов массива без единицы, что достигается при наиболее неудачной начальной расстановке (когда самое маленькое число стоит последним). Тем не менее вполне возможны ситуации, когда требуемый порядок по указанному алгоритму удастся получить за меньшее число проходов; в частности, в предельном случае, когда массив уже упорядочен, в этом можно убедиться единичным просмотром. Каждый просмотр массива, приближающий к решению поставленной задачи (причем результат обработки всегда служит начальным состоянием для нового просмотра), в компьютерной литературе называют итерацией. В словаре [3], например, дается такое определение данного термина: итерация — это “повторение пошагового процесса, когда результат предыдущего шага (шагов) используется для получения результата следующего шага”. Вообще говоря, любой цикл обработки массивов есть итерация. Правда, как правило, итерационными алгоритмами чаще всего называют такие, в которых количество повторений заранее неизвестно. Наш алгоритм сортировки является именно таким. Механизм сортировки описанным методом настолько широко известен, что здесь мы приведем только возможное решение на Паскале и совсем краткие пояснения к нему. PROGRAM sort_iter(INPUT, OUTPUT); CONST n = 10; m:ARRAY [1..n] OF INTEGER = (10,9,8,7,6,5,4,3,2,1); VAR i,p: INTEGER; c: BOOLEAN; BEGIN REPEAT c := FALSE; FOR i := 1 TO n - 1 DO IF m[i] > m[i + 1] THEN BEGIN p := m[i]; m[i] := m[i + 1]; m[i + 1] := p; c := TRUE END; FOR i := 1 TO n DO WRITE(m[i],' '); WRITELN; UNTIL NOT c; END. В программе в виде типизированной константы задан массив, который с точки зрения сортировки по возрастанию представляет наибольшую трудность. Итерационный процесс сортировки регулируется переменной c, которая имеет смысл наличия произведенных во время итерации перестановок: когда c после выполнения очередной итерации ложно, перестановок не было и сортировку можно прекратить. Первый из циклов FOR обеспечивает проход по массиву и обмен “неправильно стоящих” соседних элементов местами, а второй — служит для контрольного вывода на экран результатов каждой итерации сортировки. Заметим, что в билете № 5 в связи с рассмотрением физической задачи о расчете распределения температуры в стержне также был подробно описан пример итерационного алгоритма обработки одномерного массива. Примеры рекурсивной обработки массива Рекурсия — это способ решения задачи, при котором производится последовательное ее сведение к аналогичной, но более простой. К рекурсии в принципе можно свести любой циклический алгоритм, но не наоборот: известным примером может служить алгоритм закраски на экране произвольной области, который элементарно реализуется рекурсивным путем, зато решение этой задачи в виде циклов весьма затруднительно. Таким образом, любая задача по обработке массива может быть решена с помощью рекурсии. Мы возьмем в качестве примера ту же самую задачу сортировки массива, которая рассматривалась выше для итерационного метода. Попутно окажется, что нам потребуется написать нахождение максимума, что также можно сделать рекурсивно5. Следовательно, в итоге у нас будет сразу два примера рекурсивных алгоритмов. Рассмотрим возможную реализацию программы. PROGRAM sort_rekurs(INPUT, OUTPUT); CONST n = 10; m: ARRAY [1..n] OF INTEGER = (10,9,8,7,6,5,4,3,2,1); FUNCTION ind_max(k: INTEGER): INTEGER; VAR w: INTEGER; BEGIN IF k > 1 THEN BEGIN w := ind_max(k - 1); IF m[k] < m[w] THEN ind_max := w ELSE ind_max := k END ELSE ind_max := 1 END; PROCEDURE sort2(p: INTEGER); VAR im,c: INTEGER; BEGIN im := ind_max(p); c := m[im]; m[im] := m[p]; m[p] := c; FOR c := 1 TO n DO WRITE(m[c],' '); WRITELN; IF p > 2 THEN sort2(p - 1) END; BEGIN sort2(n) END. Описание начнем с рассмотрения рекурсивной функции ind_max для нахождения индекса максимального элемента. Ее рекурсивная логика может быть сформулирована следующим образом. Решение задачи для массива из n элементов весьма трудоемко, поэтому его постепенно сводим к более простому: для n – 1, n – 2 и т.д. элементов (см. вызов ind_max(k-1), который и является рекурсивным вызовом функцией самой себя). Так поступаем до тех пор, пока ответ не станет тривиальным: в массиве из одного элемента индекс максимума равен индексу этого единственного элемента (в нашем случае 1). Далее производится “обратный ход” — зная текущее значение ind_max, соответствующее ему значение максимума сравниваем с текущим элементом массива, после чего индекс наибольшего из сравниваемых элементов запоминаем. Таким образом, отрабатывается последовательная цепочка рекурсивных вызовов и без всякого цикла организуется полный перебор всех элементов массива. Примечание. Понимание механизма вызова процедур6 делает возможность реализации их “самовызова” абсолютно очевидной; даже просто зная о факте разрешения вызова из одной процедуры другой, можно предсказать существование рекурсивности. Главная же проблема рекурсии заключается в том, чтобы организованный рассматриваемым способом процесс каким-то образом завершался. Теперь, рассматривая функцию ind_max как единое целое и не обращая внимания на ее внутреннюю логику, обсудим второй рекурсивный алгоритм — сортировку массива, описанную в рекурсивной процедуре sort2. Ее логика работы такова. В массиве размерности n находится максимальный элемент, и он меняется местами с последним. В результате самый последний элемент массива займет свое окончательное место и останется рассортировать массив уже меньшего размера, т.е. n – 1. Аналогичным образом задача последовательно решается для все меньшего и меньшего массива, пока не останется массив из одного элемента, в котором, естественно, сортировка уже не требуется: условие p > 2 предотвращает вызов sort2(1) и процесс рекурсии благополучно завершается. Примечание. Имеющийся в sort2 цикл вывода массива на экран играет вспомогательную роль. Читатели при желании могут без труда самостоятельно оформить его в виде рекурсивной процедуры (печатаем первый элемент, а затем вызываем процедуру вывода оставшегося массива!), реализовав тем самым чисто рекурсивную программу без единого цикла. Основная программа состоит из единственной строки sort2(n), которая запускает процесс сортировки, начиная с полного массива. Примечание для учителей. Вполне возможно, что приведенное решение задачи для некоторых школ покажется слишком сложным. В этом случае вполне можно ограничиться рекурсивным решением ее части — нахождением положения максимума в массиве. Вообще сам факт наличия вопроса о рекурсии7 в тексте официальных “министерских” билетов для выпускных экзаменов в пору, когда слово “программирование” для многих методистов стало едва ли не ругательным, весьма наглядно демонстрирует тот идейный разброд, который внесла в содержание курса информатики энергичная борьба за наполнение школьного курса прикладными офисными технологиями! Все обсуждавшиеся выше примеры рассматривали одномерные массивы данных. Они являются наиболее простыми и, кроме того, естественным образом согласуются с принципами организации памяти компьютера: согласно классическим идеям фоннеймановской архитектуры, память — это линейный массив пронумерованных ячеек. Следовательно, остается лишь получить формулу пересчета значений индексов в адреса ОЗУ и с элементами такого массива можно легко работать. В математике, физике и некоторых других науках тем не менее широко используются и многомерные массивы. Поэтому такие структуры не могли не появиться в языках программирования. Фактически есть два способа определения многомерных массивов: непосредственный и создание сложной структуры. Мы ограничимся обсуждением двумерных массивов; обобщение для большей размерности делается аналогично. На языке Паскаль, например, эти два способа описания массивов выглядят так: m1: ARRAY [1..3, 1..5] OF REAL; m2: ARRAY [1..3] OF ARRAY [1..5] OF REAL; Примечание. Обращение к элементам массивов m1 и m2 отличаются: они записываются как m1[i,j] и m2[i][j] соответственно. В некоторых простых языках программирования типа Basic используется только традиционная математическая (“матричная”) форма представления массивов, а в языках с более развитыми средствами создания данных, в частности Паскале, допустимы обе формы. Подчеркнем, что если в языке программирования для индексов допустимы не только целочисленные типы (в Паскале в том числе), то индексы многомерных массивов не обязательно имеют одинаковый тип: например, один индекс может быть целочисленным, а другой являться символом. С математической точки зрения для увеличения размерности массива достаточно формально приписать еще один индекс. Однако для реализации такой структуры в памяти компьютера потребуется как-то приспособить многомерную структуру данных к хранению в одномерной памяти. “За исключением языка Fortran, все языки хранят двумерные массивы как последовательности строк… Такое размещение вполне естественно, поскольку сохраняет идентичность двумерного массива и массива массивов”. [4] Приведенный рисунок поясняет идею формирования двумерного массива данных в “линейном” ОЗУ компьютера. Учитывая, что все элементы массива однородны (имеют один и тот же тип и, следовательно, занимают одинаковое место в памяти), получить формулу пересчета индексов в требуемый адрес ОЗУ является несложной задачей. И хотя школьных знаний для этого вполне достаточно, мы не будем сейчас этим заниматься. Заметим лишь, что в 32-разрядных процессорах Intel специально предусмотрены аппаратные методы адресации, в которые заложены такие формулы для данных стандартной длины (1, 2, 4 и даже 8 байт), что существенно облегчает для программиста (или для компилятора) доступ к элементам массивов. Заинтересовавшиеся читатели могут познакомиться с формулами для масштабированной базово-индексной адресации (одномерные массивы) и для аналогичного метода со смещением (двумерные), например, по книге [5]. Литература 1. Примеры задач к билетам. Информатика, 2006, № 6, с. 3–16. 2. Примеры задач к билетам. Информатика и образование, 2006, № 3, с. 24–30. 3. Фридланд А.Я. Информатика и компьютерные технологии: Основные термины: Толковый словарь / А.Я. Фридланд, Л.С. Ханамирова, И.А. Фридланд. М.: ООО “Издательство Астрель”: ООО “Издательство АСТ”, 2003, 272 с. 4. Бен-Ари М. Языки программирования. Практический сравнительный анализ. М.: Мир, 2000, 366 с. 5. Гук М. Процессоры Intel: от 8086 до Pentium II. СПб.: Питер, 1997, 224 с. 2. Изображение на бумажном носителе состоит из нескольких частей. Отсканировать части изображения и объединить их в одно растровое изображение. Отретушировать получившееся изображение и сохранить его в файле. Решение данной задачи (после сканирования частей изображения) может быть выполнено в любом растровом графическом редакторе (в частности, в редакторе Paint). Для получения качественного итогового изображения рекомендуется воспользоваться редактором Adobe Photoshop. Не будем здесь приводить детального описания решения задачи. 3. Определить информационный объем переданного сообщения за определенный период времени при заданной пропускной способности канала. Пример. Модем передает сообщения со скоростью 14 400 бит в секунду. Изображение какого размера (в формате без сжатия) может передать модем за три минуты постоянной работы, если используется палитра из 65 тысяч цветов? Решение. Предположим для определенности, что палитра составляет 65536 = 216 цветов. Тогда для кодирования информации об одной точке требуется 2 байта. 14 400 бит/с = 1800 байт/с. За 3 мин. = 180 с будет передано 180 х 1800 = 324 000 байт ( 316,4 Кб) изображения или информация о 162 000 точек изображения. Варианты заданий 1. Информация по электронной почте через модем передается со скоростью 9600 бит/с. Сколько времени понадобится, чтобы передать по электронной почте субботний выпуск газеты “Комсомольская правда”, если ее объем 3 условных печатных листа (1 условный печатный лист газеты с иллюстрациями 512 Кб)? 2. В течение урока 12 учеников пишут диктант в 10 000 символов. Оцените, сколько минут понадобится, чтобы переслать поочередно работы всех учеников на ПК учителя при скорости пересылки в 9600 бит/с? Действительно, для однократного вычисления по единственной не слишком сложной формуле обычно пользуются калькулятором, а не пишут программу. 1 В Паскале указаны граничные значения индекса (точнее говоря, тип данных ограничение, частным случаем которого как раз является диапазон целых чисел), в Си — количество элементов, в VBA — максимальное значение индекса (минимальное, как правило, равно 0, что упрощает расчеты с индексами, но есть оператор его установки в 1). 2 3 real, float и variant соответственно. У автора, как у практика, большое сочувствие вызывает предлагаемая ученикам в образцах к билетам задача “написать и отладить программу ввода и сортировки… массива из 20 элементов”. 4 Авторы рекомендуют провести сравнение рекурсивного поиска положения максимума с написанной традиционным способом программой ind_max, приведенной выше. 5 Многие методисты охотно включают в программу школьного курса информатики изучение стека и других динамических структур данных; при этом ни один из них не упоминает, что именно этот самый стек, аппаратным образом организованный, лежит в основе механизма реализации вложенных процедур (и даже передачи им параметров!). 6 Рекурсию можно считать понятием третьего(!) уровня сложности в программировании: алгоритмические структуры — автономные процедуры и функции — особенности их “самовызова”. 7 Билет № 8 1. Основные понятия и операции формальной логики. Законы логики. Логические переменные. Логические выражения и их преобразования. Построение таблиц истинности логических выражений Алгебра логики — раздел математики, изучающий высказывания, рассматриваемые с точки зрения их логических значений (истинности или ложности) и логических операций над ними. Под логическим высказыванием понимается любое повествовательное предложение, в отношении которого можно однозначно сказать, истинно оно или ложно. Например, логическим высказыванием будет “Земля — третья планета от Солнца”, но не является таковым “Довольно морозная в этом году зима”. Чаще на практике приходится иметь дело с высказывательными формами — повествовательными предложениями, прямо или косвенно содержащими переменные; высказывательная форма становится логическим высказыванием, если значения всех переменных, входящих в нее, заданы. Например, высказывательная форма “x кратно 5” при x = 34 ложна, а при x = 105 — истинна. В языках программирования высказывательные формы записываются в виде логических выражений. Буквы, обозначающие переменные высказывания, называются высказывательными переменными (логическими переменными). Простые логические высказывания могут быть объединены в более сложные — составные — с использованием логических операций. Основными логическими операциями являются НЕ (отрицание, или инверсия), И (конъюнкция, или логическое умножение), ИЛИ (дизъюнкция, или логическое сложение). Рассмотрим более подробно логические операции. Если для арифметических операций используются таблицы сложения и умножения, задающие правила выполнения этих операций для цифр системы счисления и которые в дальнейшем используются при выполнении сложения и вычитания, умножения и деления соответственно, так и для логических операций строят аналогичные таблицы, называя их таблицами истинности. Операция инверсии (отрицания) выполняется над одним операндом (так в математике называются величины, над которыми выполняют ту или иную операцию). Общее правило, заложенное в построение таблицы истинности для этой операции, звучит так: отрицание изменяет значение операнда на противоположное. Обозначение операции: A, . Операция дизъюнкции выполняется над двумя операндами. Общее правило, заложенное в построение таблицы истинности для этой операции, звучит так: дизъюнкция ложна тогда и только тогда, когда ложны оба операнда. В таблице истинности перечисляются все возможные сочетания значений операндов и соответствующие значения операции. В литературе операцию дизъюнкции обозначают по-разному: ИЛИ, . В языках программирования также имеется эта операция. В Pascal и Вasic она обозначается OR, в С/C++, JavaScript — ||, и т.д. Логическим сложением эту операцию называют по той причине, что если заменить значение истина на 1, а ложь — на 0, то таблица истинности в определенной мере будет соответствовать таблице сложения в двоичной системе счисления. В действительности роль дизъюнкции в алгебре логики аналогична роли операции сложения в арифметике. Операция конъюнкции выполняется над двумя операндами. Общее правило, заложенное в построение таблицы истинности для этой операции, звучит так: конъюнкция истинна тогда и только тогда, когда истинны оба операнда. В таблице истинности перечисляются все возможные сочетания значений операндов и соответствующие значения операции. В литературе операцию конъюнкции обозначают по-разному: И, , & (достаточно часто в записи выражений знак конъюнкции пропускают по аналогии со знаком умножения в записи алгебраических выражений). В языках программирования также присутствует эта операция. В Pascal и Basic она обозначается AND, в С/C++, JavaScript — &&, и т.д. Логическим же умножением эту операцию называют по той причине, что если заменить значение истина на 1, а ложь — на 0, то таблица истинности будет соответствовать таблице умножения в двоичной системе счисления. Операция следования (импликации) выполняется над двумя операндами. Общее правило, заложенное в построение таблицы истинности для этой операции, звучит так: импликация ложна, если из истины следует ложь, и истинна во всех остальных случаях. В таблице истинности перечисляются все возможные сочетания значений операндов и соответствующие значения операции (обозначается импликация обычно ). Операция эквивалентности (эквиваленции) выполняется над двумя операндами. Общее правило, заложенное в построение таблицы истинности для этой операции, звучит так: эквиваленция истинна тогда и только тогда, когда оба операнда принимают одинаковые значения. В таблице истинности перечисляются все возможные сочетания значений операндов и соответствующие значения операции (обозначается эквиваленция обычно ). Свойства логических операций (или законы логики; знак “ “эквивалентно”, “тождественно истинно”): ” обозначает Логические выражения определяют порядок вычисления логического значения. Путем преобразования исходных логических выражений с использованием законов логики можно получать равносильные им более простые выражения. В общем случае равносильность логических выражений определяется совпадением таблиц истинности для этих выражений. Пример 1. Упростить выражение и убедиться, что результат равносилен исходному выражению. (в записи выражения знак конъюнкции пропущен). Преобразование выполним последовательно. Рассмотрим вторую скобку: . По закону поглощения получаем Y. В третьей скобке используем закон де Моргана: . Таким образом, получили . Используя законы коммутативный, противоречия, а также правило , приходим к выводу, что выражение . Таким образом, . Предлагаем читателю самостоятельно, с помощью составления таблиц истинности для исходного и конечного выражений, убедиться в их равносильности. Пример 2. Доказать, что выражение является тавтологией1. Проведем доказательство путем упрощения исходного выражения. Проведем доказательство путем составления таблицы истинности для данного выражения: Таким образом, вновь получаем тот же результат: выражение является тавтологией. Литература 1. Шауцукова Л.З. Информатика: Учебное пособие для 10–11-х классов общеобразовательных учреждений. 2-е изд., дораб. М.: Просвещение, 2002, 416 с. 2. Андреева Е.В. Математические основы информатики. Элективный курс: Учебное пособие / Е.В. Андреева, Л.Л. Босова, И.Н. Фалина. М.: БИНОМ. Лаборатория Знаний, 2005, 328 с. 3. Семакин И., Залогова Л., Русаков С., Шестакова Л. Информатика: учебник по базовому курсу. М.: Лаборатория Базовых Знаний, 1998. 4. Угринович Н. Информатика и информационные технологии. Учебное пособие для общеобразовательных учреждений. М.: БИНОМ, 2001, 464 с. (Введение в информатику, с. 13–16.) 5. http://comp-science.narod.ru. 1 Тавтология — тождественно истинное выражение. 2. С помощью электронной таблицы вычислить значение функции, заданной рекуррентным соотношением Пример. Получить в электронной таблице первые 15 значений функции n! Решение. Зададим факториал рекуррентным соотношением: an = an-1•n, a1 = 1 Пусть столбец A хранит значения n, а столбец B — n!. Тогда в ячейки A2:A16 занесем значения n от 1 до 15. В ячейку B2 поместим значение 1, а в ячейке B3 запишем формулу =B2 * A3, выражающую записанное рекуррентное соотношение; далее скопируем эту формулу во все последующие ячейки столбца и получим требуемый результат. Варианты заданий Получить в электронной таблице первые k значений последовательности (k задается учителем). . .3. Представить на языке программирования вычислительный алгоритм, записанный в виде блок-схемы. (Получить результат в виде значения переменной.) Пример. Написать программу, исполняющую алгоритм, записанный в виде нижеприведенной блок-схемы. Распечатать значение переменной с. Решение. QBasic B=0:C=1 While B <> 11 C=C+B*C B=B+1 Wend; PRINT C Pascal Var b, c: longint; Begin B := 0; C := 1; While B <> 11 do Begin C := C + B * C; B := B + 1 End; Writeln(C) End. C++ #include <iostream.h> void main() { long B, C; B = 0; C = 1; while (B != 11) { C = C + B * C; B++; } cout << C; } Результат вычислений: 39 916 800. Варианты заданий Написать программу, исполняющую алгоритм, записанный в виде одной из нижеприведенных блок-схем. Выполнить указанное задание. 1. Вывести значение переменной K для n = 12 981. 2. Вывести значение переменной P при k = 5. 3. Вывести значение переменной K для n = 12 981. 4. Какое количество членов ряда будет просуммировано при e = 10–2? . Билет № 9 1. Логические элементы и схемы. Типовые логические устройства компьютера: полусумматор, сумматор, триггеры, регистры. Описание архитектуры компьютера с опорой на составляющие ее логические устройства Обсудив в билете № 8 теоретические аспекты логических функций, сегодня мы поговорим об их практической реализации в виде логических элементов. Следует особо подчеркнуть, что в настоящее время основу всех компьютерных устройств (включая даже встроенные в бытовую технику!) составляют двоичные электронные логические элементы1. Поэтому понимание базовых идей их функционирования для представления об общей логике работы компьютера весьма полезно. Может показаться, что для реализации всевозможных логических функций требуется большое разнообразие логических элементов. Как ни удивительно, но это не так. Из теории логических функций следует, что достаточно их очень небольшого базового набора, чтобы с помощью различных комбинаций, его составляющих, можно было получить абсолютно произвольную функцию, сколь бы сложной она не была. Следовательно, и количество базовых логических элементов, которые соответствуют данным функциям, к счастью, невелико. Базисный набор может быть сформирован различными способами, но, как правило, используется классическая “тройка” логических операций И, ИЛИ, НЕ. Именно эта “тройка” применяется в книгах по логике, а также во всех языках программирования — от машинных кодов до языков высокого уровня. Обозначения логических элементов2, реализующих соответствующие операции, приведены на рис. 1a–b. Рис. 1. Обозначения основных логических элементов Внутренняя схема логического элемента может быть различной, более того, она может существенно совершенствоваться по мере развития технологий производства, но логические функции всегда остаются неизменными. Часто для удобства синтеза логических схем к перечисленному списку добавляют еще элемент “исключающее ИЛИ” (рис. 1г), который позволяет сравнивать двоичные коды на совпадение. Данная операция имеет и другие практически полезные свойства, в частности, восстанавливает исходные данные в случае повторного применения, что удобно использовать для временного наложения видеоизображений. Тем не менее классический базис не является единственным. Более того, для практической реализации логических схем инженеры предпочитают альтернативный вариант — на базе единственного комбинированного логического элемента И-НЕ (рис. 1д). Читатели, которые заинтересовались данным вопросом, могут обратиться к книге Р.Токхейма [2] или аналогичной, где показано, как из элементов И-НЕ можно построить все остальные примитивы классического базиса. Отметим, что на практике логические элементы могут иметь не только два, но и значительно большее количество входов (для примера см. рис. 4 на с. 24). Первоначально тезис о построении любых логических устройств на основе некоторого простого базиса был технически реализован “один к одному”: были разработаны и выпускались интегральные микросхемы (ИМС), соответствующие основным логическим действиям. Потребитель, комбинируя имеющиеся в его распоряжении элементы, мог получить схему с реализацией любой необходимой логики. Довольно быстро стало ясно, что подобное “строительство здания из отдельных кирпичиков” слишком трудоемко и не может удовлетворить постоянно растущие практические потребности. Промышленность увеличила степень интеграции микросхем и начала выпускать более сложные типовые узлы: триггеры, регистры, счетчики, дешифраторы, сумматоры и т.д. (продолжая аналогию со строительством, этот шаг, видимо, следует уподобить панельному способу домостроения). Новые микросхемы давали возможность реализовывать еще более сложные электронные логические устройства, но зато ассортимент выпускаемых микросхем расширился. Поскольку человечеству свойственно не останавливаться на достигнутом, рост возможностей породил новые потребности. Необходимым образом последовал переход к большим интегральным схемам (БИС), представлявшим собой функционально законченные узлы, а не отдельные компоненты для их создания (как тут не вспомнить блочный метод постройки здания из готовых комнат). Наконец, дальнейшая эволюция технологий производства ИМС привела к настолько высокой степени интеграции, что в одной БИС содержалось функционально законченное изделие: часы, калькулятор, небольшая специализированная ЭВМ. Примечание. Немногие, вероятно, знают, что появление первых микропроцессоров было связано вовсе не с попытками воспроизвести ЭВМ в одном кристалле: действительной причиной явилось стремление существенно ограничить ассортимент логических микросхем, повышая их универсальность и, как следствие, понижая стоимость за счет резкого роста объемов производства. Весьма поучительная история о замене дюжины специализированных микросхем одной программируемой, что, собственно, и привело к созданию инженером М.Хоффом первого микропроцессора Intel 4004, рассказывается в книге А.П. Частикова [3]. Если мы посмотрим на внутреннее устройство типичного современного компьютера, то увидим там ИМС очень высокого уровня интеграции: микропроцессор, модули ОЗУ, контроллеры внешних устройств и др. Фактически каждая микросхема или небольшая группа микросхем3 образует функционально законченный блок. Уровень сложности блока таков, что разобраться в его внутреннем устройстве для неспециалиста не то чтобы нецелесообразно, а просто невозможно. К тому же выпускаемые промышленностью ИМС постоянно совершенствуются и усложняются. В результате оказывается, что для понимания наиболее общих принципов работы современной ЭВМ удобнее и правильнее рассмотреть несколько типовых узлов, а изучение поведения отдельных БИС заменить изучением функциональной схемы компьютера. В качестве характерных цифровых устройств мы выберем два наиболее важных и интересных — сумматор и триггер. Первое из них замечательно тем, что составляет основу арифметико-логического устройства процессора, а второе, будучи универсальным устройством для хранения одного бита информации, имеет еще более широкое применение — от регистров процессора до элементов памяти. Дополнительно подчеркнем, что выбранные логические схемы принадлежат к разным типам. Выходные сигналы сумматора определяются исключительно установившимися на входе напряжениями и никак не зависят от поступавших ранее сигналов (в литературе такие схемы часто называют комбинационными). Состояние триггера, напротив, зависит от предыстории, т.е. схема имеет память. Перейдем к описанию логической схемы сумматора. Для простоты ограничимся изучением работы отдельного двоичного разряда. В этом случае сумматор будет содержать три входа — бит первого слагаемого А, второго — В и перенос из предыдущего разряда Ci (обозначение происходит от английских слов Carry in — входной перенос). Тем, для кого термин перенос звучит незнакомо, уместно вспомнить, что означает словосочетание “ноль пишем один в уме”, которое они часто повторяли про себя, суммируя в младших классах числа на листке бумаги. Таблица истинности для полного одноразрядного сумматора имеет вид: Особых комментариев к этой таблице не требуется. Может быть, только стоит напомнить тот факт, что 1 + 1 = 0 и 1 “в уме” (т.е. на выходе Co, что расшифровывается как Carry out, т.е. выходной перенос), поскольку все действия выполняются в двоичной системе. Построить сразу полный сумматор — задача для начинающего непростая. Она еще более усложняется, если при этом требуется использовать логические элементы из реально существующего ассортимента интегральных микросхем. Вариант схемы сумматора, приведенный, например, в книгах [4] и [5], состоит из 9 логических элементов. Минимизированная схема, полученная в [6], построена на базе 6 классических элементов. К счастью, для понимания принципов работы суммирующих схем ЭВМ существует еще более простое решение, если воспользоваться логическими элементами “исключающее ИЛИ” [7]. При построении схемы удобно сумматор представить в виде двух полусумматоров, из которых первый складывает разряды А и В, а второй к полученному результату прибавляет бит переноса из предыдущего разряда Ci. Таблица истинности для полусумматора значительно упрощается: Теперь мысленно объединим в приведенной таблице столбцы A, B и Co. Что напоминает вам полученная таблица? Конечно же базовый логический элемент И! Аналогично, сравнив первые три столбца A, B и S с таблицей истинности для элемента “исключающее ИЛИ”, можно убедиться, что они совпадут (рекомендуем читателям самостоятельно убедиться в этом, а также проверить тот факт, что сумма S равна 1 только в случае несовпадения исходных битов). Таким образом, для реализации полусумматора достаточно соединить параллельно входы двух логических элементов (см. рис. 2a)! Рис. 2. Простейшая реализация сумматора Заметим, что для суммирования младшего разряда одного полусумматора уже достаточно, т.к. в этом случае сигнал входного переноса отсутствует. А если соединить два полусумматора, как показано на рис. 2б, то получится полный сумматор, способный осуществить сложение одного бита чисел с учетом возможности переноса. Перейти к многоразрядным числам можно, например, путем последовательного соединения соответствующего количества сумматоров. Мы не будем обсуждать возникающие при этом детали, связанные с необходимостью ускорения процесса переноса в такой схеме; думается, мы уже изучили вполне достаточно, чтобы иметь некоторое представление о том, как компьютер производит свои вычисления. Стоит особо подчеркнуть, что сумматор играет важную роль в реализации не только сложения, но и других арифметических действий. Например, вычитание обычно заменяется сложением с дополнительным кодом вычитаемого, а алгоритм умножения “столбиком” легко сводится к комбинации сложений и сдвигов. Таким образом, сумматор необходимой разрядности фактически является основой арифметического устройства современного компьютера. Рис. 3. Схема RS-триггера Перейдем теперь к описанию работы триггера. Его схема приведена на рис. 3, а таблица истинности имеет следующий вид: Как видно из рис. 3, триггер собран из четырех логических элементов И-НЕ, причем два из них играют вспомогательную роль инверторов входных сигналов. Триггер имеет два входа, обозначенные на схеме R и S, а также два выхода, помеченные буквой Q, — прямой и инверсный (черта над Q у инверсного выхода означает отрицание). Триггер устроен таким образом, что на прямом и инверсном выходах сигналы всегда противоположны. Как работает триггер? Пусть на входе R установлена 1, а на S — 0. Логические элементы D1 и D2 инвертируют эти сигналы, т.е. меняют их значения на противоположные; в результате на вход элемента D3 поступает 1, а на D4 — 0. Поскольку на одном из входов D4 имеется 0, независимо от состояния другого входа на его выходе (он же является инверсным выходом триггера!) обязательно установится 1. Эта единица передается на вход элемента D3 и в сочетании с 1 на другом входе порождает на выходе D3 логический 0. Итак, при R = 1 и S = 0 на прямом выходе триггера устанавливается 0, а на инверсном — 1. Обозначение состояния триггера по договоренности связывается с прямым выходом. Тогда при описанной выше комбинации входных сигналов результирующее состояние можно условно назвать нулевым: говорят, что триггер устанавливается в 0 или сбрасывается. Сброс по-английски называется Reset, отсюда вход, появление сигнала на котором приводит к сбросу триггера, принято обозначать буквой R. Проведите аналогичные рассуждения для “симметричного” случая R = 0 и S = 1. Вы увидите, что теперь, наоборот, на прямом выходе получится логическая 1, а на инверсном — 0. Триггер перейдет в единичное состояние — установится (установка по-английски Set). Далее рассмотрим наиболее распространенную и интересную ситуацию R = 0 и S = 0, когда входных сигналов нет. Тогда на входы элементов D3 и D4, связанные с R и S, будет подана 1, и их выходной сигнал будет зависеть от напряжения на других входах. Нетрудно убедиться, что такое состояние будет устойчивым. Пусть, например, на прямом выходе была 1. Тогда наличие единиц на обоих входах элемента D4 “подтверждает” нулевой сигнал на его выходе. В свою очередь, наличие 0 на инверсном выходе передается на D3 и поддерживает его выходное единичное состояние. Аналогично доказывается устойчивость картины и для противоположного состояния триггера, когда Q = 0. Таким образом, при отсутствии входных сигналов триггер сохраняет свое “предыдущее” состояние. Иными словами, если на вход R подать 1, а затем убрать, триггер установится в нулевое состояние и будет его сохранять, пока не поступит сигнал на другой вход S. В последнем случае он перебросится в единичное состояние и после прекращения действия входного сигнала будет сохранять на прямом выходе 1. Мы видим, что триггер обладает замечательным свойством: после снятия входных сигналов он сохраняет свое состояние, а значит, может служить устройством для хранения одного бита информации. В заключение проанализируем последнюю комбинацию входных сигналов R = 1 и S = 1. Нетрудно убедиться (проделайте необходимые рассуждения самостоятельно), что в этом случае на обоих выходах триггера установится 1! Такое состояние, помимо своей логической абсурдности, еще и является неустойчивым: после снятия входных сигналов триггер случайным образом перейдет в одно из своих устойчивых состояний. Вследствие этого комбинация R = 1 и S = 1 на практике не используется и является запрещенной. Мы рассмотрели простейший RS-триггер. Существуют и другие разновидности этого интересного и полезного устройства. Все они различаются не столько принципом работы, сколько входной логикой, усложняющей “поведение” триггера. Подобно тому, как объединяются для обработки двоичных чисел однобитовые схемы сумматоров, для хранения многоразрядных данных триггеры объединяются в единый блок, называемый регистром. Над регистром, как над единым целым, можно производить ряд стандартных операций: сбрасывать (обнулять), заносить в него код и некоторые другие. Причем часто регистры способны не просто хранить информацию, но и обрабатывать ее. Типичными примерами такого типа могут служить регистр, который способен сдвигать находящийся в нем двоичный код, или регистр, подсчитывающий количество поступающих импульсов, — счетчик. С выходов триггеров регистра сигналы могут поступать на другие цифровые устройства. Особый интерес с точки зрения принципов функционирования компьютера представляет схема анализа равенства (или неравенства) регистра нулю, которая позволяет организовать по этому признаку условный переход. Для n-разрядного двоичного регистра потребуется n-входовый элемент И4 (см. рис. 4), сигналы для которого удобнее снимать с инверсных выходов триггеров. Фактически такая схема анализа выполняет комбинированную логическую операцию НЕ-И. Рис. 4. Схема анализа состояния регистра В самом деле, пусть содержимое всех битов регистра равно 0. Тогда на вход элемента И с инверсных выходов триггеров поступают все 1 и результат z = 1. Если же хотя бы один из разрядов отличен от 0, то с его инверсного выхода снимается 0 и этого, как известно, уже достаточно, чтобы получить выходной сигнал z = 0 независимо от состояния всех остальных входов элемента И. Таким образом, изображенная на рис. 4 логическая схема вырабатывает управляющий сигнал равенства результата 0, что может использоваться, например, для организации ветвления по соответствующему условию. Кстати, переход по знаку числа реализовать еще проще — достаточно проанализировать состояние знакового (обычно старшего) разряда: если он установлен в 1, то регистр содержит отрицательное число [5]. Наличие управляющих признаков, устанавливаемых в зависимости от полученного результата операции, является неотъемлемым свойством процессоров. Оно необходимо для организации выполнения инструкций ветвления и цикла5. Триггеры очень широко применяются в компьютерной технике. Помимо уже описанного применения в составе разнообразных регистров, на их основе могут еще изготовляться быстродействующие ИМС статического ОЗУ (в том числе кэш-память). Так что в состав любого микропроцессора входит множество триггеров, выполняющих самые разнообразные функции. Мы с вами изучили только два из многочисленных устройств вычислительной техники — сумматор и регистры. Казалось бы, много ли можно понять, зная всего два этих устройства? Оказывается, не так уж и мало. Можно, например, весьма успешно попытаться представить себе, как строится арифметическое устройство процессора. В самом деле, подумаем, каким образом можно спроектировать схему для реализации сложения двух чисел. Очевидно, что для хранения исходных чисел потребуется два триггерных регистра. Их выходы подадим на входы сумматора, так что на выходах последнего сформируются сигналы, соответствующие двоичному коду суммы. Для фиксации (запоминания) результирующего числа потребуется еще один регистр, который можно снабдить описанными выше схемами формирования управляющих признаков. Наша картина получается настолько естественной и реалистичной, что мы можем найти ее в наиболее подробной учебной литературе в качестве основы устройства простых учебных моделей компьютера. В частности, очень похоже выглядит описание внутреннего устройства процессора учебного компьютера “Нейман”, которое дано в книгах [8, 9]6. Подводя итоги, подчеркнем, что в процессе рассмотрения материала билета мы прошли путь от изучения простейшего единичного логического элемента до понимания наиболее общих идей построения весьма крупных узлов ЭВМ, таких, как арифметическое устройство. Следующий уровень знакомства с логикой работы компьютера — на уровне функциональных устройств (процессор, память и устройства ввода/вывода), будет подробно изложен в билете № 12. Примечание. Очевидно, что материал, который включается в экзаменационные билеты, имеет существенную значимость для изучаемого учебного предмета. В связи с этим автору данных строк особо хотелось бы подчеркнуть важность темы с точки зрения формирования у учеников некоторого единого представления об устройстве компьютера. Мировоззрение складывается не только (а может, даже и не столько) в ходе рассуждений “о высоких материях”, но и в результате создания некоторой единой связной картины изучаемого материала. Очень важно, чтобы темы отдельных уроков не казались независимыми, выбранными по странной прихоти какого-то неведомого теоретика. В этом смысле значение вопроса, соединяющего отдельные логические элементы с узлами реального вычислительного устройства, трудно переоценить. Иными словами, ценность материала заключается в том, что он “перекидывает мостик” между разрозненными абстрактными знаниями о логических элементах и архитектурой реального компьютера. В школьной практике это служит надежным средством борьбы с традиционным “Зачем все это нужно?”. Литература 1. Ямпольский В.С. Основы автоматики и электронно-вычислительной техники: Учебное пособие для студентов физико-математического факультета педагогических институтов. М.: Просвещение, 1991, 223 с. 2. Токхейм Р. Основы цифровой электроники. М.: Мир, 1988, 392. 3. Частиков А.П. История компьютера. М.: Информатика и образование, 1996, 128 с. 4. Касаткин В.Н. Информация, алгоритмы, ЭВМ: Пособие для учителя. М.: Просвещение, 1991, 192 с. 5. Андреева Е.В., Босова Л.Л., Фалина И.Н. Математические основы информатики. Элективный курс. М.: БИНОМ. Лаборатория Знаний, 2005, 328 с. 6. Акулов О.А., Медведев Н.В. Информатика: базовый курс: Учебное пособие для студентов вузов. М.: Омега-Л, 2005, 552 с. 7. Кушниренко А.Г., Лебедев Г.В., Зайдельман Я.Н. Информатика, 7–9-е классы: Учебник для общеобразовательных учебных заведений. М.: Дрофа, 2000, 336 с. 8. Основы информатики и вычислительной техники в базовой школе / Л.А. Залогова, С.В. Русаков, И.Г. Семакин, Е.К. Хеннер, Л.В. Шестакова; под ред. И.Г. Семакина. Пермь, 1995. 9. Семакин И.Г. Информатика. Беседы об информации, компьютерах и программах: Книга для учащихся 8–9-х классов. Часть 2. Пермь: Изд-во Пермского университета, 1997, 168 с. 10. Информатика в понятиях и терминах: Книга для учащихся старших классов средней школы / Г.А. Бордовский, В.А. Извозчиков, Ю.В. Исаев, В.В. Морозов. Под ред. В.А. Извозчикова. М.: Просвещение, 1991, 208 с. 11. Шауцукова Л.З. Информатика: Учебное пособие для 10–11-х классов общеобразовательных учреждений. М.: Просвещение, 2003, 416 с. 2. С помощью электронной таблицы построить график функции Пример. С помощью электронной таблицы построить график функции Решение. 1) Необходимо протабулировать функцию (вычислить ее значения) на заданном отрезке. Табулирование будем осуществлять с шагом 0,1. 2) С помощью мастера диаграмм выполнить построение графика. Результат представлен на рисунке. Варианты заданий С помощью электронной таблицы построить график функции y = F(x) на заданном отрезке [a, b]. 3. Записать на языке программирования алгоритм для вычисления значения функции при заданных значениях аргументов. Произвести вычисления Пример. Написать алгоритм, вычисляющий значение функции y = |x2 + 3x + 1| для любого х. Решение. Алгоритм решения этой задачи является линейным. Необходимо ввести x, вычислить значение y и вывести результат. Варианты заданий Достаточно давно в некоторых промышленных автоматических устройствах использовались пневматические логические элементы, в которых электрический ток заменяло движение воздуха. 1 Обозначения логических элементов не являются строго стандартизированными, в частности, в иностранных книгах они существенно иные; в статье используются обозначения согласно учебнику [1]. 2 3 Часто используется термин чипсет — набор чипов, т.е. микросхем. Если n велико, то стандартных ИМС с таким количеством входов может не быть и схема, выполняемая на базе отдельных ИМС, усложнится; в то же время при проектировании БИС количество разрядов принципиального значения не имеет. 4 Важно понимать, что наличие в системе команд процессора специальных инструкций цикла вовсе не обязательно. 5 6 К сожалению, в учебник по базовому курсу авторы этот материал не включили. Билет № 10 1. Моделирование как метод познания. Информационные (нематериальные) модели. Назначение и виды информационных моделей. Основные этапы компьютерного моделирования. Построение информационной модели для решения поставленной задачи из любой предметной области, ее анализ на адекватность объекту и целям моделирования На современном этапе развития человечества нельзя найти такой области знания, в которой в той или иной мере не использовались бы модели. Науки, в которых обращение к модельному исследованию стало систематическим, не полагаются больше лишь на интуицию исследователя, а разрабатывают специальные теории, выявляющие закономерности отношений между оригиналом и моделью. История моделирования насчитывает тысячи лет. Человек рано оценил и часто применял в практической деятельности метод аналогий. Моделирование прошло долгий путь — от интуитивного использования аналогий до строгого научного метода. В этом вопросе рассматриваются как общие вопросы моделирования, так и компьютерного математического моделирования в частности. Термины “модель”, “моделирование” являются неразрывно связанными, поэтому целесообразно обсуждать их одновременно. Слово модель произошло от латинского слова modelium, которое означает: мера, образ, способ и т.д. Его первоначальное значение было связано со строительным искусством, и почти во всех европейских языках оно употреблялось для обозначения образа или прообраза, или вещи, сходной в каком-то отношении с другой вещью. В энциклопедическом словаре “Информатика” под моделью объекта понимается “другой объект (реальный, знаковый или воображаемый), отличный от исходного, который обладает существенными для целей моделирования свойствами и в рамках этих целей полностью заменяет исходный объект”. В философской литературе можно найти близкие по смыслу определения, которые обобщаются так: “Модель используется при разработке теории объекта в том случае, когда непосредственное исследование его не представляется возможным вследствие ограниченности современного уровня знания и практики. Данные о непосредственно интересующем исследователя объекте получаются путем исследования другого объекта, который объединяется с первым общностью характеристик, определяющих качественноколичественную специфику обоих объектов”. В схожем определении В.А. Штоффа [10] можно выделить такие признаки модели: это мысленно представляемая или материально реализуемая система; она воспроизводит или отображает объект исследования; она способна замещать объекты; ее изучение дает новую информацию об объекте. В дискуссиях, посвященных гносеологической (гносеология — теория познания) роли и методологическому значению моделирования, термин “моделирование” употреблялся как синоним познания, теории, гипотезы и т.п. Например, часто термин “модель” употребляется как синоним термина “теория” в случае, когда теория еще недостаточно разработана, в ней мало дедуктивных шагов, много упрощений, неясностей (например, в физике термин “модель” может употребляться для обозначения предварительного наброска или варианта будущей теории при условии значительных упрощений, вводимых с целью обеспечения поиска путей, ведущих к построению более точной и совершенной теории). А.И. Уемов [14] выделяет обобщенные признаки модели: 1. Модель не может существовать изолированно, потому что она всегда связана с оригиналом, т.е. той материальной или идеальной системой, которую она замещает в процессе познания. 2. Модель должна быть не только сходна с оригиналом, но и отлична от него, причем модель отражает те свойства и отношения оригинала, которые существенны для того, кто ее применяет. 3. Модель обязательно имеет целевое назначение. Таким образом, модель — это упрощенный (в том или ином смысле) образ оригинала, неразрывно с ним связанный, отражающий существенные свойства, связи и отношения оригинала; система, исследование которой служит инструментом, средством для получения новой и (или) подтверждения уже имеющейся информации о другой системе. Возвращаясь к понятию “моделирование”, следует подчеркнуть (и этот факт подчеркивается в работах ученых, применяющих метод моделирования), что моделирование в широком смысле слова есть не только процесс построения модели, но и ее исследования. Еще одно понятие, неразрывно связанное с моделированием, — формализация. Формализация — это один из этапов моделирования, в результате завершения которого, собственно, и появляется модель процесса или явления. Приведем выдержку из работы Н.П. Бусленко [16], где, на наш взгляд, отражены основные особенности этого процесса: “Формализации любого реального процесса предшествует изучение структуры составляющих его явлений. В результате этого появляется так называемое “содержательное описание процесса”, которое представляет собой первую попытку четко изложить закономерности, характерные для исследуемого процесса, и постановку прикладной задачи. Содержательное описание является исходным материалом для последующих этапов формализации: построения формализованной схемы процесса и модели для него”. Более детально понятие и процесс формализации обсуждается в разделе “Этапы компьютерного математического моделирования”. Несколько слов о натурном и модельном экспериментах, о специфике модели в качестве средства экспериментального исследования в сравнении с другими экспериментальными средствами. Рассмотрение материальных моделей в качестве средств, орудий экспериментальной деятельности вызывает потребность выяснить, чем отличаются те эксперименты, в которых используются модели, от тех, где они не применяются. Под экспериментом понимается “вид деятельности, предпринимаемой в целях научного познания, открытия объективных закономерностей и состоящий в воздействии на изучаемый объект (процесс) посредством специальных инструментов и приборов”. “Специфика эксперимента как формы практической деятельности в том, что эксперимент выражает активное отношение человека к действительности. В силу этого в гносеологии проводится четкое различие между экспериментом и научным познанием. Хотя всякий эксперимент включает и наблюдение как необходимую стадию исследования, однако в нем, помимо наблюдения, содержится и такой существенный для практики признак, как активное вмешательство в ход изучаемого процесса”. Существует особая форма эксперимента, для которой характерно использование действующих моделей в качестве специальных средств экспериментального исследования. Такая форма называется модельным экспериментом. В отличие от обычного эксперимента, где средства эксперимента так или иначе взаимодействуют с объектом исследования, здесь взаимодействия нет, так как экспериментируют не с самим объектом, а с его заместителем. При этом объект-заместитель и экспериментальная установка объединяются, сливаются в действующей модели в одно целое. Таким образом, обнаруживается двоякая роль, которую модель выполняет в эксперименте: она одновременно является и объектом изучения, и экспериментальным средством. Для модельного эксперимента характерны следующие основные операции: 1) переход от натурального объекта к модели — построение модели (моделирование в собственном смысле слова); 2) экспериментальное исследование модели; 3) переход от модели к натуральному объекту, состоящий в перенесении результатов, полученных при исследовании, на этот объект. Модель входит в эксперимент, не только замещая объект исследования, но и может замещать условия, в которых изучается объект натурного эксперимента. Натурный эксперимент предполагает наличие теоретического момента лишь в начальный момент исследования — выдвижение гипотезы, ее оценку и т.д., теоретические соображения, связанные с конструированием установки, а также на завершающей стадии — обсуждение и интерпретация полученных данных, их обобщение; в модельном эксперименте необходимо также обосновать отношение подобия между моделью и натуральным объектом и возможность экстраполировать на этот объект полученные данные. В информатике часто используется понятие “информационная модель”. Отметим, что это понятие впервые встречается в работах В.М. Глушкова, было развито и детализировано В.К. Белошапкой и в настоящий момент прочно вошло в терминологический словарь науки “Информатика”. Обратимся к статье [8]: “Хочется подчеркнуть, что большинство авторов, оперирующих понятиями “информационная модель”, “информационное моделирование”, избегают определений типа “Информационной моделью называется…”, что вполне объяснимо сложностью данного понятия. Энциклопедический словарь содержит следующие рассуждения на эту тему: “Специалистов, работающих в направлении информатики, объединяет, во-первых, центральная для информатики идея того, что информационные процессы обладают свойствами, не зависящими от их физического воплощения и общими для всех сфер природы и общества, и, во-вторых, общая схема информатизации, т.е. представления изучаемых явлений и решаемых задач в виде систем, перерабатывающих информацию. Эта схема выглядит так. Сначала создается информационная математическая модель изучаемого объекта. Виды этих моделей разнообразны: формальные системы, автоматы, сети Петри, игровые модели и др. Выбор вида модели зависит от информационной сущности объекта, а не от его физической природы”. Здесь прослеживаются связь с математикой (“информационная математическая модель” рассматривается как нечто неразрывное) и предельно широкое толкование обсуждаемого понятия. Исходя из него, любое моделирование, отличное от создания материальных копий объекта (т.е. натурного моделирования), можно отнести к информационному”. Далее в статье обсуждаются различные аспекты информационного моделирования. Гораздо более общее определение дает “Толковый словарь по информатике”, предлагая на выбор два прямых определения: информационная модель — это а) “формализованное описание информационных структур и операций над ними”, б) “параметрическое представление процесса циркуляции информации, подлежащей автоматизированной обработке в системе управления”. Включение в понятие “информационное моделирование” практически всех видов моделей, имеющих отношение к процессу познания (поскольку это информационный процесс), целесообразнее заменить более узким: считать информационными моделями именно модели информации (данных и информационных процессов). Таким образом, масса численных и математических моделей сразу выпадает из круга информационных моделей. Классифицируя модели, разные авторы исходят из той терминологии и тех принципов, которые им наиболее привычны в силу рода их деятельности. В литературе, посвященной аспектам моделирования, представлены различные классификационные признаки, по которым выделены различные типы моделей. Остановимся на некоторых из них. Так, В.А. Штофф называет такие признаки, как способ построения (форма модели), качественная специфика (содержание модели). По способу построения модели бывают материальные и идеальные. Назначение материальных моделей — специфическое воспроизведение структуры, характера, протекания, сущности изучаемого процесса. Из материальных моделей можно выделить: а) физически подобные модели (они сходны с оригиналом по физической природе и геометрической форме, отличаясь от него лишь числовыми значениями параметров — действующая модель электродвигателя, паровой турбины); б) пространственно-подобные модели (сходство с оригиналом на основе физического подобия — макеты самолетов, судов); в) математически подобные модели (не имеют с оригиналом ни физического, ни геометрического сходства, но объект и модель описываются одинаковыми уравнениями — аналогия между механическими и электрическими колебаниями). В дальнейшем нас будут интересовать прежде всего идеальные (абстрактные) модели, поэтому остановимся на этом вопросе подробнее. В статье [8] выделяются такие виды абстрактных (идеальных) моделей. 1. Вербальные (текстовые) модели. Эти модели используют последовательности предложений на формализованных диалектах естественного языка для описания той или иной области действительности. 2. Математические модели — очень широкий класс знаковых моделей (основанных на формальных языках над конечными алфавитами), широко использующих те или иные математические методы. 3. Информационные модели — класс знаковых моделей, описывающих информационные процессы (возникновение, передачу, преобразование и использование информации) в системах самой разнообразной природы. Граница между вербальными, математическими и информационными моделями может быть проведена весьма условно; возможно, информационные модели следовало бы считать подклассом математических моделей. Однако в рамках информатики как самостоятельной науки, отделенной от математики, физики, лингвистики и других наук, выделение информационных моделей в отдельный класс является целесообразным. Вот какое определение понятия математическое моделирование предлагается в энциклопедическом словаре по информатике: “Математическое моделирование — это описание, воспроизведение, изучение и прогнозирование всевозможных процессов и явлений с помощью математических и вычислительных средств. Объект любой природы (физический, химический, биологический и т.д.), отображаемый с помощью математической модели, т.е. в терминах функций, уравнений, неравенств и других соотношений, может быть понят путем исследования и решения соответствующих математических задач”. И далее, “математическое моделирование позволяет имитировать в принципе невоспроизводимые или нежелательные ситуации, например, прогноз погоды, траекторию космического корабля, последствия ядерной войны”. Это определение близко авторам настоящей работы в силу того, что, во-первых, хорошо согласуется с рассмотренным ранее понятием “моделирование” (в широком смысле) и, во-вторых, отвечает целям нашего курса. По мере создания и совершенствования ЭВМ математическое моделирование все чаще использует мощнейшее техническое средство — компьютер. Более подробно об этом речь пойдет далее, а пока кратко обсудим основные этапы численного моделирования (компьютерного эксперимента). Общая схема процесса приведена на рисунке. Первый этап — определение целей моделирования. Основные из них, как предлагает А.Б. Горстко [3], таковы: 1) модель нужна для того, чтобы понять, как устроен конкретный объект, какова его структура, основные свойства, законы развития и взаимодействия с окружающим миром; 2) модель нужна для того, чтобы научиться управлять объектом (или процессом) и определить наилучшие способы управления при заданных целях и критериях; 3) модель нужна для того, чтобы прогнозировать прямые и косвенные последствия реализации заданных способов и форм воздействия на объект. Естественно, прежде чем формулировать цель исследования, необходимо всесторонне изучить структуру моделируемого объекта (процесса). После этого переходят к формализации объекта (процесса), результатом которой и будет в нашем случае математическая модель. Содержательное описание в словесной форме согласно Н.П. Бусленко [15] содержит: сведения о физической природе исследуемого процесса; сведения о количественных характеристиках элементарных явлений исследуемого процесса; сведения о месте и значении каждого элементарного явления в общем процессе функционирования рассматриваемой системы; постановку прикладной задачи, определяющую цели моделирования исследуемого процесса. Содержательное описание процесса обычно самостоятельного значения не имеет, а служит лишь основой для дальнейшей формализации этого процесса — построения формализованной схемы и математической модели процесса. Формализованная схема является промежуточным звеном между содержательным описанием и математической моделью и разрабатывается в тех случаях, когда из-за сложности исследуемого процесса переход от содержательного описания к математической модели оказывается невозможным. На этапе построения формализованной схемы должна быть дана точная математическая задача исследования с указанием окончательного перечня искомых величин и оцениваемых зависимостей. Прежде всего составляется список величин, от которых зависит поведение объекта или ход процесса, а также тех величин, которые желательно получить в результате моделирования. Обозначив первые (входные) величины через x1, x2, …, xn; вторые (выходные) через y1, y2, …, yk, можно поведение объекта или процесса символически представить в виде yj = Fj(x1, x2, …, xn) (j = 1, 2, …, k), где Fj символически обозначает некоторые математические операции над входными величинами. Важнейшим этапом моделирования является разделение входных параметров по степени важности влияния их изменений на выходные. Такой процесс называется ранжированием. Чаще всего невозможно, да и не нужно учитывать все факторы, которые могут повлиять на значения интересующих нас величин yj. От того, насколько умело выделены важнейшие факторы, зависит успех моделирования, быстрота и эффективность достижения цели. Отбрасывание (по крайней мере при первом подходе) менее значимых факторов огрубляет объект моделирования и способствует пониманию его главных свойств и закономерностей. На этапе перехода от формализованной схемы к математической модели необходимо перейти от абстрактной формулировки модели к формулировке, имеющей конкретное математическое наполнение. В этот момент модель предстает перед нами в виде уравнения, системы уравнений, системы неравенств, дифференциального уравнения или системы таких уравнений и т.д. Утверждается, что “для преобразования формализованной схемы в модель необходимо прежде всего, воспользовавшись соответствующими схемами, записать в аналитической форме все соотношения, выразить все логические условия. Последним этапом формализации является идентификация модели — определение параметров и структуры модели, обеспечивающей наилучшее совпадение исходных данных объекта и данных, полученных на модели объекта”. Можно считать, что модель адекватна реальному процессу, если некоторые характеристики процесса совпадают с экспериментальными с заданной степенью точности. Действительно, важнейшими требованиями к модели, согласно А.Д. Мышкису, являются требования адекватности и простоты и оптимальности. Требование адекватности модели изучаемому объекту (процессу) относительно выбранной системы его характеристик предполагает: правильное качественное описание объекта по выбранным характеристикам; правильное количественное описание объекта по выбранным характеристикам. Для достижения адекватности модели процессу необходимо осуществлять контроль: размерностей; порядков; характера зависимостей; экстремальных ситуаций; граничных условий; математической замкнутости. Когда математическая модель сформулирована и выполнена ее идентификация, выбирается метод исследования модели. Разработка алгоритма и составление программы для ЭВМ — творческий и трудноформализуемый процесс. В настоящее время достаточно распространенным подходом к программированию остается структурный подход, основными приемами которого являются модульность, использование лишь базовых алгоритмических структур, разработка алгоритма “сверху вниз” с дальнейшей пошаговой детализацией. Другим, не менее (а может быть, более) популярным подходом является объектно-ориентированное программирование. Графический пользовательский интерфейс целесообразно реализовывать, используя визуальные возможности программирования. В последнее время такой подход нашел широкое распространение в связи с увеличением быстродействия ЭВМ, многие из которых работают под управлением графических операционных систем. Относительная простота изучения и “кнопочная” технология, когда создание интерфейса программы значительно ускоряется, делают эти средства привлекательными для создания демонстрационных программ. Для постановки научных численных экспериментов по-прежнему целесообразнее использовать более традиционные средства, т.к. здесь наиболее важной является скорость вычислений, а не оформление программы. В некоторых случаях расчеты удобно провести, используя готовые программные продукты, например, электронные таблицы или специальные математические пакеты. После составления программы с ее помощью решается простейшая тестовая задача (желательно с заранее известным ответом) с целью отладки и тестирования программы, устранения грубых ошибок [2]. Затем следует собственно численный эксперимент. В случае несоответствия модели реальному процессу происходит возврат к одному из предыдущих этапов. Возможные точки возврата указаны на схеме: либо в процессе огрубления были отброшены какие-то важные факторы или же было взято слишком много незначительных факторов и требуется уточнить математическую модель; либо выбор метода исследования оказался не слишком удачным и нужно использовать более сложный и точный. После внесения тех или иных изменений вновь проходим по части технологической цепочки и делаем это до тех пор, пока не будут получены приемлемые результаты. По окончании компьютерного эксперимента с математической моделью накопленные результаты (чаще всего численные) обрабатываются тем или иным способом (опять же с помощью компьютера) и интерпретируются. Чаще удобной для восприятия формой представления результатов являются не таблицы значений, а графики, диаграммы. Иногда численные значения пытаются заменить аналитически заданной функцией, вид которой определяет экспериментатор. Обработанные данные в конечном итоге попадают в отчет (или научную статью) о проделанном эксперименте. Продолжая разговор о математическом моделировании с привлечением компьютера, поговорим о классификации математических моделей. К классификации математических моделей разные специалисты подходят по-своему, положив в основу классификации различные признаки. Можно классифицировать модели по отраслям наук: математические модели в физике, биологии, социологии и т.д. — это естественно, если к этому подходит специалист в какой-либо сфере научной деятельности. Можно положить в основу классификации применяемый математический аппарат: модели, основанные на применении обыкновенных дифференциальных уравнений, дифференциальных уравнений в частных производных, стохастических методов, дискретных алгебраических преобразований и т.д., — это естественно для математика, более интересующегося аппаратом математического моделирования. Наконец, человек, интересующийся общими закономерностями моделирования в разных науках безотносительно к математическому аппарату, ставящий на первое место цели моделирования, скорее всего использует следующую классификацию (классификационный признак — цели моделирования) [3]: дескриптивные (описательные) модели; оптимизационные модели; многокритериальные модели; игровые модели; имитационные модели. В дальнейшем мы будем придерживаться именно этой классификации, поэтому остановимся на ней чуть подробнее и приведем ряд поясняющих примеров. Моделируя движение кометы, вторгшейся в Солнечную систему, исследователь описывает (предсказывает) траекторию ее полета, расстояние, на котором она пройдет от Земли, и т.д., т.е. ставит чисто описательные цели. В этой ситуации нет никаких возможностей повлиять на движение кометы, что-то изменить. На уровне других процессов можно воздействовать на них, пытаясь добиться какой-то цели. В этом случае в модель входит один или несколько параметров, доступных влиянию. Например, меняя тепловой режим в зернохранилище, можно стремиться подобрать такой, чтобы достичь максимальной сохранности зерна, т.е. оптимизировать процесс. Часто приходится оптимизировать процесс по нескольким параметрам сразу, причем цели могут быть весьма противоречивыми. Например, зная цены на продукты и потребность человека в пище, организовать питание больших групп людей (в армии, летнем лагере и др.) как можно полезнее и как можно дешевле. Ясно, что эти цели, вообще говоря, совсем не совпадают, т.е. при моделировании будет несколько критериев, между которыми нужно искать баланс. Игровые модели могут иметь отношение не только к детским играм (в том числе и компьютерным), но и к вещам весьма серьезным. Например, два полководца перед сражением в условиях наличия неполной информации о противостоящих армиях должны разработать план: в каком порядке вводить в бой те или иные части и т.д., учитывая и возможную реакцию противника. В математике есть специальный раздел — “Теория игр”, где изучаются методы принятия решений в условиях неполной информации. Иногда модель в большой мере подражает реальному процессу, т.е. имитирует его. Например, моделируя изменение (динамику) численности микроорганизмов в колонии, можно рассматривать много отдельных объектов и следить за судьбой каждого из них, ставя определенные условия для его выживания, размножения и т.д. Если при этом не ставится целью вмешательство и регулирование численности колонии, то отличие имитационной модели от дескриптивной достаточно условно; это, скорее, вопрос терминологии. Выполним построение информационной модели для решения поставленной задачи, ее анализ на адекватность объекту и целям моделирования. В качестве примера рассмотрим моделирование в социологии [16, 18]. Оптимальная ставка налога. Налоговая политика государства оказывает существенное влияние на развитие его экономики. С целью увеличения наполнения бюджета государство стремится максимизировать налоги. Действительно ли это приведет в перспективе к постоянному все большему пополнению бюджета, или такая политика государства может по нему же больно ударить? Постараемся ответить на этот вопрос с помощью приведенной ниже модели [18]. Пусть Nt — налоговые поступления некоторого предприятия за год t; Pt — полная прибыль предприятия за год t (без вычета налогов); S % — ставка налога на прибыль; R % — рентабельность предприятия; Ct — капитализируемый предприятием за период [0, t] остаток прибыли; K — начальный капитал предприятия. Тогда Исходными данными в этой модели являются начальный капитал, ставка налога на прибыль, рентабельность предприятия. Приведенная ниже программа позволяет в соответствии с полученной моделью исследовать зависимость сбора налогов от величины ставки на прибыль при прочих фиксированных параметрах. Проследим, как влияет ставка налога на суммарный сбор налогов на протяжении времени наблюдения. Наблюдается удивительный, казалось бы, эффект: чем меньше ставка налога, тем большим в перспективе будет суммарный сбор налогов. Вот и ответ на вопрос: не нужно душить предприятия высокими налогами, и это обернется сторицей. Правда, приведенная модель довольно грубая. Она не учитывает множества факторов, в частности, то, что рентабельность предприятия со временем меняется, существуют другие затраты, кроме указанных, и др. Тем не менее моделирование позволяет проследить общие тенденции налогообложения производства. И, наконец, для определения оптимальной ставки налога необходимо в соответствии с данной моделью произвести расчеты для предприятий разной рентабельности и выяснить, при какой ставке налога достигаются максимальные суммарные сборы. В [18] оптимальная ставка определена примерно в 23%. Предлагаем читателю, модифицировав приведенную выше программу, получить эти результаты самостоятельно. Литература 1. Белоцерковский О.М. Математическое моделирование — отрасль информатики // Кибернетика. Становление информатики. М.: Наука, 1986, с. 45–63. 2. Ван Тассел Д. Стиль, разработка, эффективность, отладка и испытание программ. М.: Мир, 1981, 320 с. 3. Горстко А.Б. Познакомьтесь с математическим моделированием. М.: Знание, 1991, 160 с. 4. Захарова Т.Б. Профильная дифференциация обучения информатике на старшей ступени школы. М., 1997, 212 с. 5. Информатика. Задачник-практикум в 2 т. / Под ред. И.Г. Семакина, Е.К. Хеннера: Т. 2. М.: Лаборатория Базовых Знаний, 1999, 280 с. 6. Компьютеры, модели, вычислительный эксперимент: введение в информатику с позиций математического моделирования. М.: Наука, 1988, 169 с. 7. Лапчик М.П., Семакин И.Г., Хеннер Е.К. Методика преподавания информатики: Учебное пособие для студентов педагогических вузов / Под общей ред. М.П. Лапчика. М.: Издательский центр “Академия”, 2001, 624 с. 8. Могилев А.В., Хеннер Е.К. О понятии “информационное моделирование” // Информатика и образование, 1997, № 8, с. 3–7. 9. Шеннон Р. Имитационное моделирование систем — искусство и наука. М.: Мир, 1978, 418 с. 10. Штофф В.А. Моделирование и философия. М.–Л.: Наука, Ленинградское отделение, 1966, 301 с. 11. Хеннер Е.К., Шестаков А.П. Курс “Математическое моделирование” как продолжение базового курса “Основы информатики и вычислительной техники” в средней школе. // Информатика и информационные технологии в педагогическом образовании. Выпуск 2. Омск: РЦ НИТО, 1996, с. 29–34. 12. Хеннер Е.К., Шестаков А.П. Курс “Математическое моделирование” // Информатика и образование, 1996, № 4, с. 17–23. 13. Хеннер Е.К., Шестаков А.П. Математическое моделирование: пособие для учителя. Пермь: Пермский государственный педагогический университет, 1995, 259 с. 14. Уемов А.И. Логические основы метода моделирования. М.: Мысль, 1971, 311 с. 15. Бусленко Н.П. Моделирование сложных систем. М.: Наука, 1978, 399 с. 16. Шестаков А.П. Профильное обучение информатике в старших классах средней школы (10–11-е классы) на основе курса “Компьютерное математическое моделирование” (КММ) // Информатика, 2002, № 34, с. 3–12; № 36, с. 7–14; № 38, с. 8–15; № 40, с. 9–15; № 42, с. 9–15, 18; № 44, с. 9–13; № 46, с. 8–11; № 48, с. 8–15. 17. Бирих Р.В., Еремин Е.А., Чернатынский В.И. Компьютерные модели в школьном курсе физики. // Информатика, 2006, № 14, с. 3–45; № 15, с. 3–13. 18. Цисарь И.Ф., Нейман В.Г. Компьютерное моделирование экономики. М.: ДиалектМИФИ, 2002, 304 с. 2. Найти на компьютере все файлы, удовлетворяющие заданному критерию, и объединить их в архив, защищенный паролем. Распаковать архив в заданный каталог Выполним поэтапно решение поставленной задачи. 1. Поиск файлов Найдем на диске C: файлы с расширением doc. В ОС MS Windows выбираем Пуск ® Найти ® Файлы и папки…, задаем условие поиска (*.doc). Нажав кнопку Найти, получаем результат. 2. Архивирование файлов с защитой паролем Обычно архиватор, установленный на компьютере, доступен через контекстное меню. Выделим найденные файлы и через контекстное меню вызовем архиватор. Зададим параметры архивирования. На вкладке Дополнительно зададим пароль. 3. Разархивирование файлов 3. Написать программу, вычисляющую значение n-го члена последовательности, заданной по алгоритму. Произвести ввод и отладку программы, проанализировать полученный результат Пример. В последовательности Фибоначчи первые два члена равны единице, а все последующие — сумме двух предыдущих. Написать программу, находящую определенный член последовательности (номер искомого члена задается в виде аргумента или вводится с клавиатуры). Решение. Алгоритм решения задачи является циклическим (итеративным). Будем вычислять члены заданной последовательности до тех пор, пока не получим требуемый 1. Варианты заданий Написать программу, находящую определенный член последовательности (номер искомого члена задается в виде аргумента или вводится с клавиатуры). Указанная в примере последовательность растет достаточно быстро, поэтому при больших n возможен выход значений за диапазон значений выбранного типа данных. 1 Билет № 11 1. Информационные основы управления. Общие принципы управления. Роль обратной связи в управлении. Замкнутые и разомкнутые системы управления. Самоуправляемые системы, их особенности. Понятие о сложных системах управления, принцип иерархичности систем. Самоорганизующиеся системы В повседневной жизни часто приходится встречаться с процессами управления: пилот управляет самолетом, а помогает ему в этом автоматическое устройство — автопилот; директор и его заместители руководят производством, а учитель — обучением школьников; процессор обеспечивает синхронную работу всех узлов компьютера, а каждым его внешним устройством руководит специальный контроллер; без дирижера большой оркестр не может согласованно исполнить музыкальное произведение, а хоккейная или баскетбольная команда обязательно имеет одного или нескольких тренеров, которые организуют подготовку спортсменов к соревнованиям. В наиболее общем виде управление есть совокупность действий, осуществляемых человеком, группой людей или автоматическим устройством (автоматом), направленных на поддержание или улучшение работы некоторого объекта. Эта деятельность ведется либо по заданным извне правилам, либо планируется самостоятельно в соответствии с известной целью управления. Управлять — значит влиять на ход какого-либо процесса в живом организме, машинах, обществе или на состояние некоторого объекта. Управление обязательно ведется целенаправленно, а случайные хаотические воздействия на систему не имеют к этому прямого отношения. Независимо от природы исполнительных и управляющих органов процесс управления имеет определенные общие закономерности. Их изучением занимается специальная наука, которая называется кибернетикой. Слово “кибернетика” происходит от греческого слова, означающего в переводе “кормчий”. Основоположником кибернетики является американский ученый Норберт Винер (1894– 1964). В 1948 году вышла его книга “Кибернетика, или Управление и связь в животном и машине”, заложившая основы новой науки. В Советском Союзе большой вклад в развитие теоретической и прикладной кибернетики внесли академики Аксель Иванович Берг (1893– 1979) и Виктор Михайлович Глушков (1923–1982). Кибернетические исследования заключаются в изучении наиболее общих свойств процессов управления в живых и неживых системах. При этом используются в основном абстрактные системы, т.е. некоторые обобщенные модели реальных систем различной природы — технических, биологических или социальных. Именно такой подход позволяет отразить наиболее общие закономерности, не обращая внимания на второстепенные детали устройства конкретных систем. Предметом новой науки стали не только биологические и технические системы, но и системы любой природы, способные воспринимать, хранить и перерабатывать информацию и использовать ее для управления и регулирования. Кибернетические разделы информатики богаты подходами и моделями в исследовании разнообразных систем и используют в качестве аппарата многие разделы фундаментальной и прикладной математики. Управление является информационным процессом. Действительно, для принятия тех или иных решений и их реализации требуется постоянно производить различные действия с информацией. Сначала нужно получить и обработать данные о состоянии регулируемого объекта и окружающей его среды. Затем сформированные в результате проведенного анализа управляющие команды необходимо передать контролируемому объекту для изменения его состояния в соответствии с целью управления. Часто при организации процесса управления требуется также хранить поступающую информацию, для того чтобы использовать ее в дальнейшем. Таким образом, в ходе управления применяются все наиболее важные виды работы с информацией, фигурирующие в определении информационного процесса. Итак, в рассматриваемой научной дисциплине основными являются понятия управление и информация. Необходимо отметить, что первоначально все исследования в области информации относились к кибернетике, так как считалось, что использование информации в системах управления является центральной проблемой. Однако с развитием науки область ее проблем расширялась, изучались все новые аспекты работы с информацией, и в конце концов проблемы управления выделились в самостоятельную область. В результате возникла более общая наука — информатика, в которую в качестве одной из составных частей вошла кибернетика. Несмотря на многообразие задач, решаемых в кибернетике, разнообразие моделей, подходов и методов, кибернетика остается единой наукой благодаря использованию общей методологии, основанной на теории систем и системном анализе. Система — это предельно широкое, начальное, строго не определяемое понятие. Предполагается, что система обладает структурой, т.е. состоит из относительно обособленных частей (элементов), находящихся тем не менее в существенной взаимосвязи и взаимодействии. Существенность взаимодействия состоит в том, что благодаря ему элементы системы приобретают все вместе некую новую функцию, новое свойство, которыми не обладает ни один из элементов в отдельности. В этом состоит отличие системы от сети, также состоящей из отдельных элементов, но не связанных между собой существенными отношениями. Сравните, например, предприятие, цеха которого образуют систему, поскольку лишь все вместе приобретают свойство выпускать конечную продукцию (и ни один из них в отдельности с этой задачей не справится), и сеть магазинов, которые могут работать независимо друг от друга. Кибернетика как наука об управлении изучает не все системы вообще, а только управляемые системы. Зато область интересов и приложений кибернетики распространяется на самые разнообразные биологические, экономические, социальные системы. Одной из характерных особенностей управляемой системы является возможность переходить в различные состояния под влиянием управляющих воздействий. Всегда существует некое множество состояний системы, из которых производится выбор оптимального состояния. Отвлекаясь от конкретных особенностей отдельных кибернетических систем и выделяя общие для некоторого множества систем закономерности, описывающие изменение их состояния при различных управляющих воздействиях, мы приходим к понятию абстрактной кибернетической системы. Ее составляющими являются не конкретные предметы, а абстрактные элементы, характеризующиеся определенными свойствами, общими для широкого класса объектов. Поскольку под кибернетическими системами понимаются управляемые системы, в них должен присутствовать механизм, осуществляющий функции управления. Чаще всего этот механизм реализуется в виде органов, специально предназначенных для управления. Управляющая часть системы, вырабатывающая сигналы управления, называется управляющим устройством. Управляющее устройство вырабатывает сигналы управления на основе информации о состоянии управляемой системы (изображены на рисунке стрелкой от управляемой части системы к управляющей ее части) с целью достичь требуемого состояния возмущающих воздействий. Совокупность правил, по которым информация, поступающая в управляющее устройство, перерабатывается в сигналы управления, называется алгоритмом управления. На основе введенных понятий можно определить понятие “управление”. Управление — это воздействие на объект, выбранное из множества возможных воздействий на основе имеющейся для этого информации, улучшающее функционирование или развитие данного объекта. В системах управления решаются четыре основных типа задач управления: 1) регулирование (стабилизация); 2) выполнение программы; 3) слежение; 4) оптимизация. Системы, изучаемые в кибернетике, могут быть очень сложными, включающими в себя множество взаимодействующих объектов. Однако для понимания базовых понятий теории можно обойтись простейшей из таких систем, которая содержит всего два объекта — управляющий и исполнительный. Практическим примером может служить, например, система, состоящая из светофора и автомобиля. Как ни удивительно, даже в таких небольших системах информационное взаимодействие может быть построено по разным схемам. В простейшем случае управляющий объект посылает свои команды исполнительному объекту, никак не учитывая его состояния. В рассматриваемом случае каждая система состоит из единственного объекта, но это, разумеется, совсем не обязательно. Например, на практике автомобилей на перекрестке обычно несколько. Для того чтобы управляющая система начала работать, в нее необходимо ввести некоторую исходную информацию о способах управления (в случае светофора она содержит программу переключения управляющих сигналов). Используя входную информацию, управляющая система начинает выдавать команды управления для исполнительной системы (объекта управления). Поскольку в описанной схеме воздействия передаются только в одном направлении, она называется разомкнутой. Помимо описанной выше, разомкнутыми системами являются всевозможные информационные табло на вокзалах и аэропортах, которые управляют перемещениями многочисленных пассажиров. К рассматриваемому классу систем можно отнести и всевозможные современные программируемые бытовые приборы. В обществе также существует способ управления, когда состояние его членов никак не влияет на принимаемые законы и решения, он называется диктатурой. Как правило, описанная схема управления не очень эффективна и нормально работает только до возникновения экстремальных условий. Так, при больших потоках транспорта возникают пробки, в аэропортах и вокзалах приходится дополнительно открывать справочные бюро, в микроволновой печи при неправильной программе может произойти перегрев, из-за которого кусочки продуктов разлетятся по стенкам; диктаторы чаще всего вынуждены бежать из своей страны, спасаясь от справедливого гнева населения. Более совершенные системы управления отслеживают результаты деятельности исполнительной системы. В таких системах дополнительно появляется еще один информационный поток, на этот раз от объекта управления к системе управления; в литературе его принято называть обратной связью. Именно по каналу обратной связи передаются сведения о состоянии объекта и степени достижения (или, наоборот, не достижения) цели управления. Такая система называется замкнутой. Главным принципом управления в замкнутой системе является выдача управляющих команд в зависимости от получаемых сигналов обратной связи. Легко понять, что управляющая система стремится скомпенсировать любое отклонение объекта от состояния, предусмотренного целями управления. Например, если на одной из улиц перекрестка машин накопилось много, а на другой их практически нет, то алгоритм поочередного перекрытия улиц требуется нарушить, чтобы по возможности пропустить максимум машин по перегруженной улице. Обратную связь, при которой управляющий сигнал стремится уменьшить (скомпенсировать) отклонение от некоторой поддерживаемой величины, принято называть отрицательной. Сущность управления с помощью обратной связи хорошо описал основоположник кибернетики Н.Винер в своей статье “Мое отношение к кибернетике. Ее прошлое и будущее”: “Мысль моя заключалась в следующем. В устройствах управления применяется метод стабилизации действия, при котором какая-либо величина, зависящая от успеха действия, подается обратно на вход устройства как новая регулирующая порция информации. Так как каждое отклонение от заданного значения здесь компенсируется корректирующим действием в противоположном направлении, то подобная обратная связь называется отрицательной. Нам... пришло в голову, что такие простые человеческие действия, как вождение автомобиля, регулируются отрицательными обратными связями. Мы поворачиваем рулевое колесо автомобиля не по заранее составленной программе, а так, что если мы отклоняемся слишком влево, то правим вправо, и наоборот. Поэтому мы были убеждены, что отрицательная обратная связь участвует в человеческом механизме управления и, в частности, в том, при помощи которого мы следим взглядом за самолетом”. Приведем еще несколько примеров замкнутых систем управления. Начнем с хорошо знакомого вам примера — обучения в классе. Здесь управляющую систему представляет учитель, а ученики являются объектом управления (авторы просят прощения, если применение принятой в кибернетике терминологии кому-то показалось обидным; помните, что научные термины всегда лишены эмоциональной окраски и никого не унижают и не обижают). Прямой канал передачи информации — это передача знаний учителем, а обратная связь — ответы учеников, результаты контрольных работ, сочинения и т.п. Благодаря обратной связи в результате анализа проведенной контрольной учитель может, например, провести дополнительный урок по данной теме или, наоборот, особо отличившихся учеников освободить от каких-то заданий. Завершая обсуждение принципов работы управляющих систем, отметим, что их изучение не является самоцелью, а служит основой для разработки устройств автоматического управления. Кибернетика разделяет системы управления на три группы: неавтоматические, автоматизированные и автоматические. Как очевидно из названия, в неавтоматических системах управлением человек занимается самостоятельно. Автоматизированные системы управления (АСУ) занимают некоторое промежуточное место — сбор необходимой для принятия решения информации и ее обработка производятся автоматически, а окончательное решение принимает человек. Наконец, в системах автоматического управления (САУ) все операции, связанные с процессами управления, происходят без участия человека. Разумеется, программы (алгоритмы) управления предварительно готовит человек. Количество автоматизированных и автоматических систем вокруг нас неуклонно расширяется. Литература 1. Информатика: Энциклопедический словарь для начинающих / Сост. Д.А. Поспелов. М.: Педагогика-Пресс, 1994, 352 с. 2. Информатика в понятиях и терминах: Книга для учащихся старших классов средней школы / Г.А. Бордовский, В.А. Извозчиков, Ю.В. Исаев, В.В. Морозов; Под ред. В.А. Извозчикова. М.: Просвещение, 1991, 208 с. 3. Семакин И., Залогова Л., Русаков С., Шестакова Л. Информатика. Учебник по базовому курсу (7–9-е классы). М.: Лаборатория базовых знаний, 1998, 464 с. 4. Шилейко А.В., Шилейко Т.И. Кибернетика без математики. М.: Энергия, 1973, 144 с. 5. Еремин Е.А., Шестаков А.П. Примерные ответы на примерные билеты // Информатика, 2002, № 13 (350), с. 9–13. 6. Могилев А.В. Информатика: Учебное пособие для студентов педагогических вузов / А.В. Могилев, Н.И. Пак, Е.К. Хеннер; Под ред. Е.К. Хеннера. 3-е изд., перераб. и доп. М.: Издательский центр “Академия”, 2004, 848 с. 7. Бешенков С.А., Кузьмина Н.В., Ракитина Е.А. Информатика. Систематический курс. 11й класс. М.: Лаборатория Базовых Знаний, 2002, 200 с. 2. Найти на указанном диске все файлы, удовлетворяющие заданному критерию, объединить в самораспаковывающийся архив и записать на компакт-диск. Решение Поиск файлов по заданному критерию описан в билете № 10, вопрос 2. Поэтому перейдем ко второй части задачи. Итак, пусть есть некоторый набор файлов. Объединим их в самораспаковывающийся архив. При задании общих параметров сжатия (рассмотрим их на примере WinRar) укажем Создать SFX-архив, что и предполагает создание самораспаковывающегося архива. Архив в нашем примере был создан в корневой папке диска C:. В общем случае он может быть сохранен на произвольном диске в произвольной папке. В контекстном меню для архивного файла выберем Отправить Таким образом, файл будет приготовлен для записи. DVD-RW-дисковод. Затем перейдем на диск, соответствующий этому приводу, и выберем Файл файлы на компакт-диск. Записать Очевидно, что задача может быть решена и другими средствами. Например, запись на диск можно осуществить с помощью программы Nero Burning ROM. Учащийся при выполнении задания сам выбирает необходимые средства. 3. Написать программу на поиск элементов массива по заданному условию. Произвести ввод и отладку программы. Проанализировать полученный результат Пример 1. В произвольном линейном массиве найти первый по порядку элемент, равный заданному числу x. Решение. Просматриваем массив до тех пор, пока не будет найден указанный элемент или не будет просмотрен весь массив. QBasic DECLARE SUB Vvod (N!, A!()) DECLARE SUB Vivod (N!, A!()) DECLARE SUB poisk (N!, A!(), x, p!) DIM A(20), N, x AS INTEGER RANDOMIZE TIMER - 32767 PRINT "N? ": INPUT N CALL Vvod(N, A()) CALL Vivod(N, A()) PRINT "Что ищем? ": INPUT x CALL poisk(N, A(), x, p) IF p = 0 THEN PRINT "No" ELSE PRINT "Номер: "; p END IF SUB poisk (N, A(), x, p) i=1 p=0 WHILE (i <= N) AND (p = 0) IF A(i) = x THEN p = i i=i+1 WEND END SUB SUB Vivod (N, A()) FOR i = 1 TO N PRINT USING "####"; A(i); NEXT i PRINT END SUB SUB Vvod (N, A()) FOR i = 1 TO N A(i) = -10 + INT(RND(1) * 20) NEXT i END SUB Pascal Program Find; Type arr=array[1..20] of integer; Procedure Vvod(n: byte; var a: arr); Var i: byte; Begin For i := 1 to n do A[i] := -10 + random(20) End; Procedure Vivod(n: byte; const a: arr); Var i: byte; Begin For i := 1 to n do Write(a[i]:4); Writeln End; Procedure poisk(n: byte; const a: arr; x: integer; var p: byte); Var i: byte; Begin i := 1; p := 0; while (i <= n) and (p = 0) do begin if a[i] = x then p := i; i := i + 1 end; End; Var a: arr; x: integer; n, p: byte; Begin Randomize; Write('n?'); readln(n); Vvod(n, a); Vivod(n, a); Write('Что ищем?'); readln(x); Poisk(n, a, x, p); If p = 0 then writeln('Элемент не найден') else writeln('номер элемента: ', p) End. C++ #include <iostream.h> #include <stdlib.h> #include <time.h> void Vvod(int n, int a[20]); void Vivod(int n, int a[20]); void Poisk(int n, int a[20], int x, int &p); void main() {int n, a[20], x, p; cout << "Сколько элементов в массиве? "; cin >> n; randomize(); Vvod(n, a); Vivod(n, a); cout << "Что ищем?"; cin >> x; Poisk(n, a, x, p); if (!p) cout << "Элемент не найден"; else cout << "номер элемента: " << p; } void Vvod(int n, int a[20]) { int i; for (i = 1; i <= n; i++) a[i] = -10 + random(20); } void Vivod(int n, int a[20]) { int i; for (i = 1; i <= n; i++) {cout.width(4); cout << a[i];} } void Poisk(int n, int a[20], int x, int &p) { int i; p = 0; for (i = 1; i <= n && !p; i++) if (a[i] == x) p = i; } Пример 2. В отсортированном линейном массиве найти элемент, равный заданному числу x. Решение. Воспользуемся алгоритмом бинарного поиска. Для этого выделим средний элемент массива. По сравнению с x средний элемент может быть: больше x (в этом случае поиск продолжается в левой части массива); меньше x (в этом случае поиск продолжается в правой части массива); равен x (в этом случае поиск завершается). В первом и втором случае поиск продолжаем по той же схеме. Кроме совпадения некоторого элемента массива с заданным x поиск прекращается, если левая граница участка поиска станет больше, чем правая, что означает, что элемент в массиве отсутствует. QBasic DECLARE SUB Vvod (N!,A() AS INTEGER) DECLARE SUB Vivod (N!,A() AS INTEGER) DECLARE SUB Bpoisk (N!,A() AS INTEGER,x,p!) DIM A(20) AS INTEGER RANDOMIZE TIMER - 32767 PRINT "N? ": INPUT N CALL Vvod(N, A()) CALL Vivod(N, A()) PRINT "Что ищем? ": INPUT x CALL Bpoisk(N, A(), x, p) IF p = 0 THEN PRINT "No" ELSE PRINT "Номер: "; p END IF SUB Bpoisk (N, A() AS INTEGER, x, c) L = 1: R = N DO c = INT((L + R) / 2) IF A(c) > x THEN R = c - 1 IF A(c) < x THEN L = c + 1 LOOP WHILE (L <= R) AND (A(c) <> x) IF A(c) <> x THEN c = 0 END SUB SUB Vivod (N, A() AS INTEGER) FOR i = 1 TO N PRINT USING "####"; A(i); NEXT i PRINT END SUB SUB Vvod (N, A() AS INTEGER) A(1) = -20 + INT(RND(1) * 20) FOR i = 2 TO N A(i) = A(i - 1) + INT(RND(1) * 6) NEXT i END SUB Pascal Program Find; Type arr = array[1..20] of integer; Procedure Vvod(n: byte; var a: arr); Var i: byte; Begin A[1] := -20 + random(20); For i := 2 to n do A[i] := A[i - 1] + random(6) End; Procedure Vivod(n: byte; const a: arr); Var i: byte; Begin For i := 1 to n do Write(a[i]:4); Writeln End; Procedure bpoisk(n: byte; const a: arr; x: integer; var C: byte); Var L,R: byte; Begin L := 1; R := n; Repeat C := (L + R) div 2; If A[C] > x then R := c - 1; If A[C] < x then L := c + 1 Until (L > R) or (A[c] = x) If A[C] <> x then C := 0 End; Var a: arr; x: integer; n, p: byte; Begin Randomize; Write('n? '); readln(n); Vvod(n, a); Vivod(n, a); Write('Что ищем? '); readln(x); BPoisk(n, a, x, p); If p = 0 then writeln('Элемент не найден') else writeln('номер элемента: ', p) End. C++ #include <iostream.h> #include <stdlib.h> #include <time.h> void Vvod(int n, int a[20]); void Vivod(int n, int a[20]); void BPoisk(int n, int a[20], int x, int &c); void main() {int n, a[20], x, p; cout << "Сколько элементов в массиве? "; cin >> n; randomize(); Vvod(n, a); Vivod(n, a); cout << " Что ищем?"; cin >> x; BPoisk(n, a, x, p); if (!p) cout << "Элемент не найден"; else cout << "номер элемента: " << p; } void Vvod(int n, int a[20]) { int i; a[1] = -20 + random(20); for (i = 2; i <= n; i++) a[i] = a[i - 1] + 1 + random(6); } void Vivod(int n, int a[20]) { int i; for (i = 1; i <= n; i++) {cout.width(4); cout << a[i];} cout << endl; } void BPoisk(int n, int a[20], int x, int &c) { int L, R; L = 1; R = n; do {c = (L + R)/2; if (a[c] > x) R = c - 1; if (a[c] < x) L = c + 1;} while (L <= R && a[c] != x); if (a[c] != x) c = 0; } Варианты заданий Написать программу на поиск элементов массива по заданному условию. Произвести ввод и отладку программы. Проанализировать полученный результат. 1. Даны действительные числа a1, a2, ..., an. Поменять местами наибольший и наименьший элементы. 2. Задана последовательность из N вещественных чисел. Определить, сколько чисел меньше K, равно K и больше K. 3. Определить количество элементов последовательности натуральных чисел, кратных числу M и заключенных в промежутке от L до N. 4. Определить, сколько процентов от всего количества элементов последовательности целых чисел составляют нечетные элементы. 5. В массиве целых чисел с количеством элементов n найти наиболее часто встречающееся число. Если таких чисел несколько, то определить наименьшее из них. Билет № 12 1. Архитектура современных компьютеров. Основные устройства компьютера, их функции и взаимосвязь. Магистрально-модульный принцип построения компьютера. Безопасность, гигиена, эргономика, ресурсосбережение, технологические требования при эксплуатации компьютерного рабочего места. Комплектация компьютерного рабочего места в соответствии с целями его использования. Первая половина рассматриваемого вопроса во многом продолжает начатое в билете № 9 обсуждение типовых логических устройств компьютера, но теперь речь пойдет о самом высоком логическом уровне — уровне архитектуры. Понятие архитектуры применительно к ЭВМ очень четко и с указанием истории происхождения термина сформулировал Э.Таненбаум, который в своей известной книге [1] писал: “К концу 50-х годов компания IBM, которая лидировала тогда на компьютерном рынке, решила, что производство семейства компьютеров, каждый из которых выполняет одни и те же команды, имеет много преимуществ и для самой компании, и для покупателей. Чтобы описать этот уровень совместимости, компания IBM ввела термин архитектура. Новое семейство компьютеров должно было иметь одну общую архитектуру и много разных разработок, различающихся по цене и скорости, которые могли выполнять одну и ту же программу”. Проще говоря, под архитектурой понимается все то общее в устройстве машин, что позволяет использовать на них одно и то же программное обеспечение. Итак, целью строгой стандартизации основополагающих принципов служит вполне понятное прагматическое стремление: все машины одного семейства независимо от их конкретного устройства и фирмы-производителя должны быть способны выполнять одну и ту же программу. Примечание. На практике из-за постоянного роста мощности вычислительной техники чаще используется менее жесткий принцип совместимости снизу вверх: все программы данной модели выполнимы на более старших, но не обязательно наоборот. Семейство ЭВМ — это группа моделей машин, программно совместимых между собой. В пределах одного семейства основные принципы функционирования всех ЭВМ одинаковы, хотя отдельные модели могут существенно различаться по элементной базе, конкретной конструкции устройств, производительности, объему памяти, стоимости и другим параметрам. Особо подчеркнем, что к архитектуре относится именно наиболее общее логическое построение вычислительных средств, без учета конкретных деталей их реализации. Вопросы физического построения образуют отдельный круг проблем, который, согласно [2], принято определять понятием организация. Архитектура и организация — это две дополняющие друг друга стороны описания ЭВМ. Помимо уже упомянутого семейства машин фирмы IBM третьего поколения, в историю вычислительной техники также вошли различные программно совместимые модификации компьютеров PDP, выпущенные фирмой DEC1, и семейство MSX-машин, к которому принадлежала некогда широко распространенная в нашей системе образования “Yamaha”. Современным примером общей архитектуры вычислительной техники служат заполнившие мир IBM-совместимые персональные компьютеры, успешно производимые во множестве стран. Из сказанного выше с очевидностью следует, что с точки зрения архитектуры важны не все сведения о строении ЭВМ, а только те, которые могут хоть как-то использоваться при программировании2: то, к чему программист не имеет доступа, не в состоянии привести к неправильному исполнению команд, из которых составлена программа. Например, математический сопроцессор исполняет команды программы, связанные с обработкой вещественных чисел; следовательно, независимо от того, представлен ли он отдельной микросхемой или находится внутри чипа центрального процессора (начиная с Intel 80486), сопроцессор может рассматриваться как составная часть архитектуры IBM PC. Наоборот, кэш-память “невидима” для программы: у нее нет адреса, по которому программист мог бы к ней обращаться, — значит, кэш, строго говоря, к архитектуре не относится. Последнее утверждение можно проверить экспериментально: отключите кэш в установках BIOS, и все программы будут работать, хотя и заметно медленнее. Следовательно, даже сам факт наличия или отсутствия кэш-памяти не влияет на работоспособность программ, а значит, в архитектуру она не входит. Что же обычно относят к архитектуре ЭВМ? Не претендуя на полный охват, назовем наиболее важное: методы выполнения команд программы и влияние анализа тех или иных условий на порядок их выполнения, способы доступа к памяти и внешним устройствам, возможности изменения конфигурации оборудования, принципы построения системы команд и их кодирования, форматы данных и особенности их машинного представления. С точки зрения вопроса билета нас будет интересовать лишь некоторая небольшая часть из перечисленного списка относящихся к архитектуре проблем, а именно те, которые связаны с функциями и взаимодействием основных логических узлов компьютера. Ознакомимся с указанным материалом подробнее. Несмотря на огромное разнообразие вычислительной техники и ее необычайно быстрое совершенствование, фундаментальные принципы устройства машин, являющиеся составной частью архитектуры, во многом остаются неизменными. В частности, начиная с самых первых поколений, любая ЭВМ состоит из следующих основных устройств: процессор, память (внутренняя и внешняя) и устройства ввода и вывода информации. Рассмотрим более подробно назначение каждого из них. Процессор является главным устройством компьютера, в котором собственно и происходит обработка всех видов информации. Другой важной функцией процессора является обеспечение согласованного действия всех узлов, входящих в состав компьютера. Соответственно названным функциям, наиболее важными частями процессора являются арифметико-логическое устройство АЛУ и устройство управления УУ. Каждый процессор способен выполнять вполне определенный набор универсальных инструкций, называемых чаще всего машинными командами. Каков именно этот набор, определяется устройством конкретного типа процессора, но он не очень велик и в основном аналогичен даже для различных семейств процессоров. Работа ЭВМ состоит в выполнении последовательности таких команд, подготовленных в виде программы. Процессор способен организовать считывание очередной команды, ее анализ и выполнение, а также при необходимости принять данные или отправить результаты их обработки на требуемое устройство. Выбрать, какую инструкцию программы исполнять следующей, также должен сам процессор, причем результат этого выбора может зависеть от обрабатываемой в данный момент информации (условные переходы). Хотя внутри процессора всегда имеются специальные ячейки (регистры) для оперативного хранения обрабатываемых данных и некоторой служебной информации, в нем сознательно не предусмотрено место для хранения программы. Для этой важной цели в компьютере служит другое устройство — память. Память предназначена для хранения как данных, так и программ их обработки: согласно фундаментальному принципу хранимой программы [3], для обоих типов информации используется единое устройство. Начиная с самых первых ЭВМ, память стали делить на внутреннюю и внешнюю. Исторически это действительно было связано с размещением внутри или вне процессорного шкафа. Однако с уменьшением размеров блоков машин внутрь основного процессорного корпуса удавалось поместить все большее количество устройств, и первоначальный непосредственный смысл данного деления постепенно утратился. Тем не менее терминология сохранилась. Под внутренней памятью современного компьютера принято понимать быстродействующую электронную память, расположенную на его системной плате. В настоящее время такая память изготавливается на базе самых современных полупроводниковых технологий (раньше использовались магнитные устройства3 на основе ферритовых сердечников — лишнее свидетельство тому, что конкретные физические принципы значения не имеют). Наиболее существенная часть внутренней памяти называется ОЗУ — оперативное запоминающее устройство. Его главное назначение состоит в том, чтобы хранить данные и программы для решаемых в текущий момент задач. Упомянем также о постоянном запоминающем устройстве (ПЗУ), в котором, в частности, хранится информация, необходимая для первоначальной загрузки компьютера в момент включения питания (для лучшего понимания можно указать на некоторую аналогию между информацией в ПЗУ и “врожденными” безусловными рефлексами у живых существ). Раньше содержимое ПЗУ раз и навсегда формировалось на заводе, теперь же современные технологии позволяют в случае необходимости аккуратно обновлять его, даже не извлекая из компьютерной платы. Внешняя память реализуется в виде довольно разнообразных устройств длительного хранения информации и обычно конструктивно оформляется как самостоятельные блоки. Сюда прежде всего следует отнести накопители на гибких и жестких магнитных дисках (последние пользователи часто жаргонно именуют винчестерами), а также оптические дисководы (устройства для работы с CD- и DVD-дисками). В конструкции всех перечисленных устройств внешней памяти имеются механически движущиеся части, поэтому скорость их работы существенно ниже, чем у полностью электронной внутренней памяти. Тем не менее внешняя память позволяет сохранить огромные объемы информации с целью последующего использования. Подчеркнем, что информация во внешней памяти прежде всего предназначена для самого компьютера и поэтому хранится в удобной ему форме; человек без использования машины не в состоянии, например, даже отдаленно представить содержимое немаркированной дискеты или диска CD-ROM. В последнее время все более широкое распространение получают накопители на основе флэш-памяти. Данная разновидность памяти способна сохранять информацию на базе полупроводниковых технологий и не имеет движущихся частей. Все чаще и чаще высказывается мнение, что флэш-память вскоре существенно потеснит дисковые накопители информации. Современные программные системы способны объединять внутреннюю и внешнюю память в единое целое, причем так, чтобы наиболее редко используемая информация попадала в более медленно работающую внешнюю память. Такой метод носит название виртуальной памяти и дает возможность очень существенно расширить объем обрабатываемой с помощью компьютера информации. Если процессор дополнить памятью, то такая автономная система уже может быть работоспособной. Ее существенным недостатком является невозможность узнать что-либо о происходящем внутри такой системы. Для получения информации о результатах необходимо дополнить компьютер устройствами вывода, которые позволяют представить их в доступной человеческому восприятию форме. Наиболее распространенным устройством вывода является дисплей, способный быстро и оперативно отображать на своем экране как текстовую, так и графическую информацию. Для того чтобы получить копию результатов на бумаге, используют печатающее устройство, или принтер4. Наконец, поскольку пользователю часто требуется вводить в компьютерную систему новую информацию, необходимы еще и устройства ввода. Простейшим устройством ввода является клавиатура. Широкое распространение программ с графическим интерфейсом способствовало популярности другого устройства ввода — манипулятора “мышь”. Наконец, очень эффективным современным устройством для автоматического ввода информации в компьютер является сканер, позволяющий не просто преобразовать картинку с листа бумаги в графическое компьютерное изображение, но и с помощью специального программного обеспечения распознать в прочитанном изображении текст и сохранить его в виде, пригодном для редактирования в обычном текстовом редакторе. Теперь, когда мы знаем основные устройства компьютера и их функции, осталось выяснить, как они взаимодействуют между собой. Для этого обратимся к упрощенной функциональной схеме компьютера, приведенной на рисунке. Для связи основных устройств компьютера между собой используется специальная информационная магистраль, чаще называемая инженерами шиной. Шина состоит из трех следующих частей: · шина адреса, на которой устанавливается адрес (номер) требуемой ячейки памяти или устройства, с которым будет происходить обмен информацией; · шина данных, по которой собственно и будет передана необходимая информация; и, наконец, · шина управления, регулирующая этот процесс (например, один из сигналов на этой шине позволяет компьютеру различать между собой адреса памяти и устройств ввода/вывода). Рассмотрим в качестве примера, как процессор читает содержимое ячейки памяти. Убедившись, что шина в данный момент свободна, процессор помещает на шину адреса требуемый адрес и устанавливает необходимую служебную информацию (операция — чтение, устройство — ОЗУ и т.п.) на шину управления. Теперь ему остается только ожидать ответа от ОЗУ. Последнее, “увидев” на шине обращенный к нему запрос на чтение информации, извлекает содержимое необходимой ячейки и помещает его на шину данных, оповещая процессор по шине управления о готовности данных. Разумеется, реальный процесс значительно подробнее и допускает различные вариации и усовершенствования, но нас сейчас не интересуют технические детали. В современных компьютерах обмен по шине в некоторых случаях может происходить и без непосредственного участия центрального процессора, например, между устройством ввода и внутренней памятью. В этом случае руководство процессом обмена берет на себя специализированная интеллектуальная микросхема — контроллер. Типичными примерами организации прямого доступа к памяти могут служить чтение файла с диска или вывод потока данных из ОЗУ на звуковую карту. Подчеркнем, что описанная нами учебная функциональная схема на практике значительно сложнее. Современный компьютер может содержать несколько согласованно работающих процессоров, прямые информационные каналы между отдельными устройствами, несколько взаимодействующих магистралей и т.д. Тем не менее, если понимать наиболее общую схему, то разобраться в конкретной компьютерной системе будет уже легче. Магистральная структура позволяет легко подсоединять к компьютеру именно те внешние устройства, которые нужны для данного пользователя. Благодаря ей удается скомпоновать из стандартных блоков (модулей) практически любую индивидуальную конфигурацию компьютера. Описанный метод реализации современных вычислительных устройств часто называют магистрально-модульным принципом построения компьютера. Разобравшись с устройством компьютера и его составляющими, перейдем ко второй половине вопроса и поговорим о требованиях, которые предъявляются к организации компьютерного рабочего места. Хотя школьник в большинстве случаев использует уже подготовленное для него место, а ответственность за правильность оборудования этого места несут взрослые (выражаясь официальным языком, организации, которые оборудуют и эксплуатируют помещения с компьютерами), некоторые знания в рассматриваемой области ученику тем не менее необходимы. Во-первых, он как минимум имеет право голоса при организации компьютерного рабочего места у себя дома. А во-вторых, знание наиболее важных санитарно-гигиенических сведений позволит ему проявить разумную осторожность и сберечь свое здоровье при работе в компьютерном классе, содержащем явные нарушения известных ему норм. Компьютер не является объектом повышенной опасности, но определенные негативные воздействия на человека в принципе в состоянии оказать. Любой, кто собирается систематически использовать компьютер, должен быть о них предупрежден. Ключевыми требованиями (их часто называют эргономическими) здесь должны стать безопасность, эффективность и комфорт. Компьютер — это электрическое устройство, которое питается из обычной сетевой розетки. Поэтому все правила безопасной эксплуатации бытовых электрических приборов относятся и к нему. Особую осторожность следует проявлять с кабелем, подводящим сетевое напряжение, и его вилкой. Не рекомендуется без крайней необходимости открывать компьютер или его устройства, тем более при подключенном напряжении. Все подсоединения разъемов внешних устройств (важное исключение составляют так называемые “USB-устройства”, которые специально рассчитаны на безопасное подключение в процессе работы) производятся только при отключенном питании. С другой стороны, из сказанного выше вовсе не следует, что компьютер при любом коротком перерыве надо выключать. Необходимо учитывать, что электрические приборы (даже самая обыкновенная электрическая лампочка) обычно испытывают максимальные перегрузки именно в момент включения. Следовательно, если вы через некоторое время собираетесь вернуться к работе, не стоит лишний раз выключать и снова включать компьютер. Тем более что в современных моделях предусмотрен специальный ждущий (“спящий”) режим, который автоматически включается, если компьютер долго не получает никаких воздействий от устройств ввода. Такой режим энергосбережения особенно актуален в переносных компьютерах, где потребляемая мощность определяет время разрядки источника питания, а значит, и автономной работы. Помимо описанной потенциальной опасности (пусть и небольшой) получить поражение электрическим током, при работе с компьютером имеются и другие неблагоприятные факторы. “Борьбе” с ними посвящен важный для эксплуатации компьютеров документ — Санитарно-эпидемиологические правила и нормативы СанПиН 2.2.2/2.4.1340-03 “Гигиенические требования к персональным электронно-вычислительным машинам и организации работы” [4]. Эти правила определяют санитарно-эпидемиологические требования к достаточно широкому кругу работ с компьютерами. Сюда входит не только интересующая нас в связи с вопросом билета организация рабочих мест с персональными ЭВМ (ПЭВМ), но и многие другие процессы. В частности, правила нормируют проектирование и изготовление ПЭВМ, используемых на производстве, в обучении, в быту, в игровых автоматах на базе ПЭВМ; проектирование, строительство и реконструкцию помещений (требования к микроклимату, уровням шума и вибрации, освещению, уровням электромагнитных полей), предназначенных для эксплуатации всех типов ПЭВМ; методы организации работы с ПЭВМ. В документе особым пунктом выделены особенности требований применительно к организации и оборудованию рабочих мест для обучающихся в общеобразовательных учреждениях. Очевидно, что большинство перечисленных требований предназначаются тем, кто организует компьютерное обучение в школе. Поэтому постараемся выделить то немногое, о чем следует знать школьнику. Не так давно много опасений у пользователей вызывало излучение монитора, которое возникает в электронно-лучевой трубке5 (в обычном телевизоре оно также имеет место). Но постепенно, читая о постоянном совершенствовании технологий производства, пользователи пришли к справедливому выводу, что современные мониторы защищены достаточно хорошо. Единственный факт, на который здесь стоит обратить внимание, так это то, что излучение максимально с задней стороны монитора. Отсюда меры предосторожности очевидны — ставить монитор с электронно-лучевой трубкой так, чтобы сзади него не было людей, например, к наружной стене. Попутно заметим, что компьютерные рабочие места, как и обычные учебные столы, следует размещать таким образом, чтобы естественный свет падал преимущественно слева. Еще один источник возможных негативных последствий, связанный с монитором, — нагрузка на зрение. Это гораздо более реальная угроза, чем излучение. Множество мелких деталей на экране монитора, которые необходимо рассматривать с предельным вниманием, вызывают у наших глаз существенное напряжение. Довольно эффективные меры борьбы с указанной опасностью существуют и они хорошо известны: тщательный выбор места для монитора (отсутствие бликов и посторонней подсветки изображения), хорошее рассеянное освещение, настройка монитора на максимально высокую частоту обновления экрана (для уменьшения мерцания6) и индивидуальная регулировка яркости. Освещение здесь играет особую роль: оно должно быть организовано так, чтобы на “поверхности стола в зоне размещения рабочего документа” быть очень интенсивным и равномерным, но при этом не подсвечивать экран. Работая с компьютером, не стоит располагать глаза близко к монитору; медики рекомендуют расстояние вытянутой руки. Важной профилактической мерой является организация периодических перерывов и выполнения специальных несложных упражнений для глаз. Примечание. Не будем требовать от учеников заучивания приведенных ниже норм из правил [4], но познакомим с ними. “Экран видеомонитора должен находиться от глаз пользователя на расстоянии 600–700 мм, но не ближе 500 мм с учетом размеров алфавитно-цифровых знаков и символов”. “Линия взора должна быть перпендикулярна центру экрана и оптимальное ее отклонение от перпендикуляра, проходящего через центр экрана в вертикальной плоскости, не должно превышать±5 градусов, допустимое ±10 градусов”. Существуют также официальные нормы, ограничивающие время работы на компьютере. Они довольно жесткие для школьников: например, согласно санитарным нормам, для 10– 11-го классов время непрерывной работы не может превышать 30 минут, и не должно быть более двух уроков в неделю. Важную роль в работе за компьютером играет правильно подобранная мебель. Рекомендуется, чтобы она имела регулируемую высоту и возможность индивидуальной “подгонки” под фигуру конкретного пользователя. “Конструкция рабочего стола должна обеспечивать оптимальное размещение на рабочей поверхности используемого оборудования с учетом его количества и конструктивных особенностей, характера выполняемой работы”. “Поверхность сиденья, спинки и других элементов стула (кресла) должна быть полумягкой, с нескользящим, слабо электризующимся и воздухопроницаемым покрытием, обеспечивающим легкую очистку от загрязнений”. В [4] приводятся конкретные нормативы, позволяющие определить геометрические размеры мебели в зависимости от роста человека. Данные рекомендации особенно полезно посмотреть при организации индивидуального рабочего места у себя дома. Тем, кто проводит много времени за компьютером, обязательно надо контролировать свою позу: она должна обеспечивать минимум напряжений в теле (особенно это относится к мышцам шейно-плечевой области и спины) и обеспечивать нормальную циркуляцию крови. С этой точки зрения благоприятный эффект дают перерывы и физкультпаузы. Если в результате работы за компьютером вы почувствуете какое-либо ухудшение состояния или дискомфорт, обязательно обратитесь за консультацией к врачу. Примечание для учителей. Последнее предложение вопроса билета (“комплектация компьютерного рабочего места в соответствии с целями его использования”) весьма общее и неопределенное. Если, по мнению читателей, среди приведенных выше сведений об оборудовании рабочего места недостаточно материала для его освещения, есть два пути устранения проблемы: без особого ущерба для контроля знаний по информатике удалить из текста вопроса данное предложение или поискать разъяснение, как можно истолковать данную фразу, в других источниках. Авторы считают, что подобного рода формулировки, когда не очень понятно, что именно следует рассказать в ответе и когда он будет полным, а когда нет (особенно, если материал не имеет подробного и однозначного освещения в типовом учебнике по предмету!), не стоит включать в текст экзаменационных билетов. Литература 1. Таненбаум Э. Архитектура компьютера. СПб.: Питер, 2003, 704 с. 2. Цилькер Б.Я., Орлов С.А. Организация ЭВМ и систем. СПб.: Питер, 2004, 668 с. 3. Беркс А., Голдстейн Г., Нейман Дж. Предварительное рассмотрение логической конструкции электронного вычислительного устройства // Кибернетический сборник. М.: Мир, 1964. Вып. 9. 4. Санитарно-эпидемиологические правила и нормативы СанПиН 2.2.2/2.4.1340-03 “Гигиенические требования к персональным электронно-вычислительным машинам и организации работы”. Пример. Образец текста: 3. Написать программу для вычисления количества перестановок (формулируется как комбинаторная задача, решаемая в общем случае). Произвести ввод и отладку программы. Проанализировать полученный результат. Пример. Сколькими способами можно расставить n книг на книжной полке? Решение. Данная задача сводится к подсчету количества перестановок из n элементов. Как известно, количество перестановок из n элементов вычисляется по формуле Pn = n! QBasic Pascal Program Perest; Print "Сколько книг? " Var i, n, F: longint; C++ #include <iostream.h> void main() Input n Begin Write('Сколько книг? '); {int n, F = 1; F=1 readln(n); cout << "Сколько книг? "; For i = 1 to n F := 1; cin >> n; F=F*i For i := 1 to n do for (int i = 1; i <= n; i++) Next i F := F * i; F = F * i; Print F Writeln(F) cout << F; End. } Билет № 13 1. Компьютерные сети. Аппаратные средства компьютерных сетей. Топология локальных сетей. Характеристики каналов (линий) связи. Профессии, связанные с обеспечением эксплуатации сетей В настоящее время становится все труднее представить себе компьютер, не имеющий доступа к сети. Даже единственному домашнему компьютеру на практике все чаще доступно сетевое подключение по крайней мере через модем. Возникла целая категория пользователей, для которых компьютер в первую очередь служит средством доступа к Интернету. Одной из главных объективных причин развития компьютерных сетей является все усложняющийся характер повседневных производственных задач, которые приходится решать людям. Как следствие, они решаются коллективно, а также с применением большого количества информации. Постоянная необходимость оперативного информационного обмена в процессе работы над общим проектом или использование всевозможных распределенных ресурсов служат лучшим катализатором для развития и совершенствования сетевых технологий. Отдельно следует сказать о персональном сетевом общении, которое приобретает все боRльшую популярность: электронная почта, форумы, чаты, конференции и прочие формы коммуникаций с использованием сети, часто между абсолютно незнакомыми людьми. Хотя преимущества замены личного общения на виртуальное (особенно когда последнее начинает преобладать над первым) достаточно спорны, нельзя отрицать, что данное явление имеет место. Итак, рассмотрим подробнее, что собой представляют столь бурно развивающиеся сегодня компьютерные сети и каковы их наиболее важные аппаратные особенности. Компьютерная сеть — это совокупность компьютеров, соединенных с помощью каналов связи и средств коммутации в единую систему для обмена сообщениями и доступа пользователей к различным ресурсам. Какие преимущества предоставляют компьютерные сети по сравнению с отдельно работающими компьютерами? В наиболее общем виде ответ следует из приведенного определения; тем не менее расшифруем данное положение более подробно, перечислив возможные примеры. · Использование аппаратных ресурсов более мощного или лучше оснащенного, чем у вас, компьютера. Например, с помощью обращения по сети можно выполнить сложную вычислительную задачу на машине с более производительным процессором или отпечатать документ на цветном лазерном принтере, установленном в соседней комнате. · Использование программы, работающей на доступном по сети компьютере. На этом принципе функционируют многие крупные компьютеры-серверы, которые, получая запросы по сети, мгновенно проводят сложную обработку и возвращают в качестве ответа результаты. Иногда подобное разделение программного обеспечения организовано в виде совместного использования общей копии программы, установленной на одной из машин. · Использование данных, хранящихся на удаленных компьютерах. Ярким примером такого рода является доступ к информации через Интернет; другим примером может служить работа с распределенными базами данных. · Обмен информацией между пользователями компьютеров, совместная работа над общими проектами. Наиболее наглядным (но далеко не единственным) примером такого рода является электронная почта. Как вы, наверно, почувствовали, названные выше возможности тесно связаны. Допустим, при реализации дистанционного обучения используются данные, хранящиеся на вместительном жестком диске сервера, а ходом обучения руководит запущенная там программа. Таким образом, налицо удаленное использование аппаратного оборудования, программ и данных одновременно. Как всегда бывает, любое изобретение помимо пользы может приносить и вред. Компьютерные сети в этом отношении не являются исключением. Во-первых, следует обязательно помнить, что подключение вашего компьютера к сети делает потенциально возможным несанкционированный доступ извне к находящейся на нем информации. Вовторых, компьютерные вирусы все активнее используют сети для своего распространения; последнее время их эпидемии приобрели глобальный характер и развиваются стремительно. В-третьих, чрезмерное увлечение виртуальным общением, по-видимому, несет определенную опасность для отдельных людей и общества в целом. Оценка данного пункта не так очевидна, как двух предыдущих, поэтому ограничимся лишь упоминанием о существовании такой проблемы. Для подсоединения компьютера к сети необходимо наличие специальных аппаратных и программных средств. Нас сейчас будет интересовать только первая из составляющих. К аппаратным средствам компьютерных сетей относится несколько видов устройств. Прежде всего это сами подключаемые к сети компьютеры. В простейших случаях все участвующие в сети компьютеры равноправны и такая сеть называется одноранговой. В более сложных конфигурациях выделяются специализированные компьютеры — серверы, которые предоставляют свои ресурсы для обслуживания входящих в сеть машин. Для организации передачи и приема данных каждый из компьютеров должен иметь специальное сетевое устройство, которое может быть двух типов: сетевой адаптер и модем. Разница между ними заключается в том, что первые организуют работу по специализированным компьютерным линиям связи, а вторые — по обычной телефонной сети или иным уже имеющимся линиям, например, сети кабельного телевидения. Характерной особенностью применения модемов является временный (для осуществления передачи данных по аналоговой линии) переход от цифровой формы представления к аналоговой. Мы уже упомянули о том, что для доставки данных от одного компьютера к другому используются каналы связи. Классическим вариантом канала является использование качественных электрических кабелей. Высокие требования к кабелям возникают в связи с тем, что, как подробно изучено в физике, в них при передаче высокочастотных сигналов протекают весьма характерные волновые процессы, которые при неудачном подборе свойств могут приводить к существенным потерям. Распространены два способа существенного уменьшения потерь в кабеле: сделать его коаксиальным (центральная токопроводящая жила и вокруг нее экранирующая металлическая оплетка) или использовать свитые вместе провода1 (витую пару); первый способ обеспечивает меньшее затухание. Более современными и имеющими значительно лучшие характеристики являются оптические линии связи (световоды), информацию по которым переносит световой луч. Высокая частота оптических волн позволяет существенно повысить скорость передачи информации. Наконец, самые современные технологии передачи данных вообще стали беспроводными: они используют связь в инфракрасном и радиочастотном диапазонах волн. Перечисленных выше аппаратных средств уже достаточно для построения не слишком больших сетей. Тем не менее, когда компьютеров в сети становится много, линии связи начинают сильно перегружаться. Главным способом борьбы с этим негативным явлением служит разделение сети на отдельные сегменты. При этом используется еще один тип сетевого оборудования, которое называется коммутационным. К нему относятся концентраторы, коммутаторы, маршрутизаторы и некоторые другие устройства. Роль коммутационных устройств в организации сетей будет рассмотрена несколько позднее в связи с описанием различных топологий компьютерных сетей. В тексте вопроса говорится о топологии локальных сетей. Поэтому для начала — несколько слов о локальных сетях. Исторический путь развития компьютерных сетей был весьма естественным. Сначала для обмена данными объединялись компьютеры, находящиеся в пределах одной комнаты. Такую сеть назвали локальной (местной). Затем начали объединять между собой локальные сети, находящиеся в близко расположенных помещениях, затем в соседних зданиях. Масштабы сетей становились все шире и шире, пока, наконец, развитие технологий не позволило создать единую Сеть сетей — Интернет. Хотя термины локальная и глобальная сеть по-прежнему встречаются, но в современных условиях, когда практически все компьютеры имеют возможность соединения с мировой сетью, они теряют свою значимость. Именно поэтому столь безуспешны попытки, предпринимаемые авторами некоторых учебников, дать строгое определение локальной сети. За исключением нескольких экзотических ситуаций (каковой, кстати, является автономный, не связанный с внешним миром школьный КУВТ2) невозможно провести строгую границу, где именно и в связи с чем кончается “локальность” сети. Однозначными критериями не могут быть ни количество машин, ни их расположение в комнатах и зданиях, ни физическое расстояние между компьютерами (как, скажем, классифицировать внутреннюю служебную сеть разветвленной корпорации?). До последнего времени можно было еще пытаться искать какие-либо технологические отличия при соединении через сетевой адаптер или модем, но с развитием цифровых каналов связи стираются и эти различия. Даже программное обеспечение унифицируется: через браузер можно рассматривать не только материалы сети Интернет, но и находящиеся на вашем компьютере или на соседней машине компьютерного класса. Таким образом, мы видим, что понятие локальной сети практически “растворилось” и, если только специально не задаваться целью, организовать чисто локальную сеть уже невозможно. Познакомимся теперь с топологией компьютерных сетей и изучим ее наиболее простые варианты. Топологией сети называют способ соединения ее узлов. Она определяет правила физического соединения компьютеров в сети и направления прокладки сетевых кабелей. Примечание. Строго говоря, помимо физической топологии, определение которой приведено выше, существует еще топология логическая, задающая направления потоков данных между узлами сети. Указанные понятия не совпадают (подробнее см., например, энциклопедию М.Гука [1]). Типичные [1–3] топологии небольшой локальной сети приведены на рис. 1. Рис. 1. Типичные топологии сетей На рис. 1a изображена топология, которая носит название шина. При таком способе организации сети все компьютеры подсоединяются к общей линии. Рис. 1b демонстрирует другую топологию сети, называемую кольцом, при которой линия проходит через каждый из компьютеров, образующих сеть. На первый взгляд может показаться, что единственным отличием от предыдущего способа является замыкание линейной шины в кольцо, но это не так. Существенная особенность схемы заключается в том, что информационная линия в этом случае уже не является сплошной, она проходит через сетевые адаптеры компьютеров3. В случае некоторых неисправностей одного из адаптеров возможна потеря работоспособности всей сети в целом. Заметим, что использовавшиеся ранее в нашем образовании КУВТ Yamaha и УКНЦ имели именно такую разновидность сети. Перейдем к рассмотрению рис. 1c, на котором изображена топология звезда. В ней имеется некоторый выделенный (центральный) компьютер, к которому сходятся информационные линии ото всех остальных машин сети. Центральный компьютер может быть таким же, как и все остальные, но, как правило, его выбирают более мощным и надежным. Выход центрального компьютера из строя ведет к полной потере сетевых функций, зато поломка любого из остальных компьютеров на работоспособность сети не повлияет. По указанной схеме была построена сеть первого отечественного КУВТ-86, где “мощной” преподавательской машиной служила ДВК-2 (с дисководом!). Наконец, на рис. 1d показана топология более мощной сети, которая, в частности, может быть использована для объединения нескольких компьютерных классов. В каждом из них имеется своя сеть типа звезда, причем центральные машины подсетей подсоединены к общему для подразделения серверу. Такую топологию обычно называют деревом за сходство с соответствующей динамической структурой данных4. Подчеркнем, что описанными вариантами возможные топологии сетей, разумеется, не исчерпываются. К сожалению, изложенных выше “классических” представлений о топологиях сетей в современных условиях часто уже недостаточно. Главной причиной является падение производительности линий связи при большом количестве присоединенных компьютеров. Для преодоления данного недостатка сети сегментируют, т.е. разделяют на отдельные участки (сегменты), в каждый из которых достаточно естественным образом входят наиболее часто взаимодействующие между собой компьютеры. Примером таких сегментов могут служить отдельные компьютерные классы, хотя расположение компьютеров одного сегмента в общем помещении не является обязательным условием. Для сегментирования сетей используется специальное коммутационное оборудование: повторители, хабы, мосты, коммутаторы, маршрутизаторы и др. Разобраться в них неспециалисту достаточно сложно; для доказательства приведем пару характерных цитат из книги [1]. “Коммутатор (switch) в принципе выполняет те же функции, что и мост, но предназначен для несколько иных целей”. “Концентратор (concentrator) считается синонимом хаба, но может трактоваться шире (может включать набор повторителей, коммутаторов и мостов…)”. Поэтому мы не будем подробно знакомиться с отдельными коммутационными устройствами и ограничимся сделанным перечислением. Гораздо важнее понять идею сегментации, что поясняется на рис. 2. Рис. 2. Сегментация сети На рис. 2a показана простейшая одноранговая сеть, выполненная по топологии шины. Пусть в рассматриваемый момент времени происходит передача информации между компьютерами согласно списку, приведенному под рассматриваемым рисунком. Очевидно, что вся информация в этом случае проходит по шине. Обратимся теперь к рис. 2b, где показана сегментация сети на две части. Коммутационные устройства, схематически изображенные на рисунке в виде прямоугольников, формируют две подсети по два компьютера. В результате такого усовершенствованного решения “внутренний” обмен данными (между парами компьютеров 1–2 и 3–4) теперь производится коммутационными устройствами и на шину не выходит. Лишь информация от компьютера 2 к компьютеру 3, передаваемая между разными сегментами сети, нагружает шину. Понятно, что эффект будет тем заметнее, чем большая часть обмена будет протекать внутри сегментов. На практике, как правило, “соседние” компьютеры взаимодействуют чаще, поэтому сегментация сетей получила широкое распространение. Вот как, например, описана типовая структура современной компьютерной сети в здании [4]: “На каждом этаже здания размещается один или несколько элементов сегментации (концентраторов, коммутаторов или маршрутизаторов), к которым подключаются по витой паре рабочие станции, а серверы и другие элементы сегментации могут подключаться по коаксиальному или оптоволоконному кабелю”. Данная цитата интересна еще и тем, что поднимает проблему выбора линий связи, о чем пойдет речь далее. Следуя вопросу билета, рассмотрим основные характеристики линий связи. Для целей экзамена, разумеется, требуется лишь наиболее важный материал. Как рекомендуется, например, в книге [4], при выборе типа кабеля следует учитывать следующие показатели: · стоимость (в том числе стоимость монтажа и оборудования для него); · ограничения на длину без дополнительных коммутационных устройств; · скорость обмена; · безопасность передачи данных. Типичные характеристики для трех основных типов кабелей могут быть сведены в следующую таблицу. В заключение поговорим о профессиях, связанных с обеспечением эксплуатации компьютерных сетей. Примечание для учителей. Данный вопрос служит весьма типичным примером для демонстрации состояния современного учебного курса информатики. Какова ситуация? Рядовой учитель имеет общее представление о компьютерных сетях, их функциях и значимости, скорее всего наблюдал за тем, как специалисты смонтировали в компьютерном классе сеть и ее настроили, а затем каждодневно работает с ней на уровне имеющихся знаний. Он понимает важность компьютерных сетей в наше время и интуитивно чувствует, что его ученикам в профориентационных целях необычайно полезно иметь представление о профессиях в этой области деятельности. Поэтому в душе учитель конечно же разделяет заботы авторов билетов о политехнизме образования, но что конкретно он может рассказать по этому поводу ученикам? Его личный опыт, как мы видели, далек от профессионального, все типовые школьные учебники вообще не рассматривают данную проблему, а чтение технической литературы опять-таки требует наличия профессиональных знаний. “Но есть же еще Интернет!” — воскликнут ярые поклонники ИКТ. Да, именно туда я и обратился, потратив пару вечеров на поиск. В результате ответственно заявляю, что (по крайней мере в русскоязычном сегменте) найти что-либо содержательное по поводу компьютерных профессий весьма и весьма проблематично5. Кстати, характерно, что при попытке просто написать в качестве запроса предложение из билета в ответ выдается куча ссылок на сайты, где выложены тексты этих самых билетов. Тоже очень показательный момент: кругом одни вопросы без ответов! Ну и как быть учителю, чтобы на базе этой скудной информации подготовить для учеников материал по ответу к экзамену 6? Да еще качественно подготовить, как любят требовать в последнее время чиновники от образования. Все же надо бы сначала предоставить учителю необходимые возможности и только потом требовать от него конкурентоспособности образования! Дополнение от редакции. Разделяя точку зрения авторов, мы полностью сохранили это примечание. Вместе с тем отметим, что этот текст был написан до публикации в “Информатике” замечательных материалов А.А. Дуванова по компьютерным сетям. Надеемся, эти материалы восполняют очень существенный пробел в учебной литературе, на который обращают внимание авторы примерных ответов на билеты. Несмотря на все методические трудности, хочется не их обзора, а пути преодоления. Он предложен ниже, но прошу иметь в виду, что автор, будучи преподавателем провинциального педвуза, также далек от профессий, связанных с компьютерными сетями. Поэтому читатели должны помнить, что все последующее изложение есть личная точка зрения (“что бы лично я мог рассказать по этому вопросу, если бы имел несчастье на него отвечать”7). В ходе поиска в Интернете удалось найти сведения о весьма интересном проекте [5], осуществляемом Ассоциацией предприятий компьютерных и информационных технологий на базе известного вуза — Московского государственного института электроники и математики (МИЭМ). Он называется “Разработка профессиональных стандартов для отрасли информационных технологий” и направлен на разработку содержания подготовки по основным IT-профессиям. Что особенно интересно с точки зрения обсуждаемого билета, в приложении к письму с описанием проекта дан список этих профессий с краткой характеристикой. Видимо, с точки зрения экзамена это то, что нужно. Проект, к сожалению, еще не завершен, так что на его сайте никаких других материалов пока не представлено. Из найденного документа следует очень интересная деталь: в США и странах ЕС, оказывается, действует специальный классификатор профессий (Standard Occupational Classification, SOC), в котором имеются и описания соответствующих разновидностей профессиональной деятельности в сфере IT. Именно этот стандарт и послужил основой для заинтересовавшего нас сейчас списка. Примечание. К переносу иностранных стандартов на русскую почву следует подходить с некоторой осторожностью. Широко известен, например, международный стандарт содержания вузовских компьютерных дисциплин Computing Curricula, разрабатываемый и совершенствуемый под эгидой ACM (Association for Computing Machinery). Казалось бы, стремление к интеграции в глобальную систему образования должно приближать развитие нашей информатики к этому документу, но на практике имеет место обратное. В упомянутом приложении содержится снабженный краткими комментариями список, который состоит из 14 профессий. Исключив из него те, которые не имеют прямого отношения к компьютерным сетям, получим примерно половину. Вот они: Исследователь в сфере ИТ — Computer and Information Scientist, Research Специалист проводит фундаментальные и прикладные исследования в области вычислительной техники и информатики, осуществляя научно-исследовательскую, опытно-конструкторскую, научно-педагогическую, консультационную или изобретательскую деятельность. Объекты и средства профессиональной деятельности — аппаратные, программные и коммуникационные компоненты ИТ, а также агрегаты, комплексы и системы на их основе; известные и новые формальные методы решения исследовательских задач в сфере вычислительной техники и информатики. Системный администратор / Специалист по технической поддержке — Computer Support Specialist (объединение с профессией Network and Computer Systems Administrator) Специалист высших квалификационных уровней может планировать, координировать и реализовать мероприятия по обеспечению отказоустойчивости и восстановления функционирования компьютерной сети, а также обеспечивает информационную безопасность для пользователей сети. Специалист начальных квалификационных уровней обеспечивает техническую поддержку пользователей цифровых устройств, комплексов и систем (за исключением вопросов, связанных с доработкой и развитием этих объектов). Специалист выполняет либо координирует работы по развертыванию, конфигурированию и эксплуатации локальных и региональных компьютерных сетей, включая сегменты сети Интернет. Объекты и средства профессиональной деятельности — комплексы и системы на основе аппаратных, программных и коммуникационных компонент ИТ; сетевые ресурсы в информационных системах; инструментальные средства для эксплуатации сетевых конфигураций; инструментарий поддержки (helpdesk и т.п.). Системный аналитик — Computer Systems Analyst (объединение с профессией Network Systems and Data Communications Analyst) Специалист осуществляет анализ задач обработки данных, возникающих в различных сферах применения средств ИТ, и подготавливает исходные материалы для проекта информационной системы и/или рекомендации по использованию в системе имеющихся проектных решений (таких, как пакеты программ, конфигурации аппаратных средств и т.п.). Специалист высших квалификационных уровней осуществляет анализ, проектирование, тестирование и оптимизацию сетевых конфигураций в информационных системах различного назначения, может руководить деятельностью группы программистов и осуществлять консультационную деятельность. Объекты и средства профессиональной деятельности — задания на разработку либо развитие комплексов и систем на основе аппаратных, программных и коммуникационных компонент ИТ; инструментальные средства для описания и моделирования информационных и коммуникационных процессов; сетевые ресурсы в информационных системах. Менеджер информационных технологий (ИТ-менеджер) — Computer and Information Systems Manager Специалист осуществляет планирование, руководство и координацию различных видов деятельности (по квалификационным уровням — для отдельных проектов, групп проектов и комплексных направлений) в сфере создания и эксплуатации информационных систем различного назначения. Объекты и средства профессиональной деятельности — информационные системы; инструментальные средства для управления проектами, документирования, анализа и моделирования информационных и коммуникационных процессов в таких системах. Специалист по цифровой технике — Computer and Communications Hardware Engineer (объединение с профессией Electrical and Electronic Engineering Technician) Специалист осуществляет исследовательскую, опытно-конструкторскую и производственно-технологическую деятельность в сфере разработки и эксплуатации аппаратных средств цифровой (вычислительной, коммуникационной, измерительной и т.п.) техники. Специалист высших квалификационных уровней может также осуществлять консультационную деятельность. Специалист начальных квалификационных уровней может осуществлять производственно-технологическую деятельность и текущее обслуживание объектов в сфере разработки и эксплуатации цифровой техники. Объекты и средства профессиональной деятельности — аппаратные компоненты, агрегаты, комплексы и системы цифровой техники; инструментальные средства проектирования, документирования, анализа и моделирования таких объектов. Специалист по ремонту цифровой техники — Data Processing Equipment Repairer (объединение с профессией Electronic Home Entertainment Equipment Installers and Repairer) Специалист выполняет ремонтные и пуско-наладочные работы, связанные с применением аппаратных, программных и коммуникационных компонент в информационных системах различного назначения. Специалист начальных квалификационных уровней выполняет ремонтные работы, связанные с предпродажной подготовкой и послепродажным обслуживанием массовых изделий цифровой техники (в том числе аппаратных, программных и коммуникационных компонент и устройств компьютерной техники, используемых в бытовых целях). Объекты и средства профессиональной деятельности — аппаратные, программные и коммуникационные компоненты ИТ, а также агрегаты, комплексы и системы на их основе; соответствующая контрольно-диагностическая аппаратура. Специалист по информационным ресурсам — Content Engineer Завершение работы по стандартам для данной профессии планируется в США по проекту O*NET-SOC (http://online.onetcenter.org) в 2007 г. Предложенные экспертами США компоненты разделены на несколько групп (профилей) по компетенциям: Content Engineer, Content Manager, Web Administrator, Web Analyst, Web Application Developer, Web Architect, Web Graphic Designer, Web Page Designer, Web Programmer, Web Site Project Manager. Напомним, что мы процитировали материал, найденный по ссылке [5]. Подчеркнем, что приведенный выше список содержит все профессии, связанные с компьютерными сетями. В вопросе говорится лишь об эксплуатации сетей, так что данный список для экзаменационных целей можно сократить. Что касается российских реалий, то в наше время практически все специалисты, занимающиеся эксплуатацией сетей, занимают должность сетевого администратора. Поэтому дополнительно приведем краткие сведения именно по этой специальности. Главным в работе сетевого администратора является умение регистрировать все происходящие в сети события и процессы с целью обнаружения неполадок, узких мест, конфликтов оборудования и программ, устранение их причин и в конечном счете улучшения работы сети. В обязанности администратора входит следующее [4, 6]: · добавление и удаление пользователей, организация групп пользователей; · подключение и удаление аппаратных средств; · резервное копирование, проверка целостности файловой системы; · обслуживание имеющихся сетевых сервисов (электронная почта, ftp и др.); · инсталляция новых программ; · мониторинг системы, выявление ее узких мест; · поиск неисправностей; · восстановление после сбоев различного характера; · ведение журнала сетевых изменений и других важных событий, обновление электронной и печатной документации; · слежение за безопасностью системы; · оказание помощи пользователям. Это лишь некоторые (наиболее важные) задачи сетевого администратора. На самом деле круг его обязанностей гораздо шире (часто даже неоправданно шире, учитывая разнообразие профессий, перечисленных выше). Примечание. Материал по последней части вопроса при ответе на экзамене может быть существенно сокращен. Подробности, приводимые в данной публикации, имеют целью снабдить учителя дополнительным материалом для работы на уроке. В заключение отметим, что вопросы, связанные с Интернетом, будут рассмотрены отдельно в билете № 25. Литература 1. Гук М. Аппаратные средства локальных сетей. Энциклопедия. СПб.: Питер, 2004, 573 с. 2. Симонович С.В., Евсеев Г.А., Алексеев А.Г. Общая информатика: Учебное пособие для средней школы. М.: АСТ-ПРЕСС, Инфорком-Пресс, 2000, 592 с. 3. Шауцукова Л.З. Информатика: Учебное пособие для 10–11-х классов общеобразовательных учреждений. М.: Просвещение, 2003, 416 с. 4. Никифоров С.В. Введение в сетевые технологии: Элементы применения и администрирования сетей: Учебное пособие. М.: Финансы и статистика, 2003, 224 с. 5. http://www.apkit.ru/default.asp?artID=5573. 6. Немет Э., Снайдер Г., Хейн Т. Руководство администратора Linux. М.: Издательский дом “Вильямс”, 2004, 880 с. 2. С помощью электронной таблицы решить уравнение с заданной точностью и представить решение графически Пример. С помощью электронной таблицы решите уравнение sinx =1/x на отрезке [2; 3] с точностью 0,1. Решение. Есть два варианта решения: 1) рассмотреть отдельно функции y = sinx и y =1/x, найти координаты точки их пересечения на указанном отрезке, ориентируясь на заданную точность; 2) рассмотреть функцию y = sinx-1/x и найти ее нуль на заданном отрезке. Решим задачу по второму сценарию, первый предлагаем реализовать читателю самостоятельно. Протабулируем функцию y = sinx-1/x на заданном отрезке. Как известно из курса математического анализа, на том отрезке, где функция меняет знак, существует хотя бы один корень, а если функция еще и монотонна на этом отрезке, то корень единственный. В нашем случае имеем единственный корень на отрезке [2,7; 2,8]. Так как заданная точность — 0,1, то определим, который из концов отрезка нужно выбрать в качестве приближенного решения. Для этого вновь протабулируем функцию на отрезке [2,7; 2,8] с шагом 0,01. По результатам табулирования получаем, что корень ближе к 2,8, следовательно, ответ: x 2,8. См. рисунок. Варианты заданий С помощью электронной таблицы решите заданное уравнение на отрезке [a; b] с точностью 0,1. Представить решение графически. 3. Написать программу для вычисления количества сочетаний (формулируется как комбинаторная задача, решаемая в общем случае). Произвести ввод и отладку программы. Проанализировать полученный результат Пример. Напишите программу, вычисляющую, сколько вариантов составов по n человек может выпустить на поле тренер спортивной команды, если всего в команде m человек (числа задаются в виде аргументов или вводятся с клавиатуры). Решение. В данной задаче требуется вычислить количество сочетаний из n по m: QBasic DECLARE FUNCTION F (n AS INTEGER) DIM n AS INTEGER, m AS INTEGER INPUT n, m PRINT F(n) / (F(m) * F(n - m)) FUNCTION F (n AS INTEGER) k=1 FOR i = 1 TO n k=k*i NEXT i F=k END FUNCTION Pascal Program Soch; Function F(n:integer):Longint; Var k:Longint; i: integer; Begin k := 1; for i := 1 to n do k := k * i; F := k End; Var n, m: integer; Begin Write('n, m? '); readln(n, m); Writeln(F(n) div (F(m) * F(n – m))) End. C++ #include <iostream.h> long F(int n); void main() {int n, m; cout << "n, m? "; cin >> n >> m; cout << F(n) / (F(m) * F(n — m)); } long F(int n) {long k = 1; int i; for (i = 1; i <= n; i++) k = k * i; return k; } Примечание. Точные вычисления в приведенных программах можно производить лишь для n, не превосходящих 12. Более эффективно в данной задаче применение треугольника Паскаля, который строится так: . 1 При скручивании снижается емкостная и индуктивная связь между проводами. Успешное развитие национального проекта “Образование” приведет к практически полному исчезновению подобной сетевой конфигурации. 2 3 В учебнике [2] это не учтено, и соответствующий рисунок выглядит неточно. Можно также сравнить с иерархической файловой структурой MS-DOS, уподобив папки серверам, а компьютеры — файлам. 4 Собственно, а почему каждый учитель должен лично заниматься ликвидацией разрыва между госстандартами и издаваемыми в огромных количествах учебниками, которые к тому же государственными органами рекомендованы? 5 Вы думаете, такая ситуация в информатике только по отдельным вопросам? А вы не пробовали, скажем, в соответствии со стандартами преподавать предмет “Основы искусственного интеллекта”? 6 7 Увы, не факт, что я бы объективно поставил за такой ответ пятерку. Билет № 14 1. Основные этапы становления информационного общества. Информационные ресурсы государства, их структура. Образовательные информационные ресурсы. Информационная этика и право, информационная безопасность. Правовые нормы, относящиеся к информации, правонарушения в информационной сфере, меры их предотвращения. Развитие новых информационных технологий и их быстрое проникновение во все сферы жизни породило новое направление в современной информатике — социальная информатика, включающее в себя следующую проблематику: · информационные ресурсы как фактор социально-экономического и культурного развития общества; · закономерности и проблемы становления информационного общества; · развитие личности в информационном обществе; · информационная культура; · информационная безопасность, а также другие проблемы, близкие к данным. В последней трети XX в. все увереннее зазвучали голоса специалистов (в первую очередь социологов, философов, информатиков), утверждавших, что развитие и внедрение средств информатизации и информационных технологий во все сферы жизни общества в целом и большинства его членов ведет к качественному переходу общества в новое состояние. Само название “информационное общество” впервые возникло в Японии. Специалисты, предложившие этот термин, разъяснили, что он определяет общество, в котором в изобилии циркулирует высокая по качеству информация, а также есть все необходимые средства для ее хранения, распределения и использования, т.е. информация легко и быстро распространяется по требованиям заинтересованных людей и организаций и выдается им в привычной для них форме. При этом стоимость пользования информационными услугами настолько невысока, что они доступны каждому. Академик В.А. Извозчиков предложил считать информационным (компьютеризированным) то общество, во все сферы жизни и деятельности членов которого включены компьютер, телематика и другие средства информатики в качестве орудий интеллектуального труда, открывающих широкий доступ к сокровищам библиотек, позволяющих с огромной скоростью производить вычисления и перерабатывать любую информацию, моделировать реальные и прогнозируемые события, процессы, явления, управлять производством, автоматизировать обучение и т.д. (под телематикой понимается обработка информации на расстоянии). Существуют и иные подходы к определению информационного общества. Тем не менее основные его признаки выделяются достаточно устойчиво. В таком обществе: · любой его член, группа членов, любая организация или учреждение в любое время могут получить доступ к информационным ресурсам, необходимым для профессиональной деятельности или в личных целях; · доступны современные информационные технологии и средства связи; · создана развитая информационная инфраструктура, позволяющая постоянно пополнять и обновлять информационные ресурсы в количествах, необходимых для решения задач социального, экономического и научно-технического развития. Информация всегда играла огромную роль в жизни общества и отдельного индивидуума. Владение информацией, доминирование на информационном поле с древнейших времен было необходимым условием наличия власти у господствовавшей социальной группы. Развитие средств хранения, передачи и обработки информации в истории человеческого общества шло неравномерно. Несколько раз в истории человечества происходили радикальные изменения в информационной области, которые называют информационными революциями. Первая информационная революция связана с изобретением письменности. Письменность создала возможность для накопления, распространения знаний и передачи знаний будущим поколениям. Цивилизации, освоившие письменность, развивались быстрее других, достигали более высокого культурного и экономического уровня. Примерами могут служить Древний Египет, страны Междуречья, Китай. Внутри этой революции весьма значимым оказался переход от пиктографического и иероглифического письма к алфавитному, что сделало письменность более доступной и в значительной степени способствовало смещению центров цивилизации в Европу. Вторая информационная революция (середина XVI в.) была связана с изобретением книгопечатания. Появилась возможность не только сохранять информацию, но и сделать ее массово-доступной; грамотность становится массовым явлением. Все это ускорило развитие науки и техники, помогло промышленной революции. Книги перешагнули границы стран, что способствовало началу создания общечеловеческой цивилизации. Третья информационная революция (конец XIX в.) была обусловлена прогрессом в развитии средств связи. Телеграф, телефон, радио позволили оперативно передавать информацию на любые расстояния. Именно в этот исторический период началось зарождение того процесса, который в наши дни называют глобализацией. Прогрессивные средства передачи информации в значительной мере способствовали бурному развитию науки и техники. Четвертая информационная революция (70-е гг. XX в.) связана с появлением микропроцессорной техники и, в частности, персональных компьютеров. Отметим, что не появление компьютеров в середине XX в., а именно создание микропроцессорных систем обусловило данную информационную революцию. Возникшие вскоре компьютерные телекоммуникации радикально изменили системы хранения и поиска информации. Именно четвертая информационная революция дала толчок к столь существенным переменам в развитии общества, определившим появление нового термина — “информационное общество”. Парадоксально, но по мере перехода от этапа одной информационной революции к другой нарастали проявления так называемого “информационного кризиса” — явления, важнейшей чертой которого является превышение того уровня объема информации, за которым находится способность человека воспринимать и анализировать ее. До изобретения книгопечатания образованный европеец, знавший три-четыре языка, мог прочесть практически всю европейскую литературу и отследить почти полностью значимую общественно-политическую информацию. В результате второй информационной революции стало невозможно прочитать все имеющиеся книги, а в результате третьей — полностью отследить оперативную информацию. Это и были первые проявления информационного кризиса. Данные процессы небезобидны, так как принятие важных решений требует полного владения информацией по соответствующей проблеме, ее осмысления и анализа. В полной мере информационный кризис проявился к середине XX в. Потоки информации стали столь огромными, что человек уже не мог воспринимать их и анализировать в полной мере. Это касается даже относительно узких сфер человеческой деятельности. Например, порой бывает проще и экономически целесообразнее выполнить определенную научно-техническую разработку, нежели найти полную информацию о ней. Подобные явления ведут к разобщенности и определенной растерянности специалистов и тех, кто принимает ответственные решения. Возникновение больших потоков информации было обусловлено: · постоянным увеличением числа периодических изданий по разным областям знаний. Так, если в начале XX в. число ежемесячных физических журналов, чтение которых позволяло научному работнику быть полностью в курсе событий, не превышало десяти, то к концу века их стало выходить на порядок больше; при этом объем каждого выпуска увеличился во много раз; · чрезвычайно быстрым ростом числа книг, документов, отчетов, диссертаций, докладов и т.п., в которых излагаются результаты различных видов научной и практической деятельности. Описанное явление, наступившее в информационной сфере к середине XX в., часто характеризуют как информационный взрыв. По оценкам специалистов, общая сумма знаний менялась на начальном этапе развития цивилизации очень медленно, но уже начиная с 1900 г. период удвоения объема знаний составил 50 лет, с 1950 г. — 10 лет, с 1970 г. — 5 лет, к концу XX в. — 1 год. Информационный кризис породил ряд негативных явлений. Среди них отмечают: · противоречия между ограниченными возможностями человека по восприятию и переработке информации и постоянно нарастающими информационными потоками; · существование огромной избыточной информации, которая затрудняет восприятие полезной информации; · укрепление образовательных, экономических, политических и других социальных барьеров, препятствующих распространению информации. Одна из задач информационного общества — смягчение последствий информационного кризиса. Следует, однако, отчетливо сознавать, что если внедрение компьютеров и информационных технологий в экономику, промышленность, средства переработки и передачи информации, иные сферы профессиональной деятельности и повседневной жизни человека позволяет решить многие проблемы технически, то в социальном плане это не всегда удается. Свидетельством этого являются, в частности, растущие проявления информационного неравенства на пути продвижения к информационному обществу. Определимся с понятием информационного ресурса. Ресурс — это запас или источник некоторых средств. Всякое общество, государство, фирма и частное лицо имеют определенные ресурсы, необходимые для их жизнедеятельности. Традиционно различают следующие виды общественных ресурсов: материальные, сырьевые (природные), энергетические, трудовые, финансовые. Одним из важнейших видов ресурсов современного общества являются информационные ресурсы. Значимость информационных ресурсов постоянно растет; одним из свидетельств этого является то, что уже на нынешней фазе продвижения к информационному обществу информационные ресурсы становятся товаром, совокупная стоимость которого на рынке сопоставима со стоимостью традиционных ресурсов. Существуют разные подходы к понятию информационных ресурсов. Юридическая формула, принятая в Федеральном законе России “Об информации, информатизации и защите информации”, гласит: “Информационные ресурсы — отдельные документы и отдельные массивы документов, документы и массивы документов в информационных системах (библиотеках, архивах, фондах, банках данных, других информационных системах)”. Это определение дает юридическое основание для решения проблемы охраны информационных ресурсов. Во всех документах и массивах документов, о которых говорилось ранее, в разных формах представлены знания, которыми обладали люди, создававшие их. Эти знания зачастую уникальны; их использование позволяет экономить материальные ресурсы, совершенствовать социально-экономические отношения и т.п. Вместе с тем, как и многие другие юридические формулы, приведенное определение информационных ресурсов сильно сужает понятие, которое большинством людей воспринимается гораздо шире. Здесь нет противоречия, просто не все в жизни можно измерить точными формулами. На самом деле к информационным ресурсам уместно относить все научно-технические знания, произведения литературы и искусства, множество иной информации общественно-государственной значимости, зафиксированной в любой форме, на любом носителе. Информационные ресурсы общества в настоящее время рассматриваются как стратегические ресурсы, аналогичные по значимости ресурсам материальным, сырьевым, энергетическим, трудовым и финансовым. Однако между информационным и другими ресурсами существует одно важнейшее различие: всякий ресурс после использования исчезает (сожженное топливо, израсходованные финансы и т.п.), а информационный ресурс остается, им можно пользоваться многократно, он копируется без ограничений. Более того, по мере использования информационный ресурс имеет тенденцию увеличиваться, так как использование информации редко носит совершенно пассивный характер, чаще при этом генерируется дополнительная информация. Вместе с тем необходимо понимать, что информационный ресурс несамостоятелен и сам по себе имеет лишь потенциальное значение. Только соединяясь с другими ресурсами — техникой, энергией, сырьем и т.д., информационный ресурс реализуется как нечто материальное. Любая попытка дать классификацию информационных ресурсов общества оказывается неполной. В основу классификации можно положить: · отраслевой принцип (по виду науки, промышленности, социальной сферы, по тому, к чему относится информация); · форму представления (по виду носителей, степени формализованности, наличию дополнительного описания и пр.) и другие принципы. Внутри каждого класса можно проводить дополнительное, более детальное разделение. Например, ресурсы сети Интернет можно разделять по их назначению и формам представления: сервисная информация, библиографическая информация, материалы телеконференций, программное обеспечение, видео и т.д. Крупнейшей категорией информационных ресурсов являются национальные информационные ресурсы. Это понятие сформировалось не так давно, в начале 1980-х гг., в ответ на растущую зависимость развитых стран от объемов информации, уровня развития средств ее передачи и обработки. Возможный способ их классификации представлен в [1]: В развитых странах огромные информационные ресурсы скрыты в библиотеках. Доминируют традиционные (бумажные) формы их представления, но все больше библиотечных ресурсов в последние годы переводится на цифровую (безбумажную) основу. Архивы скрывают материалы (иногда многовековые), связанные с историей и культурой страны. Объемы архивных материалов огромны и часто накапливаются быстрее, чем их удается обрабатывать. Во всех развитых странах существуют специализированные системы научно-технической информации. Они включают в себя многочисленные специальные издания, патентные службы и т.д. Информация такого рода часто является дорогостоящим товаром. Без сводов законов, кодексов, нормативных актов и других видов правовой информации не может существовать ни одно государство. Свои отраслевые информационные ресурсы имеются у любой социальной, промышленной, аграрной и иной сферы общества. Огромны информационные ресурсы оборонной сферы, системы образования и т.д. Наряду с национальными информационными ресурсами можно выделить такие категории, как информационные ресурсы предприятия (организации), информационные ресурсы частного лица и т.д. Разумеется, эти категории не обладают той степенью общности, которая отражена на приведенной выше схеме, а зависят от вида организации, специальности и интересов конкретного лица. Образовательные информационные ресурсы разного рода учебных заведений имеют примерно схожую структуру. Например, информационные ресурсы вуза могут быть согласно [1] классифицированы так В настоящее время значительное количество образовательных информационных ресурсов располагается в сети Интернет. Для их объединения, классификации существует государственный образовательный портал http://edu.ru. Несколько слов об информационной этике и праве. Итак, что такое этические нормы? Этика (от греч. e-thos — обычай, нрав, характер) — это учение о нравственности (морали), ее происхождении и развитии, о правилах и нормах поведения людей, об их обязанностях по отношению друг к другу, к обществу, государству и т.п. Таким образом, этические нормы есть то, что регулирует поведение людей и их отношения в повседневной жизни, — сложившиеся в данной местности обычаи, традиции и прочие “неписаные законы”, как их часто метко называют. Часто эти нормы и традиции просто не осознаются и выполняются “автоматически”. Скажем, воспитанный мужчина в помещении не будет ходить в шапке, а, здороваясь, прежде чем подать руку, снимет перчатку. Не все даже помнят, что эти действия восходят к рыцарским временам, когда они имели глубокий смысл: снимая защищавший голову шлем, рыцарь показывал свое доверие дому, в который вошел, а рука без перчатки демонстрировала открытость намерений. Все это давно утратило первоначальный смысл, но до сих пор сохраняется в качестве общепринятых обычаев. Некоторые современные молодые люди, правда, демонстративно не соблюдают принятые в обществе нормы поведения, пытаясь подчеркнуть собственную исключительность; к сожалению, кроме наплевательского отношения к окружающим, никаких других отличительных особенностей такие люди чаще всего не имеют, а их невысокий уровень развития не позволяет им это осознать. Этические нормы могут существенно зависеть от региона, где проживают люди. Например, согласно существующим до сих пор традициям, в некоторых странах женщины должны закрывать свое лицо; можно считать это пережитком, но подобные нормы соблюдаются большинством населения. Хорошим примером этических норм являются традиции в выборе одежды (а иногда, в теплых странах, и сам факт ее наличия). Минимальный наряд, совершенно естественный на пляже, на званом вечере будет воспринят совершенно по-другому. Лауреат Нобелевской премии должен быть в смокинге, и хотя для российских ученых это иногда затруднительно, — положение обязывает! Подчеркнем, что этические нормы как бы дополняют собой юридические, что позволяет эффективно регулировать повседневные отношения людей. В информационной деятельности этические нормы тоже постепенно складываются. Особенно отчетливо они проявляются сейчас в Интернете, где юридические законы часто невозможно применять, но определенное понятие о том, “что такое хорошо и что такое плохо”, все же существует и поддерживается. Для того чтобы представить себе, что нельзя делать в Интернете, заглянем на сайт yandex.ru, а точнее, в его пользовательское соглашение (www.yandex.ru/info/agreement.html): документ, определяющий среди прочего и ограничения на деятельность пользователей. Там сказано, что последние не должны использовать контент (материал), “который является незаконным, вредоносным, угрожающим, клеветническим, оскорбляет нравственность, нарушает авторские права, пропагандирует ненависть и/или дискриминацию людей по расовому, этническому, половому, религиозному, социальному признакам, содержит оскорбления в адрес конкретных лиц или организаций”. Особо подчеркивается недопустимость спама и всего, что с ним связано, публикации схем “пирамид”, многоуровневого (сетевого) маркетинга (MLM), “писем счастья”, материалов, содержащих вирусы, и других “вредоносных” кодов, а также направленных на помощь в осуществлении несанкционированного доступа или “взлома” коммерческих программных продуктов. Наконец, запрещается “размещение и пропаганда порнографии и детской эротики, а также реклама интимных услуг”, и, кроме того, нельзя публиковать материалы, “способствующие разжиганию национальной розни, подстрекающие к насилию над каким-либо лицом или группой лиц, либо к бесчеловечному обращению с животными, призывающие к совершению противоправной деятельности, в том числе разъясняющие порядок применения взрывчатых веществ и иного оружия, и т.д.”. Одним из наиболее грубых нарушений в настоящее время является спам — несанкционированная рассылка электронных писем. Пока он сдерживается в основном этическими нормами, но, учитывая его постоянно растущий объем (по некоторым данным 3/4 всех электронных писем являются спамом), в отдельных странах делаются первые попытки законодательной борьбы с этим негативным явлением. Перейдем теперь к правовым аспектам информационной деятельности. Они представляют собой довольно сложную область, поскольку творческая деятельность человека вообще трудно поддается формализации. Проблемы такого рода существуют во всех странах, но они решаются по-разному. В нашей стране, к сожалению, их во многих случаях просто игнорируют. Поэтому дальнейшее изложение будет разделено на две части: как должно быть по уже имеющимся у нас юридическим нормам, и как обстоит дело на самом деле. Очень важно сказать, что автор может по-разному реализовывать распространение своего программного обеспечения. В частности, просто подарить свою программу, включая ее исходный текст, всем пользователям, разрешив применять все это по своему усмотрению. Такой способ распространения называется свободным. Свободные программы в особой охране не нуждаются, поэтому далее в соответствии с вопросом мы должны сосредоточить свое внимание на ПО, которое распространяется коммерческим путем и подлежит правовой охране. К нему, в частности, относятся практически все широко распространенные продукты фирмы Microsoft. Как должно быть Базовые законы, которые являются фундаментом применения программ и баз данных, были приняты достаточно давно: закон № 3523-1 “О правовой охране программ для электронных вычислительных машин и баз данных” — 23.09.92 и закон № 5351-1 (№ 110-ФЗ) “Об авторском праве и смежных правах” — 9.07.93 с исправлениями и дополнениями от 19.07.95. Познакомимся с наиболее важными положениями этих законов. Начнем с нескольких определений: это хороший путь, чтобы закон был однозначным и не вызывал разночтений. Основными объектами информационной деятельности на ЭВМ закон признает программу для ЭВМ и базу данных. “Программа для ЭВМ — объективная форма совокупности данных и команд, предназначенных для функционирования электронных вычислительных машин (ЭВМ) и других компьютерных устройств с целью получения определенного результата. Под программой для ЭВМ подразумеваются также подготовительные материалы, полученные в ходе ее разработки, и порождаемые ею аудиовизуальные отображения”. “База данных — это объективная форма представления и организации совокупности данных (например: статей, расчетов), систематизированных таким образом, чтобы эти данные могли быть найдены и обработаны с помощью ЭВМ”. Программы для ЭВМ или базы данных используются человеком в тех или иных целях. “Использование программы для ЭВМ или базы данных — это выпуск в свет, воспроизведение, распространение и иные действия по их введению в хозяйственный оборот”. К сожалению, последнее определение “тянет за собой” еще три, что связано с разнообразием способов использования: мы можем пользоваться программами для ЭВМ или базами данных сами, а можем передавать их копии другим. “Выпуск в свет (опубликование) программы для ЭВМ или базы данных — это предоставление экземпляров программы для ЭВМ или базы данных с согласия автора неопределенному кругу лиц (в том числе путем записи в память ЭВМ и выпуска печатного текста)”. “Воспроизведение программы для ЭВМ или базы данных — это изготовление одного и более экземпляров программы для ЭВМ или базы данных в любой материальной форме, а также их запись в память ЭВМ”. “Распространение программы для ЭВМ или базы данных — это предоставления доступа для воспроизведения в любой материальной форме программы для ЭВМ или базы данных, в том числе сетевыми или иными способами, а также путем продажи, проката, сдачи внаем, предоставления взаймы…” А теперь, наконец, поговорим своими словами о правовой охране программы и данных. Начнем с того, что они рождаются благодаря автору. “Автор — это физическое лицо, творческим трудом которого создано произведение”, в том числе программа или база данных. Отсюда очевидно, что автор должен обладать определенными правами на “свое детище”; их совокупность кратко называют авторским правом, которое, собственно, и является объектом правовой охраны. Авторское право на программы для ЭВМ или базы данных возникает в силу их создания — не требуется какой-либо регистрации или иной формальной процедуры. Автор оповещает о своих правах путем указания знака охраны авторского права, состоящего из трех элементов: символа “©” или (“С”), наименования (имени) автора и года первого выпуска программы или базы данных. Авторское право распространяется на любые программы и базы, как выпущенные, так и не выпущенные в свет (т.е. факт широкого распространения необязателен), независимо от материального носителя, назначения и достоинства. Не следует смешивать авторское право с правами на их материальный носитель: грубо говоря, запись чужой программы на ваш диск еще не дает вам на саму программу никаких прав. Программы могут быть написаны на любом языке и в любой форме, включая исходный текст и объектный код. Пока не доказано обратное, все они считаются результатом творческой деятельности автора. И еще одно очень важное положение. Авторское право распространяется только на саму программу (не случайно в определении говорится об объективной форме!). Идеи и принципы, включая “идеи и принципы организации интерфейса и алгоритма, а также языки программирования”, под авторское право не попадают. Приведу в качестве примера “юридически чистый” принцип создания BIOS-компьютеров. Как известно, в BIOS имеется некоторый набор стандартных функций ввода-вывода, код которых, разумеется, защищен авторскими правами. Но можно поступить следующим образом. Создать две группы специалистов, первая из которых подробно изучит BIOS и опишет его функции, а вторая использует это описание как техническое задание. Поскольку вторая группа даже не знакома с оригинальным BIOS, то результат ее творчества хотя и будет делать то же самое, но никакого нарушения авторского права здесь не будет. Кстати, по аналогичной схеме были сделаны многие модели процессоров AMD, только в качестве источника информации использовалась официальная документация фирмы Intel. Для случая баз данных правовая охрана распространяется на творческий труд по подбору и организации данных. Сами данные не обязательно являются объектами авторского права того, кто разработал базу. При этом, разумеется, включение в базу материалов не должно нарушать чьих-либо еще авторских прав: нельзя, например, создать базу данных из текстов рассказов писателя без его ведома и т.п. Все входящие в базу данные могут быть использованы независимо от нее. Авторское право действует с момента создания программы или базы в течение всей жизни автора и 50 лет после его смерти. Некоторые авторские права могут передаваться по наследству; сейчас мы не будем обсуждать этот аспект, хотя бы потому, что программы живут слишком мало, чтобы пережить автора на 50 лет. Истечение срока действия авторского права означает его переход в общественное достояние. Такие произведения могут свободно использоваться всеми. Общественным достоянием также считаются те произведения, которым ранее никогда не предоставлялась охрана (например, стихи Пушкина; применительно к программам это едва ли возможно). Теперь, когда мы получили некоторое общее представление о возникновении и охране авторских прав, рассмотрим более подробно, в чем они состоят. Прежде всего, права бывают личные и имущественные. Личные права: · право авторства — право считаться автором; · право на имя — право определять, в какой форме указывать имя (свое имя, псевдоним или анонимно); · право на неприкосновенность (целостность) — т.е. право на защиту как самой программы или базы, так и их названий “от всякого рода искажений или иных посягательств, способных нанести ущерб чести и достоинству автора”. Имущественные права состоят в исключительных правах автора на разрешение осуществления следующих действий: · выпуск в свет; · воспроизведение в любой форме и любыми способами; · распространение (определения всех трех понятий были даны ранее); · иное использование, включая модификацию, перевод с одного языка на другой и т.д. Подчеркнем, что первая группа прав охраняется бессрочно и не передается по наследству. Вторая же, напротив, обладает ограниченным сроком действия и по наследству передаваться может. Таким образом, закон предоставляет автору все права, связанные с распространением своего произведения (отметим, что под произведением понимаются не только программы и базы данных, но и литературные, музыкальные и другие произведения, копии фильмов, песен и т.п.). Все перечисленные выше действия без согласия автора незаконны. Разумеется, автор может передавать свои имущественные права другим лицам, иначе, кроме композитора, никто не смог бы исполнять и даже слушать его музыку. Для этого заключается соответствующий договор с другими физическими или юридическими лицами. Смысл подобных договоров состоит в том, что автор получает причитающееся ему авторское вознаграждение, а за это тот, кто оплатил право на использование произведения, может его воспроизводить для себя, публично исполнять или даже тиражировать (например, фирма звукозаписи). Существенным отличием от традиционной “пиратской” схемы является то, что тиражирование ведется по договору и, значит, с ведома и согласия автора, причем последний получает с этого четко оговоренное вознаграждение. При пиратском копировании автор даже не ставится в известность, а об авторском гонораре и говорить не приходится… (впрочем, мы несколько забежали вперед — сейчас мы говорим, как все должно быть по закону!). В искусстве (например, музыке) авторские права реализуются сложнее, чем в использовании программ и баз данных. В последнем случае достаточно просто оплатить право пользования данным экземпляром программы. Строго говоря, при этом должен подписываться договор, но для упрощения процедуры закон допускает “применение особого порядка заключения договоров, например, путем изложения типовых условий договора на передаваемых экземплярах программ для ЭВМ и баз данных”. Такой договор принято называть лицензией. При этом важно понимать, что в случае несогласия с указанными условиями вы обязаны вернуть продукт, а начало его использования юридически означает признание вами этих условий. Лицо, правомерно владеющее экземпляром программы или базы, вправе без дополнительных разрешений осуществлять любые действия, связанные с функционированием программы или базы на ЭВМ. При этом (обязательно обратите внимание!) запись и хранение в памяти ЭВМ допускаются в отношении только одной ЭВМ и только одного пользователя в сети, если особо не оговорено иное. Проще говоря, если вы приобрели программу и используете ее на своем компьютере, то, как бы ни уговаривал вас ваш лучший друг, по закону вы не имеете права отдать ему свой компактдиск для установки. Обычно для упрощения понимания сути однопользовательского соглашения используется аналогия с книгой. Представьте себе, что вы приобрели в магазине книгу. Вы можете читать ее сами в любое время, когда захотите, и даже дать ее почитать всем друзьям по очереди. Но нельзя сделать так, чтобы и вы, и ваши друзья читали одну и ту же книгу в разных комнатах одновременно! Точно так же обстоит дело и с программой. Добавим только, что, как правило, договор разрешает иметь еще одну, “страховочную” копию, но ее можно использовать исключительно для восстановления программы или базы данных. Такая копия “не может быть использована для других целей и должна быть уничтожена в случае, если дальнейшее использование этой программы для ЭВМ или базы данных перестанет быть правомерным” (например, при передаче программы или базы другому человеку). Наконец, самое впечатляющее. “Физическое или юридическое лицо, которое не выполняет требований настоящего Закона…, в том числе ввозит в Российскую Федерацию экземпляры программы для ЭВМ или базы данных, изготовленные без разрешения их правообладателей, является нарушителем авторского права”. Экземпляры программ для ЭВМ или баз данных, изготовленные с нарушением авторских прав, называются контрафактными. Распространение контрафактной продукции и ее использование преследуется по закону. Как обстоит дело в реальности А теперь вернемся на грешную землю. Наиболее наблюдательные читатели, конечно, обратили внимание на тот факт, что законы, о которых говорилось выше, приняты около десяти лет назад. За такое время результаты их применения (если бы они применялись) должны быть уже видны. Увы, особенно похвастаться нечем. Психология времен холодной войны, когда мы крали программное обеспечение у “проклятых империалистов” и тем самым приближали торжество справедливости, не торопится уходить вместе с происшедшими в мире изменениями. К тому же отношение государства к интеллектуальному труду и, соответственно, к его результатам, мягко говоря, не улучшилось. Зато появились новые мотивы, почему не надо платить за ПО, — экономические. Люди быстро усвоили, что все определяет цена, а надо ли говорить, что цена пиратских дисков с программами на порядки ниже. Да, а еще мы бедные, у нас конечно же нет денег на покупку программ, а Билл Гейтс вон какой богатый (нехороший человек)… Социологи без труда назовут еще множество причин, почему в нашей стране не соблюдаются авторские права на программное обеспечение. Многие люди просто не задумываются над этим вопросом, пока вокруг такое. И действительно, одна из главных причин — это, несомненно, безнаказанность. Тысячи последних версий Windows и MS Office (а это, как всем известно, коммерческое ПО) работают практически повсеместно, но все ли они установлены законно? Глядя на многочисленные совершенно легальные отделы продажи пиратских компакт-дисков, возникают серьезные сомнения. Некоторые более сознательные пользователи пиратов не поощряют, они устанавливают Windows с лицензионных дисков. Правда, с тех, с которых уже установлено 15–20 копий в их организации, что едва ли более законно. В общем, создается впечатление, что кто-то выдал нашей стране на продукты Microsoft одну большую лицензию на всех. Кстати говоря, на большинстве пиратских дисков обычно один и тот же регистрационный код — так, может быть, это и есть номер той самой регистрации? Сейчас, когда пишутся эти строки, в Пермском крае (что для авторов — пермяков — особенно актуально) проходит судебный процесс над директором сельской школы А.Поносовым, обвиняемом в незаконном использовании продуктов Microsoft в учебном процессе. Наши читатели уже наверняка знают, чем закончилась эта печальная история, нам же остается лишь посочувствовать коллеге, который, похоже, даже не сильно понимает, в чем его обвиняют. И немудрено L. Нашли одного конкретного пешехода и судят за переход улицы на красный свет… Рассмотрим некоторые проблемы информационной безопасности и правовых норм в информационной сфере [2]. По мере продвижения к информационному обществу все более острой становится проблема защиты права личности, общества и государства на конфиденциальность (т.е. секретность) определенных видов информации. Уже сегодня в странах, в которых в массовом порядке используются компьютерные сети, предпринимаются огромные усилия по охране информации. Каждый человек, доверяющий информацию о себе государственному органу или фирме, вправе рассчитывать на то, что она не будет разглашена или использована ему во вред. В России в 2000 г. принята Доктрина информационной безопасности Российской Федерации. Рассмотрим основные ее положения. К объектам информационной безопасности РФ относятся: · все виды информационных ресурсов; · права граждан, юридических лиц и государства на получение, распространение и использование информации, защиту информации и интеллектуальной собственности; · система формирования, распространения и использования информационных ресурсов, включающая в себя информационные системы различного класса и назначения, библиотеки, архивы, базы и банки данных, информационные технологии и т.д.; · информационная инфраструктура, включающая центры обработки и анализа информации, каналы информационного обмена и телекоммуникации, механизмы обеспечения функционирования телекоммуникационных систем и сетей; · система формирования общественного сознания (мировоззрение, моральные ценности, нравственные оценки, социально допустимые стереотипы поведения и взаимоотношения между людьми), базирующаяся на средствах массовой информации и пропаганды. Национальные интересы РФ включают в себя: а) соблюдение конституционных прав и свобод человека и гражданина в области получения информации и ее использования, обеспечение духовного становления России, сохранение и укрепление ценностей общества; б) информационное обеспечение государственной политики РФ, связанное с доведением до российской и международной общественности достоверной информации о государственной политике РФ; в) развитие современных информационных технологий отечественной индустрии информации; г) защита информационных ресурсов от несанкционированного доступа, обеспечение безопасности информационных и телекоммуникационных систем. В доктрине формулируются методы обеспечения информационной безопасности страны, включая правовые, организационно-технические и экономические, а также особенности обеспечения информационной безопасности РФ в различных сферах общественной жизни: экономической, политической, в сфере обороны, науки и техники и др. Одной из важнейших проблем в обсуждаемой сфере доктрина объявляет проблему информационного неравенства, которое вносит раскол в общество и отчуждение между составляющими его группами населения; поэтому данная проблема имеет прямое отношение к национальной безопасности. Особенно важно преодоление проявлений информационного неравенства в образовании, поскольку: · появилась тенденция разделения образовательных учреждений на элитные и массовые с соответствующей разницей в ресурсном обеспечении; · велико различие уровней доходов семей учащихся; · значителен разрыв в размерах финансового обеспечения образовательных учреждений в различных регионах страны. Преодоление информационного неравенства является задачей первостепенной государственной важности. Уже на раннем этапе продвижения к информационному обществу необходимы меры правового регулирования вновь возникающих отношений. Каждая страна идет в этом направлении своим путем. Юридические вопросы, возникающие в информационной сфере, столь сложны и запутанны, что гармоничного законодательства, решающего все соответствующие проблемы, нет ни в одной стране мира. Коротко опишем некоторые законы, действующие в этой сфере в Российской Федерации. Закон “О правовой охране программ для ЭВМ и баз данных” дал юридически точное определение понятий, связанных с авторством и распространением компьютерных программ и баз данных. Он определил, что авторское право распространяется на указанные объекты, являющиеся результатом творческой деятельности автора. Автор (или авторы) имеет исключительное право на выпуск в свет программ и баз данных, их распространение, модификацию и иное использование. Однако имущественные права на указанные объекты, созданные в порядке выполнения служебных обязанностей или по заданию работодателя, принадлежат работодателю. Имущественные права, в отличие от авторских, могут быть переданы иному физическому или юридическому лицу на договорной основе. Для современного состояния нашего общества именно вопросы, связанные с нарушением авторских и имущественных прав, являются наиболее актуальными. Значительная часть программного обеспечения, использующегося отдельными пользователями и даже организациями, получена путем незаконного копирования. Эта практика мешает становлению цивилизованного рынка компьютерных программных средств и информационных ресурсов. Закон “Об информации, информатизации и защите информации” частично решает вопросы правового регулирования на информационном рынке защиты прав и свобод личности от угроз и ущерба, связанных с искажением, порчей, уничтожением “персональной” информации. Закон создает условия для включения России в международный информационный обмен, закладывает основы предотвращения бесхозяйственного отношения к информационным ресурсам и информатизации, частично обеспечивает информационную безопасность и права юридических и физических лиц на информацию. Закон рассматривает информационные ресурсы в двух аспектах: как материальный продукт, который можно покупать и продавать, и как интеллектуальный продукт, на который распространяется право интеллектуальной собственности, авторское право. Особое внимание обратим на статью 11 закона “информация о гражданах (персональные данные)”. В ней содержатся гарантии недопущения сбора, хранения, использования и распространения информации о частной жизни граждан (это может делаться лишь на основании решения суда), недопустимости использования собранной любым путем информации для дискриминации граждан по любому признаку. В 1996 году в уголовный кодекс был впервые внесен раздел “Преступления в сфере компьютерной информации”. Он определил меру наказания за некоторые виды преступлений, ставших, к сожалению, распространенными: · неправомерный доступ к компьютерной информации; · создание, использование и распространение вредоносных программ для ЭВМ; · умышленное нарушение правил эксплуатации ЭВМ и их сетей. Отметим, что правовое регулирование в этой сфере, в силу ее быстрого развития, всегда будет отставать от жизни. Как известно, наиболее счастливо живет не то общество, в котором все действия людей регламентированы, а наказания за все дурные поступки прописаны, а то, которое руководствуется в первую очередь соображениями этического порядка. Это значит, в данном случае, что государство не злоупотребит информацией, доверенной ему гражданином, потому что оно устроено должным образом; что информация не крадется не потому, что за это предусмотрено наказание, а потому, что человек считает воровство, в любом его проявлении, низким поступком, порочащим его самого. Именно к таким отношениям между государством и личностью, а также между отдельными членами общества мы должны стремиться. Литература 1. Могилев А.В., Пак Н.И., Хеннер Е.К. Информатика: Учебное пособие для педагогических вузов / Под ред. Е.К. Хеннера. М.: Академия, 2004, 848 с. 2. Семакин И.Г. Информатика. 10-й класс / И.Г. Семакин, Е.К. Хеннер. М.: БИНОМ. Лаборатория Знаний, 2004, 165 с. 3. Колин К.К. Фундаментальные основы информатики: социальная информатика. Изд-во “Академический проект”. М., 2000, 350 с. 4. Урсул А.Д. Информатизация общества. Введение в социальную информатику. М., 1990. 2. В готовом текстовом документе отформатировать заголовки различного уровня соответствующими стилями. Выполнить автоматическое формирование оглавления. Стиль форматирования — набор элементов форматирования (шрифта, абзаца и пр.), имеющий уникальное имя. Любой абзац документа Word оформлен определенным стилем, стандартным или пользовательским. В Word существует четыре основных вида стилей: · стили символов; · стили абзацев; · стили таблиц; · стили списков. Стилевое форматирование имеет ряд преимуществ перед ручным: · экономит время. Применить стиль как набор элементов форматирования значительно быстрее, чем применять их один за другим; · способствует единообразию оформления документа. При ручном форматировании одинаковые по смыслу форматирования разделы могут отличаться своими форматами, применение же стиля вносит строгость в оформление документа; · позволяет быстро изменить вид отдельных элементов во всем документе. В этом случае достаточно внести изменения в стиль, и оформление вступит в силу во всем документе. Стили абзацев обычно объединяют элементы форматирования символов и абзацев и определяют вид абзаца. При этом должны быть заданы все элементы форматирования для абзаца. Заголовки являются абзацами. Для их оформления используются специальные стили Заголовок 1, Заголовок 2 и т.д., которые задают иерархию заголовков в документе. Если стиль необходимо применить к одному абзацу, то достаточно установить курсор в любое место этого абзаца или выделить необходимый фрагмент. Стиль можно применить одним из способов. · Панель инструментов Форматирование, список Стиль, выбрать нужный стиль. · Панель задач Стили и форматирование, выбрать нужный стиль (для отображения панели задач использовать меню Формат—Стили и форматирование (см. рисунок)). · Установить курсор в абзац-образец, щелкнуть кнопку на панели инструментов Стандартная, применить стиль по образцу к нужному абзацу, переместившись к нему. Панель задач Стили и форматирование Для того чтобы оглавление могло быть вставлено автоматически, при создании структуры документа (что уже отмечалось выше) все заголовки определенного уровня должны быть оформлены с помощью соответствующего стиля заголовка. Всего в иерархии заголовков возможно девять уровней. Затем в соответствующем месте документа (если это оглавление, то в начале, если содержание — в конце) осуществляется вставка оглавления. Это можно проделать одним из способов: меню Вставка—Ссылка—Оглавление и указатели или через панель инструментов Структура, инструмент Оглавление . В диалоговом окне необходимо выбрать формат оглавления (т.е. один из вариантов оформления), ориентируясь на образец; заполнитель между последним словом пункта оглавления и номером страницы; задать, если необходимо, количество уровней заголовков в структуре документа, по которым собирается оглавление. Диалоговое окно Оглавление и указатели, вкладка Оглавление После этого оглавление можно вставить. Если что-либо в его оформлении не устраивает, вставку можно повторить. Довольно часто по ошибке стилем заголовков оформляют не являющиеся таковыми абзацы. Естественно, что они попадают в оглавление. Необходимо очистить у них формат заголовка, задав нужный стиль, и повторить вставку оглавления или произвести обновление оглавления: панель инструментов Структура, кнопка Обновить оглавление . 3. Вычислить информационный объем сообщения исходя из вероятностного подхода. Пример. Какова вероятность угадать в “Спортлото” три числа, если в карточке есть 49 номеров и зачеркивается 6 из них? Каков информационный объем сообщения о том, что угадано 3 числа? Решение. Количество всех возможных способов заполнения карточки можно посчитать как количество сочетаний по 6 из 49: Так как требуется получить одновременно три верных ответа из шести возможных верных и три ошибочных из общего числа сорока трех ошибочных, то количество верно угаданных трех чисел можно посчитать следующим образом: Вероятность угадать в “Спортлото” три числа подсчитывается как отношение количества благоприятных событий к общему числу возможных вариантов заполнения карточки: Информационный объем сообщения о том, что угадано три числа в “Спортлото”, можно посчитать по формуле бита. Задачи для решения 1. Сколько бит информации несет сообщение о том, что из колоды в 32 карты достали “даму пик”? 2. Проводятся две лотереи: “4 из 32” и “5 из 64”. Сообщение о результатах какой из лотерей несет больше информации? 3. Какое количество информации о цвете вынутого шарика будет получено, если в непрозрачном пакете хранятся: 30 белых, 30 красных, 30 синих и 10 зеленых шариков? 4. Какое количество информации о цвете вынутого шарика будет получено, если в непрозрачном пакете хранятся: 10 белых, 20 красных, 30 синих и 40 зеленых шариков? 5. В школьной библиотеке 16 стеллажей с книгами. На каждом стеллаже 8 полок. Библиотекарь сообщил Пете, что нужная ему книга находится на пятом стеллаже на третьей сверху полке. Какое количество информации передал библиотекарь Пете? Билет № 15 1. Классификация и характеристика программного обеспечения компьютера. Взаимосвязь аппаратного и программного обеспечения компьютера. Многообразие операционных систем. Понятие о системном администрировании. Программные и аппаратные средства для решения различных профессиональных задач. Классификация и характеристика программного обеспечения компьютера Работой компьютера управляет программа. Все программы компьютера, которые хранятся в его внешней памяти, образуют программное обеспечение (ПО). Многообразие программ для компьютеров можно классифицировать следующим образом (см. табл. 1). ПО можно разделить на две большие категории: системные программы и прикладные программы. Таблица 1 Системные программы предназначены для управления техническими и программными средствами компьютера, организации диалога с пользователем, для разработки новых программ. Изучают работу системных программ специалисты в области информатики. Основу системного ПО составляют операционные системы. Самая популярная в настоящее время операционная система для персональных компьютеров — Windows XP. При включении компьютера операционная система загружается в оперативную память и организует выполнение всех других программ, взаимодействие пользователя с программами и компьютером. Утилита — это системная программа, выполняющая некоторую специализированную функцию, например, оптимизацию дисковой памяти, защиту от вирусов. Системы программирования предназначены для создания новых программ. Из школьного курса известны системы QBasic, Turbo Pascal, Delphi, Visual Basic. Обычно система программирования содержит небольшой текстовый редактор для написания программы, средства синтаксического контроля, транслятор для перевода программы на машинный язык, редактор связей для подключения стандартных функций и процедур, отладчик. Прикладное ПО используется для решения определенных информационных задач пользователя. Благодаря прикладным программам компьютеры используют в различных областях деятельности человека, а также для игр и развлечений. Прикладное ПО можно разделить на три части: программы общего назначения, программы специального назначения и профессионального уровня. Прикладное ПО общего назначения включает следующие программы. Текстовые редакторы и издательские системы. Примеры текстовых редакторов — Блокнот, WordPad, Word. Текстовые редакторы позволяют вводить, обрабатывать и печатать текстовую информацию. Издательские системы имеют более мощные функции для верстки текста. Примеры: PageMaker, Ventura Publisher. Табличные процессоры обрабатывают информацию, представленную в виде таблиц. Основное их достоинство — при вводе новых данных производится мгновенный пересчет по формулам, числовые данные отображаются в графических диаграммах. Пример — MS Excel. Графические редакторы позволяют строить статические и динамические изображения, редактировать изображения, введенные с помощью сканера и видеокамеры. Примеры: Paint, Photoshop, CorelDraw. Музыкальные редакторы могут работать с аудиофайлами различных форматов, редактировать их и создавать звуковые эффекты, например, редактор Sound Forge. Системы управления базами данных предназначены для манипулирования большими объемами данных, организованными в базы данных. Пример — СУБД для персонального компьютера Access. Программы разработки презентаций создают слайд-фильмы для докладов и рекламных сообщений, пример — PowerPoint. На слайд можно поместить любую информацию: текст, графику, анимацию, таблицу, диаграмму, звуковые эффекты. Программы-браузеры позволяют работать пользователю с ресурсами Интернета, просматривать web-страницы. Пример — Internet Explorer. Рассмотрим программы специального назначения. Авторские системы предоставляют пользователю стандартный интерфейс для выполнения работ в некоторой предметной области. Экспертные системы решают задачи с неполными исходными данными, требующие экспертных знаний. Отличительной чертой экспертных систем является их адаптивность, самообучение. В состав экспертной системы входят база знаний (компьютерная модель знаний специалиста в конкретной области) и модуль логического вывода. Экспертные системы распространены в науке, технике, медицине. Гипертекстовые системы организуют иерархию нескольких текстовых документов с помощью гиперссылок. Гиперссылка — это ключевое слово, с которым связан указатель для перехода к другому документу. Если документы, кроме текста, содержат графическую и звуковую информацию, то система называется гипермедиа и применяется в Интернете. Технология WWW структурирует информационные ресурсы, расположенные на разных серверах, с помощью гиперссылок. Мультимедийные программы объединяют интерактивным интерфейсом графику, видео, анимацию и звук. Используются в обучающих программах, в рекламе и играх. Программы профессионального уровня ориентированы на конкретную профессиональную деятельность, реализованы в виде информационных систем. АИСУ — автоматизированная информационная система управления — состоит из модуля сбора информации, базы данных, модуля обработки и анализа информации и модуля формирования выходной информации. Обеспечивает поддержку планирования, принятия решений, оперативного управления и учета, проводит анализ результатов работы предприятия. Пример — программа “1С: Предприятие” управляет всеми бизнеспроцессами предприятия, автоматизирует бухгалтерский и управленческий учет, планирует и анализирует хозяйственную деятельность. САПР — системы автоматизированного проектирования — моделируют, проводят технические расчеты, создают эскизы и чертежи для автоматизации инженерного проектирования новых механизмов, зданий. Обучающие системы основаны на электронных учебниках и дистанционных курсах. Электронный учебник объединяет обучающие программы, интерактивный тренинг, тесты и другие виды контроля, основан на мультимедийной технологии. Дистанционное образование реализуется в глобальной сети и позволяет получить образование людям, географически удаленным от образовательных центров. Геоинформационные системы хранят данные, привязанные к географической карте. Указав на объект географической карты или схемы города, получают некоторую информацию об этом объекте. Пример — ГИС “Черное море”. Информационно-поисковые системы дают оперативные ответы на запросы пользователей. Примеры — библиотечная справочная система, поисковые серверы Интернета. Взаимосвязь аппаратного и программного обеспечения компьютера Операционные системы являются программной прослойкой между аппаратными средствами, с одной стороны, и пользователем и программами — с другой стороны. ОС организует пользовательский и программный интерфейс. ОС избавляет программиста и пользователя от необходимости напрямую работать с аппаратурой, предоставляет им виртуальную машину, которой легко управлять и которую легко программировать. ОС берет на себя рутинные операции по управлению всеми аппаратными устройствами компьютера (физической памятью, таймером, принтерами). Операционная система управляет аппаратурой с помощью драйверов устройств. Это программы, взаимодействующие с контроллерами устройств для выполнения операций в периферийных устройствах. Драйвер разрабатывается для конкретного типа устройства: принтера, дисковода, накопителя на магнитной ленте, монитора. Он преобразует запрос в последовательность команд физических операций, которые нужно выполнить устройству. Драйвер учитывает специфические особенности конкретных устройств. Это позволяет создать обобщенную ОС, которая настраивается на использование конкретных периферийных устройств с помощью установки соответствующих драйверов. Многообразие операционных систем Операционные системы можно разделить на группы по следующим признакам (см. табл. 2). Таблица 2 Рассмотрим эти категории. Однопользовательская ОС обслуживает одного пользователя. Многопользовательская ОС работает со многими пользователями, которые подключаются к вычислительной системе с помощью терминалов. Однозадачная ОС уже ушла в историю, она обрабатывала только одну прикладную программу. Многозадачная, или мультипрограммная, ОС располагает в оперативной памяти одновременно несколько задач. Центральный процессор их попеременно обрабатывает. Мультипрограммирование развивается в трех вариантах. 1. Цель системы с пакетной обработкой — максимальная загрузка аппаратуры. Критерием эффективности в системах пакетной обработки является максимальная пропускная способность, т.е. решение максимального количества задач в единицу времени. Системы используются для вычислительных задач, не требующих вмешательства программиста. В начале работы формируется мультипрограммная смесь — пакет заданий, множество одновременно выполняемых задач. Смесь строится из задач, предъявляющих различные требования к ресурсам. Например, в смесь включают вычислительную задачу и задачу с интенсивным вводом-выводом. Выбор нового задания зависит от внутренней ситуации в системе. Следствие — нет гарантии выполнения задачи в течение определенного периода времени. Пакетная обработка повышает эффективность работы аппаратуры, но взаимодействие программиста с программой сведено к нулю. 2. Мультипрограммирование в системах разделения времени. Критерий эффективности — удобство работы пользователя. Пользователям или одному пользователю предоставляется возможность интерактивной работы сразу с несколькими приложениями. ОС попеременно выделяет квант процессорного времени всем приложениям, принудительно периодически приостанавливает приложения. Пользователь ведет диалог со своей программой. Системы разделения времени обладают меньшей пропускной способностью, т.к. на выполнение принимается каждая запущенная задача, а не та, которая выгодна системе в данный момент. Производительность также снижается за счет накладных расходов на переключение процессора с одной задачи на другую. 3. Мультипрограммирование в системах реального времени. Системы предназначены для управления технологическим процессом (станком, спутником). В этих случаях существует предельно допустимое время, время реакции системы, в течение его должна быть выполнена управляющая объектом программа. Критерий эффективности — время реакции системы. В системах реального времени мультипрограммная смесь представляет собой фиксированный набор заранее разработанных программ, выбор программы на выполнение определяется текущим состоянием объекта или в соответствии с расписанием плановых работ. В этих системах не стремятся максимально загружать все устройства, наоборот, проектируется некоторый запас, на случай пиковой нагрузки. Мультипроцессирование — это организация вычислительного процесса в системах с несколькими процессорами. Задачи могут выполняться на разных процессорах. Несколько процессоров включаются даже в архитектуру персонального компьютера, серверы обязательно многопроцессорные. Следует различать мультипрограммирование и мультипроцессирование. В мультипрограммных системах несколько программ выполняются попеременно на одном процессоре, создавая видимость параллельного выполнения. В мультипроцессорных системах несколько задач выполняются действительно одновременно на различных процессорах. Мультипроцессирование не исключает мультипрограммирования, на каждом процессоре может выполняться некоторый набор задач. Средства мультипроцессирования включены во все современные ОС: Sun Solaris 2.x, Santa Cruz Operations Open Server 3.x, IBM OS/2, MS Windows NT, Novell NetWare 4.1. Сетевые системы обеспечивают совместное использование ресурсов всеми выполняемыми в сети задачами. Ресурсы выделяются задачам по потребностям, невзирая на местоположение этих ресурсов в сети. Сети — это один из вариантов многопроцессорной системы. Все современные ОС стали сетевыми. ОС могут работать с основными технологиями локальных и глобальных сетей. ОС поддерживают работу с Интернетом, включают утилиты популярных служб — telnet (работа с удаленным компьютером), ftp (передача файлов с удаленного компьютера), DNS (служба доменных имен), web-сервис. Приведем примеры операционных систем. Семейство операционных систем Windows занимает ведущее положение в мире персональных компьютеров. Современная операционная система — это Microsoft Windows XP (от английского слова eXPerience — опыт). Существует в трех модификациях: 1. Microsoft Windows XP Home Edition — для домашних персональных компьютеров. 2. Microsoft Windows XP Professional Edition — для офисных ПК. 3. Microsoft Windows XP 64bit Edition — для ПК на базе 64-битного процессора. В мире ПК менее распространены ОС семейства Apple (Macintosh), пример операционной системы — Mac OS. Операционные системы семейства UNIX стали стандартом для мини-ЭВМ, Linux — современный вариант OS UNIX, предназначенный для использования на ПК. Понятие о системном администрировании Рассмотрим задачи, которые возникают при администрировании автономного компьютера на примере распространенной операционной системы Windows XP. Основная задача системного администратора — обеспечение безопасной и эффективной работы компьютера. Безопасная система защищает данные от несанкционированного доступа, всегда готова предоставить ресурсы своим пользователям, надежно хранит информацию, гарантирует неизменность данных. Для авторизованного входа в систему применяют учетные записи пользователей. Учетные записи пользователей. Если в разное время с компьютером работает несколько человек, то возникает необходимость регистрации в системе новой учетной записи для входа в Windows. Windows XP является многопользовательской системой, различные пользователи могут независимо друг от друга настроить интерфейс Рабочего стола, работать с собственными файлами и папками, настраивать для себя выход в Интернет и к электронной почте. Регистрация учетной записи с ограниченными возможностями позволит системному администратору допускать неопытных пользователей, запретив им устанавливать новое программное обеспечение, изменять настройки системы, запускать некоторые программы. В системе можно зарегистрировать пользователей двух стандартных категорий: Администратор компьютера или Ограниченная запись. Администратор обладает следующими правами: · установка оборудования и программного обеспечения; · изменение всех системных настроек; · доступ ко всем файлам, кроме индивидуальных файлов других пользователей; · создание, удаление и изменение учетных записей пользователей; · изменение статуса собственной учетной записи; · изменение прав доступа других пользователей к ресурсам компьютера. Пользователь с ограниченной записью может изменить свой пароль для входа в систему и пользоваться правами, которые для него установил администратор. Управление задачами и процессами. Windows XP является мультипрограммной системой, т.е. в оперативной памяти могут располагаться несколько запущенных задач. Если запущенная программа “зависла”, то не обязательно перезапускать компьютер, можно снять задачу. Это позволит сделать утилита Диспетчер задач. Здесь же можно переключиться на другую задачу, инициировать новую. Каждая запускаемая задача порождает процесс. Утилита позволит также завершить процесс, изменить его приоритет, просмотреть информацию о загрузке процессора, оперативной памяти и других аппаратных ресурсах и т.д. Для обеспечения надежного хранения данных в системе администратору следует периодически запускать следующие утилиты по работе с дисками: · проверка диска — проверяет диск на наличие сбойных секторов; · дефрагментация диска — устраняет фрагментацию файлов и дисков; · очистка дисков — предложит список неиспользуемых программ и файлов, которые можно удалить для освобождения дисковой памяти; · архивация данных — осуществляет резервное копирование данных на дисках. Система Windows XP имеет механизм Восстановление системы, который позволит восстановить систему в случае сбоя и повреждений. Администратор, убедившись, что система работает корректно и стабильно, может создать точку восстановления системы, воспользовавшись утилитой Восстановление системы. Утилита создаст резервную копию системного реестра и необходимых служебных файлов. Если впоследствии вновь установленная программа или драйвер оборудования будут вызывать сбои, можно вернуться к точке восстановления системы. Утилита воссоздаст систему в том виде, какой она была в момент создания точки. Мы рассмотрели задачи администрирования автономно работающего компьютера. При работе компьютера в сети возникает множество других задач. Программные и аппаратные средства для решения различных профессиональных задач Этот пункт уже рассмотрен при классификации прикладного программного обеспечения в категории Программы профессионального уровня. Литература 1. Могилев А.В., Пак Н.И., Хеннер Е.К. Информатика: Учебное пособие для педагогических вузов / Под ред. Е.К. Хеннера. М.: Академия, 2004, 848 с. 2. Олифер В.Г., Олифер Н.А. Сетевые операционные системы. СПб.: Питер, 2001, 554 с. 3. Шалин П. Энциклопедия Windows XP. СПб.: Питер, 2002, 668 с. 2. С помощью электронной таблицы решить задачу табулирования заданной функции. Результат представить в табличной и графической форме. Задание ; n = 6, x изменяется от 1 до 2 с шагом 0,1. Решение Для упрощения расчетов преобразуем формулу. Можно применить следующее рекуррентное соотношение для подсчета очередного члена суммы: , здесь k = 1, 2, …, n Приступим к заполнению электронной таблицы. Внесем исходные данные. В столбец А внесем значение переменной х от 1 до 2 с шагом 0,1, используя автозаполнение. В строку 2 внесем значения переменной k, также используя автозаполнение. Получим следующую таблицу В строку 3 внесем подписи, которые означают очередной член суммы. Далее в столбец В скопируем значения переменной х из столбца А: Теперь можно в ячейку C4 внести рекуррентное соотношение, которое позволит вычислить a2: В этом выражении использовалась абсолютная адресация ячейки $A4 для того, чтобы имя столбца А не изменялось при распространении формулы вдоль строки, аналогично абсолютная адресация ячейки C$2 означает, что при копировании формулы вдоль столбца не будет меняться номер строки 2. Выражение из ячейки С4 можно распространить на блок ячеек D4:G4. Таким образом, в блоке B4:G4 будут получены все слагаемые суммы для начального значения х = 1, кроме единицы. Все готово, чтобы вычислить сумму для начального значения х = 1. Посчитаем ее в ячейке К4. К сумме добавлена единица, т.к. нулевой член ряда, равный единице для любого значения x, не вычисляется в таблице. Столбцы H, I, J остались пустыми для того, чтобы можно было увеличить значение n до 9. Распространяя блок ячеек C4:K4 на блок C4:K14, получим результат: В этой таблице можно увеличить диапазон изменения переменной х. Для этого нужно выделить блок A4:K14 и распространить его на большие значения х. Используя мастер диаграмм, построим график функции. Вызываем мастер диаграмм и выбираем точечную диаграмму: Далее укажем диапазон исходных данных, его образуют два блока — А4:А14 и К4:К14, и получим график: Варианты заданий С помощью электронной таблицы решить задачу табулирования заданной функции. Результат представить в табличной и графической форме. 1. 1 до 2 с шагом 0,1. , натуральное число n = 5, действительное число a изменяется от , действительное число x изменяется от 1 до 2 с шагом 2. 0,1. 3. от 1 до 2 с шагом 0,1. , натуральное число n = 6, действительное число x изменяется 4. шагом 0,1. , действительное число x изменяется от 2 до 3 с 5. изменяется от 2 до 3 с шагом 0,1. , натуральное число n = 6, действительное число x 3. Построить модель заданного физического процесса и реализовать ее на компьютере. Проанализировать полученный результат. Построим модель естественного радиоактивного распада ядер [1]. Сформулируем физическую задачу. Ядра распадаются, выбрасывая частицы и превращаясь в более легкие. Распад ядра происходит спонтанно и не зависит от внешних условий. Число распадов, регистрируемых в единицу времени, зависит только от количества атомов, ядра которых способны распадаться. Вероятность распада ядра определяется его устройством и может быть описана некоторым числом, характерным для данных ядер. Можно сформулировать следующие вопросы: · Как меняется со временем число ядер? · Через какое время распадается половина ядер? Построим математическую модель. На небольшом интервале времени t число распавшихся ядер – N = N(t) – N(t + t) пропорционально t и числу не распавшихся ядер в данный момент N: , — здесь — это некоторый коэффициент пропорциональности, определяемый веществом. Для решения задачи нужно задать количество ядер вещества в начальный момент t = 0: N = N0 . Выберем в качестве единицы времени t и представим размерное время , здесь — безразмерное время. В качестве характерного числа атомов выберем N0, т.е. , здесь показывает долю ядер от их числа в начальный момент. Подставляя размерные величины в исходную систему, получим безразмерные уравнения Все величины, входящие в систему, безразмерные, и знак безразмерной величины можно не употреблять. Составим алгоритм решения нашей системы. Так как , получим рекуррентное соотношение для числа не распавшихся ядер в моменты времени : Проведем численный эксперимент в MS Excel. Заполним заголовок таблицы и столбец А, который обозначает номер k, внесем начальное условие и зададим t = 0,1. В ячейку В3 внесем формулу для подсчета времени В4:В12. и распространим ее на блок В ячейку С3 внесем рекуррентное соотношение для подсчета N и скопируем его в блок С4:С12. В столбце В получено время, в столбце С — число ядер. Изобразим эту зависимость на графике: Для ответа на второй вопрос, который был поставлен в начале задачи, нужно определить момент времени T, за которое распадается половина ядер. Время можно определить из уравнения N(Т) = 0,5. Проведем эксперимент с различными значениями t, результаты поместим в таблицу: Значение времени Т стабилизировалось с точностью 0,001, определено время полураспада ядер Т = 0,693. Полученные в результате эксперимента результаты являются универсальными, так как безразмерная система уравнений не содержит характеристик вещества. Индивидуальность ядер проявляется лишь через масштаб времени . Варианты заданий 1. Составить модель броуновского движения. 2. Составить модель падения тела с учетом сопротивления среды. Литература 1. Бирих Р.В., Еремин Е.А., Чернатынский В.И. Компьютерные модели в школьном курсе физики. // Информатика № 14, 2006, с. 1–45. 2. Бирих Р.В., Еремин Е.А., Чернатынский В.И. Компьютерные модели в школьном курсе физики. // Информатика № 15, 2006, с. 3–14. 3. Шестаков А.П. Компьютерное математическое моделирование. Лекция № 2. Моделирование в естественных науках. Несколько классических моделей физики. // Информатика № 36, 2002, с. 7–14. 4. Шестаков А.П. Компьютерное математическое моделирование. Лекция № 3. Моделирование в естественных науках. Несколько классических моделей физики. // Информатика № 38, 2002, с. 8–15. 5. Могилев А.В., Пак Н.И., Хеннер Е.К. Информатика: Учебное пособие для педагогических вузов / Под ред. Е.К. Хеннера. М.: Академия, 2004, 848 с. Билет № 16 1. Компьютерные вирусы и антивирусные программы. Специализированное программное обеспечение для защиты программ и данных. Технологии и средства защиты информации в глобальной и локальной компьютерных сетях от разрушения, несанкционированного доступа Компьютерные вирусы и антивирусные программы Среди многообразных компьютерных программ существуют особенные программы, они созданы для того, чтобы причинить вред пользователям компьютеров. Это компьютерные вирусы. Компьютерным вирусом называют небольшую программу, которая способна создавать свои копии, внедрять их в файлы, системные области носителей информации и мешать корректной работе компьютера, разрушать информацию на внешних носителях. Пути проникновения вируса в компьютер — сменные носители информации и компьютерные сети. Перечислим внешние признаки, по которым можно догадаться о присутствии вируса в компьютере: · неправильная работа ранее успешно работавшей программы; · невозможность загрузки операционной системы; · искажение содержимого или полное исчезновение файлов и каталогов; · изменение даты, времени, размера файлов; · значительное увеличение количества файлов на дисках; · уменьшение свободной оперативной памяти; · вывод незапланированных сообщений, изображений на экран, звуковых сигналов; · частые зависания и сбои в работе компьютера. Можно привести классификацию вирусов по некоторым признакам. По способу заражения среды обитания вирусы можно разделить на две группы. 1. Резидентные вирусы оставляют в оперативной памяти свою часть, которая будет активна до выключения или перезагрузки компьютера. 2. Нерезидентные вирусы не заражают оперативную память и активны ограниченное время. По среде обитания вирусы делятся на следующие группы. 1. Файловые вирусы внедряются в исполняемые программы. Когда программа запускается, вирус получает управление, выполняет поиск подходящего файла, заражает его, производит некоторое действие, ради которого он и был написан, и возвращает управление приютившей его программе. 2. Загрузочные вирусы внедряются в программу начальной загрузки операционной системы, которая хранится в загрузочном секторе дискеты или жесткого диска. При загрузке операционной системы вирус попадает в оперативную память и выполняет следующие действия при заражении дискеты: · определяет некоторую область дискеты как сбойную и делает информацию из этого участка недоступной; · в загрузочный сектор внедряет свою копию и пересылает модифицированный код в выделенную область дискеты; · организует передачу управления сначала вирусу и только потом программе начальной загрузки. Заражение жесткого диска происходит аналогично. Кроме того, вирус может исказить таблицу разделов жесткого диска. 3. Файлово-загрузочные имеют признаки файловых и загрузочных вирусов. 4. Драйверные вирусы заражают системную программу — драйвер устройства или включают в файл конфигурации дополнительные строки. 5. Макровирусы обитают в офисных документах (текстовых и табличных), в создании которых использовался язык макрокоманд. Вирус перехватывает стандартные файловые операции и заражает файлы, к которым производится обращение. 6. Сетевые вирусы используют для своего распространения протоколы компьютерных сетей. Особенно опасны вирусы, приходящие из Интернета. Попав на сервер или рабочую станцию, вирус провоцирует пользователя на запуск объекта, где он содержится. Авторы используют разнообразные алгоритмы при написании вирусов. Алгоритмы можно разделить на следующие группы. 1. Паразитические вирусы — изменяют содержимое файлов и системных секторов, могут быть легко обнаружены и уничтожены. 2. Вирусы-репликаторы (черви) распространяются по компьютерным сетям, вычисляют адреса сетевых компьютеров и рассылают по этим адресам свои копии. 3. Вирусы-невидимки (стелс-вирусы) трудно обнаружить и обезвредить, так как они перехватывают обращение операционной системы к пораженным файлам и секторам и подменяют их незараженными участками. 4. Вирусы-мутанты содержат алгоритмы шифровки-расшифровки, копии вируса не содержат повторяющихся частей и их трудно обнаружить. 5. Троянские кони не способны к самораспространению, маскируются под полезную программу и разрушают загрузочный сектор или файловую систему. Рассмотрим антивирусные программы, предназначенные для обнаружения и удаления компьютерных вирусов. Детекторы. Эти программы обнаруживают загрузочные вирусы в системных областях дискет и дисков, сканируют файлы на магнитных дисках с целью обнаружения фрагментов кодов (сигнатур) уже известных вирусов. Функция детектирования включается во все современные антивирусные программы. Фаги способны не только обнаружить, но и уничтожить вирус, удалив код вируса из инфицированного файла и восстановив работоспособность программы. Ревизоры контролируют пути распространения вирусов, являются самыми надежными. Эти программы используют средства слежения за изменениями файлов и системных областей дисков, прием информации из Интернета. Однако такая защита замедляет работу компьютера, поэтому эти программы мало распространены. Фильтры располагаются в оперативной памяти резидентно и контролируют операции с файлами, выводят сообщения для пользователя об операции. Так как обычные программы тоже выполняют операции с файлами, вывод сообщений раздражает пользователей, и они редко применяют эти антивирусные программы. Вакцины ведут себя подобно вирусам, но вреда не причиняют. Предохраняют файлы от изменений со стороны уже известного вируса, способны обнаружить и иногда вылечить файл. Вакцины модифицируют программу или диск так, чтобы вирус считал их уже зараженными и не пытался внедриться. В настоящее время применяются редко. Среди антивирусных программ самой популярной является программа-полифаг “Doctor Web”. Это средство не просто сканирует файлы в поисках известных сигнатур, но и применяет эвристические методы поиска, может обезвредить полиморфные вирусы, которые не имеют определенной сигнатуры. Программа эффективно борется со сложными вирусами-мутантами, способна обнаружить изменения в собственном коде, проникает в упакованные и зашифрованные файлы. Для нахождения вируса фаги программным путем эмулируют работу микропроцессора, создают среду для размножения вируса. Таким образом можно бороться с вирусами, которые еще даже не написаны. Специализированное программное обеспечение для защиты программ и данных Наибольшую опасность целостности информации ПК представляют преднамеренные угрозы, создаваемые людьми. Противостоять этим угрозам можно, используя следующие методы. 1. Аутентификация пользователя предполагает применение пароля, опознавание в диалоговом режиме, применение физиологических характеристик личности, радиокодовых устройств, электронных карточек. Каждому зарегистрированному пользователю выдается пароль. Программа сравнивает введенный пароль с эталоном и при совпадении предоставляет пользователю доступ к системе. Опознавание в диалоговом режиме происходит по следующей схеме. В файлах защиты создаются записи, содержащие данные о личности пользователя (дата рождения, рост, имена и даты рождения родственников и т.д.) или большой набор паролей. При обращении пользователя программа механизма защиты предлагает пользователю назвать некоторые данные, которые сравниваются с имеющимися в системе записями. По результатам сравнения принимается решение о допуске. Для повышения надежности при каждом входе в систему запрашиваются другие данные. Для опознавания по индивидуальным физиологическим характеристикам, например по отпечаткам пальцев, требует специальную аппаратуру и сложные программы для обработки этих параметров и сравнения с эталоном. Поэтому этот способ редко применяется в компьютерных системах. Возможно опознавание пользователя по параметрам его работы с клавиатурой — скорость набора текста, интервалы между нажатием клавиш носят сугубо индивидуальный характер. Опознавание по радиокодовым устройствам предоставляет доступ владельцу устройства, генерирующего индивидуальный радиосигнал. ПК оснащается программно-аппаратными средствами для приема, регистрации и обработки сигнала. Но если устройство будет украдено, то его новый владелец может войти в систему. Опознавание по карточкам более надежно. На карточку заносят персональную информацию о пользователе в зашифрованном виде, информация и шифр известны только пользователю и системе. 2. Разграничение доступа к информации означает, что зарегистрированному пользователю предоставляется доступ в пределах его полномочий. Разработаны методы разграничения доступа к устройствам компьютера, к программам, к областям запоминающих устройств, к базам данных. Разграничение может проводиться несколькими способами: · По кольцам секретности. Данные распределяются по массивам так, чтобы в каждом массиве содержались данные одного уровня секретности, например, “секретно”, “совершенно секретно”. Пользователю предоставляется уровень допуска, например, “секретно”. Пользователю разрешается доступ к массиву своего уровня и запрещен доступ к массиву уровня “совершенно секретно”. · По спискам. Для файла составляется список пользователей, которые имеют к нему доступ. · По матрицам полномочий. Формируется матрица, строки которой содержат имена пользователей, а столбцы — элементы данных. Элементы матрицы содержат информацию о доступе пользователя к соответствующей информации. · По мандатам. Элементам информации присваиваются метки, и пользователю предоставляется разовое разрешение на допуск, если он предъявит метку элемента. 3. Криптографическая защита информации, предназначенной для длительного хранения. Шифрование данных совмещается с архивацией, сжатием. Иногда криптографическая защита применяется к информации в процессе ее обработки. 4. Регистрация обращений к защищаемой информации позволяет повысить эффективность защиты, присутствует во всех системах защиты информации. Мы рассмотрели задачи предупреждения несанкционированного доступа к ПК, которые составляют основу комплексной системы защиты. Пример системы защиты информации “Снег-2.0”. Технологии и средства защиты информации в глобальной и локальной компьютерных сетях от разрушения, несанкционированного доступа Сетевые операционные системы имеют встроенные средства защиты информации. Например, сетевая ОС NetWare 4.0 имеет систему SFT (система устойчивости к отказам), которая предусматривает три уровня: 1. Первый уровень. Создает дополнительные копии таблицы размещения файлов, верификацию вновь записанного на сервер блока данных, резервирует на диске 2% от объема диска. При обнаружении сбоя данные направляются в зарезервированную область диска, а сбойный блок помечается как “плохой” и больше не используется. 2. Второй уровень. Создание “зеркальных” дисков. 3. Третий уровень. Использует в локальной сети дублированные серверы. Система ограничения прав доступа в сетях NetWare тоже содержит несколько уровней. 1. Уровень начального доступа включает имя и пароль пользователя, систему учетных ограничений. 2. Уровень прав пользователей определяет персональные ограничения на выполнение операций. 3. Уровень атрибутов каталогов и файлов накладывает ограничения на операции удаления, редактирования, создания со стороны файловой системы. 4. Уровень консоли файл-сервера блокирует клавиатуру в отсутствие администратора. Однако полагаться на эту систему защиты информации можно не всегда. Это же справедливо по отношению к таким мощным сетевым ОС, как Windows NT, UNIX. Отдельные средства защиты, хорошо себя зарекомендовавшие, встраиваются в систему защиты ОС. Например, в ОС NetWare есть возможность кодирования данных по принципу открытого ключа с формированием электронной подписи для передаваемых по сети пакетов. Специализированные программные средства защиты информации от несанкционированного доступа имеют лучшие возможности, чем встроенные средства сетевых ОС. Кроме программ шифрования, отметим следующие две системы. Firewalls — брандмауэры. Между локальной и глобальной сетями создаются промежуточные сервера, которые инспектируют и фильтруют проходящий трафик. Это позволяет резко снизить угрозу несанкционированного доступа извне, но не устраняет эту опасность совсем. Более надежен метод маскарада, когда весь исходящий из локальной сети трафик посылается от имени Firewall-сервера, делая локальную сеть невидимой. Proxy-servers. Весь трафик между локальной и глобальной сетями запрещается полностью, обращение из локальной сети в глобальную проходит через сервер-посредник. Обращение из глобальной сети в локальную невозможно. Этот метод не дает защиты на уровне приложений. Литература 1. Могилев А.В., Пак Н.И., Хеннер Е.К. Информатика: Учебное пособие для педагогических вузов / Под ред. Е.К. Хеннера. М.: Академия, 2004, 848 с. 2. Информатика. Учебник / Под ред. Н.В. Макаровой. М.: Финансы и статистика, 2000, 768 с. 3. Партыка Т.Л., Попов И.И. Информационная безопасность. Учебное пособие. М.: ФОРУМ: ИНФРА-М, 2002, 368 с. 2. Отсканировать страницу текста, выполнить его распознавание и (при необходимости) корректировку. Результат сохранить в текстовом документе. Рассмотрим выполнение данного задания с помощью программы FineReader 6.0. Расположим исходную страницу текста в сканере, откроем программу FineReader. Программа работает со сканерами через TWAIN-интерфейс. Это единый международный стандарт для унификации взаимодействия устройств ввода изображений в компьютер с внешними приложениями. Возможно два варианта взаимодействия программы со сканерами через TWAIN-драйвер: · через интерфейс FineReader доступно сканирование в цикле на сканерах без автоподатчика, сохранение опций сканирования в отдельный файл Шаблон пакета (*.fbt) и возможность применения этих опций в других пакетах; · через интерфейс TWAIN-драйвера сканера доступна функция предварительного просмотра изображения, позволяющая точно задать размеры сканируемой области, подобрать яркость, тут же контролируя результаты этих изменений. Но диалог TWAINдрайвера сканера у каждого сканера выглядит по-своему. Можно переключаться между этими режимами на закладке Сканирование / Открытие пункта Опции (меню Сервис>Опции), нужно установить переключатель в одно из положений: 1. Использовать интерфейс TWAIN-драйвера сканера. 2. Использовать интерфейс FineReader. Чтобы запустить сканирование, можно нажать кнопку Сканировать или в меню Файл выбрать пункт Cканировать. Спустя некоторое время в Главном окне программы появится окно Изображение с изображением вставленного листа. Качество последующего распознавания во многом зависит от того, насколько хорошее изображение получено при сканировании. Качество изображения регулируется установкой следующих основных параметров сканирования. Тип изображения — серый, черно-белый, цветной. Для системы распознавания оптимальным является сканирование в сером режиме, при этом проводится автоматический подбор яркости. Черно-белый режим экономит время сканирования, но может потерять информацию о буквах. Цветной режим выбирают, если нужно сохранить цветные элементы текста. Разрешение. Следует использовать разрешение 300 dpi для обычных текстов и 400–600 dpi для текстов, набранных мелким шрифтом. Яркость — в большинстве случаев подходит среднее значение яркости — 50%. Чтобы установить параметры сканирования, нужно выбрать меню Сервис и пункт Настройки сканера. Появится следующее окно, где можно установить приведенные параметры. Применив указанные настройки, получим следующее изображение листа: Перед распознаванием следует проверить и откорректировать полученное изображение листа. Изображение может содержать много лишних точек, возникших в результате сканирования документов среднего или плохого качества. Чтобы уменьшить количество лишних точек, можно воспользоваться опцией Очистить от мусора. Для этого в меню Изображение следует выбрать пункт Очистить изображение от мусора. Если требуется очистить от “мусора” отдельный блок, то следует выбрать пункт Очистить блок от мусора. Если нужно какой-то участок текста исключить из распознавания, то можно стереть такие участки. Для этого нужно выбрать инструмент Ластик (на панели в окне Изображение) и, нажав на левую кнопку мыши, выделить требуемый участок изображения, и отпустить кнопку. Выделенная часть изображения будет удалена. Прежде чем приступить к распознаванию, следует указать программе, какие участки изображения надо распознавать. Для этого проводится анализ макета страницы, во время которого выделяются блоки с текстом, картинки, таблицы. Автоматический анализ производится по кнопке 2 Распознать одновременно с распознаванием текста. При автоматическом анализе макета страницы FineReader сам выделяет блоки, содержащие тексты, таблицы, картинки. Блоки — это заключенные в рамку участки изображения. Блоки выделяют для того, чтобы указать системе, какие участки отсканированной страницы надо распознавать и в каком порядке. Также по ним воспроизводится исходное оформление страницы. Блоки разных типов имеют различные цвета рамок: 1. Зона Распознавания — блок используется для распознавания и автоматического анализа части изображения. 2. Текст — блок используется для обозначения текста. Он должен содержать только одноколоночный текст. Если внутри текста содержатся картинки, нужно выделить их в отдельные блоки. 3. Таблица — этот блок используется для обозначения таблиц или текста, имеющего табличную структуру. При распознавании программа разбивает данный блок на строки и столбцы и формирует табличную структуру. В выходном тексте данный блок передается таблицей. 4. Картинка — этот блок используется для обозначения картинок. Он может содержать картинку или любую другую часть текста, которую нужно передать в распознанный текст в качестве картинки. Задача распознавания состоит в том, чтобы преобразовать отсканированное изображение в текст, сохранив при этом оформление страницы. Прежде чем приступить к распознаванию текста, необходимо установить основные параметры распознавания: 5. Язык распознавания. Программа поддерживает распознавание как одноязычных, так и многоязычных документов. Чтобы указать язык распознаваемого текста, нужно выбрать соответствующую строку в списке на панели Распознавание. Если требуется распознать документ, написанный на нескольких языках, следует в списке языков на панели Стандартная выбрать пункт Выбор нескольких языков… В открывшемся диалоге Язык распознаваемого текста укажите несколько языков. 1. Тип печати распознанного текста. Для большинства текстов тип печати определяется автоматически. При распознавании текстов, напечатанных на матричном принтере в черновом режиме или на пишущей машинке, можно добиться более высокого качества распознавания, установив правильный Тип печати: · Пишущая машинка — для текстов, напечатанных на пишущей машинке; · Матричный принтер — для текстов, напечатанных на матричном принтере. Чтобы поменять тип печати на закладке Распознавание диалога Опции (меню Сервис>Опции), в группе Тип печати можно выбирать требуемый пункт. 2. Тип страницы. Для большинства изображений расположение текста на странице определяется автоматически, чему соответствует значение Авто на закладке Распознавание в группе Тип страницы (меню Сервис>Опции), устанавливаемое системой по умолчанию. В некоторых случаях может потребоваться установить значение типа страницы вручную. Для этого на закладке Распознавание диалога Опции (меню Сервис>Опции) в группе Тип страницы нужно выбрать нужный пункт. Укажем некоторые типы страницы: 1. Автоматическое определение — указывает, что расположение текста на странице определяется автоматически. Это значение устанавливается системой по умолчанию, подходит для распознавания всех видов текстов, в том числе многоколоночного текста, текста с таблицами и картинками. 2. Одна колонка — указывает, что текст на странице напечатан в одну колонку. Эта опция используется в случае, если автоматическое определение ошибочно сегментировало страницу как многоколоночный текст. 3. Форматированный пробелами текст — указывает, что текст на странице расположен в одну колонку и напечатан моноширинным шрифтом одного размера. В распознанном тексте сохраняется деление на строки; отступы от левого края передаются пробелами; каждая строка выделяется в отдельный абзац, и расстояния между абзацами передаются пустыми строками. Используется, например, для распознавания распечаток текстов программ. Зададим опции распознавания в следующем окне: После завершения распознавания результат появляется в окне Текст: Окно Текст — это встроенный редактор программы FineReader; в нем можно проверить результаты распознавания и отредактировать распознанный текст. Одна из возможностей текстового редактора FineReader — это встроенная проверка орфографии. Система встроенной проверки орфографии позволяет: 1. Находить неуверенно распознанные слова (слова, в которых есть неуверенно распознанные символы). 2. Находить орфографические ошибки (неправильно написанные слова). 3. Добавлять неизвестные системе FineReader слова в словарь для того, чтобы они распознавались уверенно. Неуверенно распознанные символы и слова, которых нет в словаре, выделяются различными цветами. По умолчанию для выделения неуверенно распознанных символов используется голубой, для несловарных слов — розовый. Чтобы проверить результаты распознавания, нужно нажать кнопку 3 Проверить на панели Scan&Read или выбрать пункт Проверка в меню Сервис. Откроется диалог Проверка. В диалоге Проверка три окна. · В верхнем окне показано изображение слова с возможной ошибкой. · Среднее окно показывает само слово с возможной ошибкой, в строке над этим окном выводится название типа ошибки. · В нижнем окне Варианты предлагаются варианты замены данного слова. Есть следующие возможности: · Нажать кнопку Пропустить, чтобы оставить слово, как есть. · Нажать кнопку Пропустить все, чтобы оставить все такие слова в распознанном тексте, как есть. В нашем случае слово “ПУ” распознано правильно, мы нажмем кнопку Пропустить. Чтобы завершить проверку, нажмем кнопку Закрыть. Результаты распознавания можно сохранить в файл, передать во внешнее приложение, не сохраняя на диск, скопировать в буфер обмена или отправить по электронной почте. Кнопка 4-MS WORD позволяет передать результаты распознавания в выбранное приложение или сохранить их в файл. Чтобы сохранить распознанный текст, нажмем стрелку справа от кнопки 4-MS WORD и в локальном меню выберем пункт Передать страницы в Microsoft Word: После этого страница отроется как документ Word: Теперь с ним можно работать, как с текстовым документом, средствами редактора MS Word. 3. Построить имитационную модель заданной системы и реализовать ее на компьютере. Проанализировать полученный результат. Рассмотрим модель случайного блуждания точки вдоль вертикальной прямой [1]: если случайное число из интервала (0, 1) меньше 0,5, то точка делает шаг вверх y = y + b, в противном случае — шаг вниз y = y – b. Для моделирования используем таблицу Excel. В столбец А внесем случайные числа. Для этого используем функцию СЛЧИС(), которая возвращает случайное число из интервала (0, 1). В столбце В будем вычислять координату y, зададим начальное значение y = 1 и b = 0,5. Построим график зависимости координаты у от количества шагов: Пересчитаем еще раз с теми же значениями исходных параметров: Посмотрим, как изменится график, если выбрать более мелкий шаг b = 0,1. Нужно учесть, что случайные числа в столбце А тоже изменятся при пересчете: Анализируя графики, можно сделать вывод, что направление пути частицы определяется случайным выбором, а величина шага b влияет на масштаб блужданий. Варианты заданий 1. Построить модель блуждания точки на плоскости. 2. Построить модель вычисления определенного интеграла методом Монте-Карло. Литература 1. Шестаков А.П. Информатика № 48/2002, с. 8–15. 2. Белошапка В.К. Информационное моделирование в примерах и задачах. Омск: Изд-во ОГПИ, 1993, 163 с. Билет № 17 1. Понятие файла. Файлы прямого и последовательного доступа. Файловый принцип организации данных. Операции с файлами. Типы файлов. Аппаратное обеспечение хранения данных и функционирования файловой системы. При ответе на этот вопрос можно несколько изменить порядок изложения. Файловый принцип организации данных Файловая система — основная компонента операционной системы. Она организует работу внешних устройств хранения информации. Внешняя память расположена на различных физических носителях (жесткий и гибкий диски, магнитная лента). ФС создает для пользователя виртуальное представление о внешних запоминающих устройствах, позволяет работать с внешними устройствами памяти на высоком уровне наборов и структур данных в виде файла, скрывая реальное расположение информации и аппаратные особенности внешней памяти. Разнообразие устройств внешней памяти делает актуальной функцию ОС по созданию логического интерфейса между приложениями и устройствами внешней памяти. Все современные ОС основывают такой интерфейс на файловой модели внешнего устройства. Любое устройство выглядит для прикладного программиста в виде последовательного набора байт, с которым можно работать с помощью системных вызовов (например, write и read), задавая имя файла-устройства и смещение от начала последовательности байт. Понятие файла Файл — это логически связанная совокупность данных во внешней памяти. Действия с информацией производятся над файлами (запись на диск, вывод на экран, ввод с клавиатуры, печать). В файлах хранятся разнообразные виды и формы информации: тексты, рисунки, чертежи, программы, фото, видео, звук. Особенности конкретных файлов определяются их форматом, он определяет представление информации в файле. Текстовая информация хранится в файле в кодах ASCII, в текстовом формате. Содержимое текстового файла можно просматривать с помощью программных средств. Файл с нетекстовой информацией при просмотре нельзя понять, выводятся непонятные символы. Для характеристики файла используют: · Полное имя файла. · Объем файла в байтах. · Дату создания файла. · Время создания файла. · Атрибуты файла (R — только для чтения, H — скрытый, S — системный, A — архивный файл). К файлу можно обратиться с помощью имени, полного имени, спецификации. Имя уникально, служит для отличия одного файла от другого. В различных ОС существуют различные правила образования имени. В DOS имя содержит не более 8 символов, при образовании имени нельзя использовать буквы русского алфавита и некоторые символы (“*” “?” “:” “;” “,” “=” “пробел” “<” “>”), в Windows можно организовать длинные имена (до 256 символов), использовать русские буквы. Полное имя файла образуется из имени файла и типа (расширения), разделенных точкой. Тип служит характеристикой информации, хранящейся в файле, состоит не более чем из трех символов. Используются только буквы латинского алфавита. Некоторые программы сами создают расширение имени и потом по нему определяют свои файлы. Спецификация файла. Состоит из имени дисковода, маршрута и полного имени файла. Например, с:\alpha\beta\primer.txt. Здесь с: — это имя дисковода, \alpha\beta\ — цепочка соподчиненных каталогов, которую нужно пройти по иерархической структуре к каталогу, где зарегистрирован нужный файл, primer.txt — полное имя файла. При работе с группой файлов используют шаблон имени файла — специальную форму, в которой в полях имени и типа файла используют символы “*” и “?”. Символ “*” заменяет любую последовательность символов. В поле имени и типа можно использовать по одному символу “*”. Например, шаблон *.txt позволит обратиться ко всем текстовым файлам. Символ “?” заменяет один символ, например, имя R??.exe указывает на исполнимые файлы, имя которых начинается с буквы R и состоит из трех символов. Файлы прямого и последовательного доступа Данные, содержащиеся в файле, имеют некоторую логическую структуру. Эта структура используется программой, которая будет работать с этим файлом. Например, чтобы текст был выведен на экран, текстовый редактор должен выделить отдельные слова, строки, абзацы. Поддержание структуры данных может быть возложено на приложение либо выполняться файловой системой. В первом случае ФС представляет файл как неструктурированную последовательность данных. Приложение структурирует полученные данные, руководствуясь собственной логикой. Эта модель, в соответствии с которой содержимое файла представляется потоком байт, используется в большинстве современных ОС. Другая модель файла — структурированный файл, в настоящее время используется редко. ФС видит файл как упорядоченную последовательность логических записей. Логическая запись является наименьшим элементом данных, которым оперирует программист при обмене с внешним устройством. Операционная система обеспечивает программисту доступ к отдельной логической записи. Файловая система использует два способа доступа к логическим записям. 1. Последовательный доступ. ФС позволяет читать и записывать логические записи последовательно. 2. Прямой доступ. ФС позиционирует файл на запись или чтение с указанным номером записи. Типы файлов ФС поддерживают функционально различные типы файлов. 1. Обычные файлы. Содержат произвольную информацию. Их заполняет пользователь или системные и прикладные программы. Обычные файлы разделяют на следующие типы: · текстовые — состоят из строк символов, их можно прочитать на экране, распечатать на принтере; · двоичные — не используют коды символов, содержат исполняемый код программы, архивный файл. 2. Каталоги. Содержат системную справочную информацию о наборе файлов. Каталоги устанавливают соответствие между именами файлов и их характеристиками. 3. Специальные файлы. Это фиктивные файлы, связанные с устройствами ввода-вывода. Позволяют выполнять операции ввода-вывода, используя команды чтения или записи в файл. Эти команды обрабатываются ФС, затем ОС преобразует их в команды управления устройством. Операции с файлами Файловая система обеспечивает основные операции над файлами: открытие, копирование, перемещение, объединение, удаление, закрытие. Открытие файла сопровождается копированием учетной информации о файле в оперативную память, подготовкой буферов и каналов для передачи информации. Доступ к файлу — это установление связи с файлом для записи и чтения. Информация о файле хранится в каталогах. Сам файл хранится на диске без всякой справочной информации. Каталог — справочник файлов с указанием их положения на диске. Во многих ОС принята иерархическая структура каталогов. На каждом диске имеется единственный главный корневой каталог (обозначается символом “/”), создается при форматировании диска, имеет ограниченный объем и не может быть удален. В корневой каталог входят другие каталоги и файлы. Каталоги организованы как системные файлы. В каталогах хранятся записи о файлах и каталогах нижнего уровня. Переход в каталог нижнего уровня организован последовательно через соподчиненные каталоги. Нельзя перейти из главного каталога сразу к каталогу 4-го уровня, нужно пройти через все предыдущие каталоги. Этот принцип организации доступа к файлу является основой ФС. ФС управляет размещением и доступом к файлам и каталогам на диске. Аппаратное обеспечение хранения данных и функционирования файловой системы Пользователь представляет файловую систему в виде дерева каталогов и расположенных в них файлах. Это представление далеко от реального расположения данных на диске — физической организации ФС. Файл очень часто разбросан фрагментами по всему диску, файлы из одного каталога не всегда расположены в смежных областях. Различные файловые системы имеют различную физическую организацию. Операционные системы работают с различными типами внешних запоминающих устройств. Рассмотрим их. Накопители на магнитных дисках имеют две разновидности — накопители на жестких магнитных дисках и накопители на гибких магнитных дисках. Дисковые накопители являются основным устройством для хранения данных. Эти устройства могут считывать и записывать данные на жесткие и гибкие магнитные диски. Принцип записи на магнитные носители основан на явлении электромагнитной индукции. Запись производится головками чтения/записи, которые работают как электромагнит. Полярность магнитного поля в головках определяется направлением электрического тока, который по ним пропускается. Магнитное поле проникает в магнитный слой диска, упорядочивает его магнитные частицы (домены) то в одном, то в другом направлении, т.е. создает на носителе зоны с различной по знаку намагниченностью. Так производится запись. При чтении головка регистрирует импульсы тока при прохождении зоны смены знака намагниченности. Накопители на жестких магнитных дисках включают следующие устройства: · электромеханический привод, вращающий диски; · накопители на гибких магнитных дисках; · блок магнитных головок для чтения и записи; · система позиционирования магнитных головок для записи и чтения; · электронный блок для управления и кодирования сигналов. Накопитель на магнитных дисках помещен вместе с диском и контроллером в герметический корпус, который крепится в системный блок компьютера. Жесткий диск изготовлен из композитного материала на основе стекла и керамики, покрыт магнитным слоем. Жесткий диск состоит из нескольких керамических колец, нанизанных на один шпиндель. Каждая сторона диска размечена на дорожки — концентрические окружности, вдоль которых записываются данные. Нумерация дорожек начинается с 0 от внешнего края к центру. Диск вращается, головка чтения/записи позиционируется на заданную дорожку и записывает данные на диск или считывает их. Совокупность дорожек одного радиуса на всех поверхностях дисков называется цилиндром. Дорожка размечается на сектора или блоки. Чаще всего сектор содержит 512 байт информации. Сектор — наименьшая адресуемая единица обмена данными дискового устройства с оперативной памятью. Для обмена контроллеру диска нужно указать адрес сектора: номер цилиндра, номер поверхности и номер сектора. ОС при работе с диском использует свою единицу дискового пространства — кластер, размер которого обычно 1024 байта. Дорожки и секторы создаются в результате процедуры низкоуровневого форматирования диска. На диск записывается информация для определения границ блоков. Низкоуровневый формат диска не зависит от типа операционной системы, в которой диск будет использоваться, и производится на заводе-изготовителе. Разметку диска под конкретную операционную систему производит процедура высокоуровневого форматирования. Здесь определяется размер кластера и на диск записывается информация, необходимая ОС для работы файловой системы. Накопители на гибких магнитных дисках — устройства со сменными дисками. Имеют невысокую информационную емкость (1,44 Мб), но дают возможность транспортировать информацию и обеспечивают конфиденциальность информации. Дискета представляет собой тонкий пластиковый диск с магнитным покрытием, информация записывается вдоль дорожек — концентрических окружностей, дорожки размечены на сектора. Перед первым использованием дискета форматируется, т.е. размечается для использования операционной системой. Магнитные накопители для резервного копирования данных существуют в двух видах: накопители на магнитных дисках и накопители на магнитных лентах. Резервные накопители на магнитных дисках являются автономным устройством, подключаемым к компьютеру по мере необходимости. Накопители на магнитных лентах надежно хранят неоперативную информацию больших объемов (например, 320 Гб). Являются устройствами с последовательным доступом. Накопители на оптических дисках предназначены для распространения дистрибутивов программ, для хранения и транспортировки конфиденциальной информации. Существует несколько типов накопителей на оптических дисках. Диск CD-ROM переводится как компакт-диск, предназначенный только для чтения. Это поликарбонатная пластина, одна сторона которой покрыта алюминиевой пленкой, играющей роль зеркального отражателя. Информация записывается вдоль одной спиралевидной дорожки. На дорожку наносятся углубления — штрихи. При считывании диск освещается лучом лазера, штрихи поглощают свет, плоская поверхность хорошо отражает свет. Стандартная емкость диска — 650 Мб. Различают пишущие накопители двух типов — CD-R и CD-RW. Эти диски уже не имеют рельефа в виде штрихов. На рабочий слой диска лучом лазера наносят пятна, которые поглощают свет как штрихи. Диск CD-R позволяет сделать однократную запись с персонального компьютера, диск CD-RW предназначен для многократной записи. Эти диски потеснили магнитные устройства резервного копирования, так как значительно превосходят их по долговечности хранения. Диск DVD — цифровой универсальный диск, имеет большую емкость, стандартный диск содержит 4,7 Мб. Для записи и чтения информации здесь используется лазер с меньшей длиной волны, что позволяет производить более плотную запись информации на диск. Увеличение емкости дисков достигается применением многослойных и двухсторонних дисков, специальных программ сжатия информации. Диск CD-MO — магнитооптический диск, также предназначен для многократной перезаписи информации. Запись на диск производится лазерным лучом и магнитным полем. При считывании диск освещается лучом лазера и регистрируются изменения коэффициента отражения от участков диска с различной намагниченностью. При стирании информации лазерный луч разогревает диск и разрушает магнитную запись. Устройства Flash-памяти — это энергонезависимые полупроводниковые запоминающие устройства емкостью 1 Гб; благодаря небольшим габаритам они основательно потеснили гибкие магнитные диски и реально соперничают с CD-дисками. Мы рассмотрели основные внешние запоминающие устройства персонального компьютера, с которыми должна общаться операционная система, используя файловую модель данных. Каждое устройство внешней памяти снабжено специализированным блоком управления — контроллером. Контроллер взаимодействует с системным программным модулем — драйвером, управляющим устройством. Контроллер получает от драйвера выводимую на устройство информацию и команды управления, которые сообщают, что нужно сделать с информацией, например, записать в определенный сектор диска. Под управлением контроллера устройство выполняет операции чтения или записи информации. Литература 1. Олифер В.Г., Олифер Н.А. Сетевые операционные системы. СПб.: Питер, 2001, 554 с. 2. Могилев А.В., Пак Н.И., Хеннер Е.К. Информатика: Учебное пособие для педагогических вузов / Под ред. Е.К. Хеннера. М.: Академия, 2004, 848 с. 2. С помощью системы проверки орфографии исправить ошибки в готовом текстовом документе. Проверка правописания может выполняться непосредственно при вводе текста или после завершения ввода всего текста. По умолчанию Microsoft Word проверяет орфографию и грамматику автоматически при вводе текста, выделяя возможные орфографические ошибки красной волнистой линией, а возможные грамматические ошибки — зеленой волнистой линией. Чтобы убедиться, что средство автоматической проверки орфографии и грамматики включено в меню Сервис, следует выбрать Параметры, а затем открыть вкладку Правописание и установить флажки Автоматически проверять орфографию и Автоматически проверять грамматику. Отличие проверки орфографии от проверки грамматики пояснит следующий пример. Если в результате опечатки получается слово, существующее в словаре (например, вместо слова “пара” написано слово “парта”), программа проверки орфографии не пометит это слово. Для обнаружения ошибок такого рода используют программу проверки грамматики. Средство проверки грамматики выделяет возможные ошибки после полного анализа текста. Это средство может находить не все типы ошибок. Оно предназначено для выделения наиболее типичных или наиболее часто встречающихся ошибок. Проверим правописание в следующем тексте. Лазерные прикнтеры обеспечивают наилучшее качество печати. В этих принтерах для печати используется принцип ксерографии: изображение переносится на бумагу со специального барабана к которому электрически притягиваются частички краски. Лазерные принтеры являются наиболее удобными устройствами для получения качественных черно-белых печатных документов. Так как предлагаемый документ уже готов, нужно проверить орфографию и грамматику сразу во всем тексте. Выберем меню Сервис диалог Правописание. Откроется окно Правописание: Окно Правописание содержит два основных элемента: окно Нет в словаре, где расположен фрагмент текста, и окно Варианты с указанием возможного правильного ответа. Можно пропустить эту ошибку, если пользователь уверен в своей правоте, нажав кнопку Пропустить. Если программа проверки орфографии обнаруживает в тексте незнакомое слово, она выполняет в словаре поиск слов, похожих по написанию на выделенное, и выводит список наиболее похожих слов на экран. Содержимое выводимого списка определяется только написанием слов, поэтому в него могут быть включены слова, не подходящие по контексту. Так как в нашем случае слово явно нуждается в исправлении и возможен только один вариант, следует нажать кнопку Заменить. Система продолжит проверку и обнаружит следующую ошибку: Здесь программа не совсем верно определила источник ошибки, на самом деле в тексте не поставлена запятая после слова “барабана”. Придется самим исправить эту ошибку в исходном тексте. После этого программа проверки выведет следующую статистику и завершит свою работу: 3. Написать и отладить программу обработки массива (суммирование элементов, сортировка и пр.). Проанализировать полученный результат. Пример. Написать и отладить программу ввода и сортировки по возрастанию (неубыванию) целочисленного массива из 20 элементов. Решение. Решим задачу в общем случае, т.е. отсортируем массив из n элементов. В качестве метода сортировки используем сортировку обменом (“пузырьковую” сортировку). Напомним алгоритм сортировки. Массив просматривается от начала до конца столько раз, сколько в нем содержится элементов. При каждом просмотре поочередно сравниваются два соседних элемента. Если элемент с большим номером имеет меньшее значение, производится обмен элементов. Запишем этот алгоритм на языках программирования (массив при этом заполняется случайным образом; если после запуска программы введем n = 20, то получим массив, удовлетворяющий условию исходной задачи). QBasic DECLARE SUB Vvod (n!, A() AS INTEGER) DECLARE SUB Vivod (n!, A() AS INTEGER) DECLARE SUB Sort (n!, A() AS INTEGER) DIM A(20) AS INTEGER RANDOMIZE TIMER — 32767 PRINT "N? ": INPUT n CALL Vvod(n, A()) CALL Vivod(n, A()) CALL Sort(n, A()) CALL Vivod(n, A()) SUB Sort (n, A() AS INTEGER) FOR i = 1 TO n FOR j = 1 TO n — 1 IF A(j) > A(j + 1) THEN Vsp = A(j) A(j) = A(j + 1) A(j + 1) = Vsp END IF NEXT j NEXT i END SUB SUB Vivod (n, A() AS INTEGER) FOR i = 1 TO n PRINT USING "####"; A(i); NEXT i PRINT END SUB SUB Vvod (n, A() AS INTEGER) FOR i = 1 TO n A(i) = -20 + INT(RND(1) * 41) NEXT i END SUB Pascal Program Obmen; Type arr = array[1..20] of integer; Procedure Vvod(n: byte; var a: arr); Var i: byte; Begin For i := 1 to n do A[i]:= -20 + random(41) End; Procedure Vivod(n: byte; const a: arr); Var i: byte; Begin For i := 1 to n do Write(a[i]:4); Writeln End; Procedure Sort(n: byte; var a: arr); Var i, j: byte; Vsp: integer; Begin FOR i := 1 TO n do FOR j := 1 TO n — 1 do IF A[j] > A[j + 1] THEN begin Vsp := A[j]; A[j] := A[j + 1]; A[j + 1] := Vsp end End; Var a: arr; n: byte; Begin Randomize; Write('n? '); readln(n); Vvod(n, a); Vivod(n, a); Sort (n, a); Vivod(n, a) End. C++ #include <iostream.h> #include <stdlib.h> #include <time.h> void Vvod(int n, int a[21]); void Vivod(int n, int a[21]); void Sort(int n, int a[21]); void main() {int n, a[21]; cout << "Сколько элементов в массиве? "; cin >> n; randomize(); Vvod(n, a); Vivod(n, a); Sort(n, a); Vivod(n, a); } void Vvod(int n, int a[21]) { int i; for (i = 1; i <= n; i++) a[i] = -20 + random(41); } void Vivod(int n, int a[21]) { int i; for (i = 1; i <= n; i++) { cout.width(4); cout << a[i];} cout<<endl; } void Sort(int n, int a[21]) { int i, j, Vsp; for (i = 1; i <= n; i++) for (j = 1; j <= n-1; j++) if (a[j] > a[j+1]) {Vsp = a[j]; a[j] = a[j+1]; a[j+1] = Vsp;} } Варианты заданий 1. Сортировка выбором. Дана последовательность чисел a1, a2, ..., an. Требуется переставить элементы так, чтобы они были расположены по убыванию. Для этого в массиве, начиная с первого, выбирается наибольший элемент и ставится на первое место, а первый — на место наибольшего. Затем, начиная со второго, эта процедура повторяется. Написать алгоритм сортировки выбором. 2. Сортировка вставками. Дана последовательность чисел a1, a2, ..., an. Требуется переставить числа в порядке возрастания. Делается это следующим образом. Пусть a1, a2, ..., ai — упорядоченная последовательность, т.е. a1 a2 ... ai. Берется следующее число ai+1 и вставляется в последовательность так, чтобы новая последовательность была также возрастающей. Процесс производится до тех пор, пока все элементы от i + 1 до n не будут перебраны. 3. Дан массив n действительных чисел. Требуется упорядочить его по возрастанию. Делается это следующим образом: сравниваются два соседних элемента ai и ai+1. Если ai ai+1, то продвигаются на один элемент вперед. Если ai > ai+1, то производится перестановка и сдвигаются на один элемент назад. Составить алгоритм этой сортировки. 4. Сортировка подсчетом. Выходной массив заполняется значениями “–1”. Затем для каждого элемента определяется его место в выходном массиве путем подсчета количества элементов строго меньших данного. Естественно, что все одинаковые элементы попадают на одну позицию, за которой следует ряд значений “–1”. После чего оставшиеся в выходном массиве позиции со значением “–1” заполняются копией предыдущего значения. 5. Сортировка “хитрая”. Из массива путем однократного просмотра выбирается последовательность элементов, находящихся в порядке возрастания, переносятся в выходной массив и заменяются во входном на “–1”. Затем оставшиеся элементы включаются в полученную упорядоченную последовательность методом погружения, когда очередной элемент путем ряда обменов “погружается” до требуемой позиции в уже упорядоченную часть массива. Билет № 18 1. Виды профессиональной информационной деятельности человека и используемые инструменты (технические средства и информационные ресурсы). Профессии, связанные с построением математических и компьютерных моделей, программированием, обеспечением информационной деятельности людей и организаций. Информационная деятельность человека связана с созданием знаний, которые образуют информационные ресурсы общества. К информационным ресурсам можно отнести научно-технические знания, произведения литературы и искусства, общественную и государственную информацию. Основу технических средств любой современной информационной технологии составляют следующие аппаратные средства: · компьютер, предоставляющий возможность автоматической обработки информации; · машиночитаемые носители информации — магнитные и оптические диски большой емкости, надежности и долговечности; · компьютерные сети и телекоммуникации, позволяющие совместно обрабатывать и оперативно передавать информацию. Информационные ресурсы, обеспечивающие некоторую профессиональную деятельность, сосредоточены в массивах документов, которые в современном варианте приготовлены для автоматической обработки и хранятся в базах данных (БД), базах знаний (БЗ), которые, в свою очередь, являются частью некоторой информационной системы. Попробуем в следующей таблице описать виды профессиональной информационной деятельности человека и сопровождающие ее технические и информационные средства (см. таблицу). Традиционно информационная деятельность связывается со средствами массовой информации. Журналисты имеют дело с оперативной информацией, которая иногда актуальна только в течение нескольких дней, поэтому они используют в своей работе самые современные средства передачи информации. Информацию любого вида (текст, звук, видео) можно передать по электронной почте, опубликовать на сайте, популярны видеоконференции в реальном времени. Работники почтовой службы, кроме традиционных методов доставки корреспонденции, активно используют электронную почту. Бурно развивается сотовая связь и IP-телефония. Наука призвана производить новые знания. Одним из ее современных инструментов является компьютерное математическое моделирование, позволяющее изучать природные, экономические и социальные явления в развитии. Инженеры закрепляют технические изобретения в патентах. В развитых странах существуют системы научно-технической информации со специализированными изданиями и патентными службами, которые готовят обзоры, рефераты. Автоматизированная обработка информации в экономических информационных системах с применением средств связи и оргтехники снабжает менеджеров качественной, точной, объективной информацией. Менеджеры, используя современные технологии в сфере управления, могут принимать более своевременные и объективные решения на основе оперативной экономической информации. Преподаватели передают знания от поколения к поколению, следовательно, участвуют в древнейшем информационном процессе. ИТ вносят и в эту консервативную сферу свои нововведения. Технологии мультимедиа создают виртуальные миры, делают процесс обучения более наглядным, сложные абстрактные выкладки становятся понятнее. Компьютерные технологии позволяют индивидуализировать обучение и контроль знаний. Развивается дистанционное образование, позволяющее обучать независимо от удаленности от образовательного учреждения. Многие формы современного искусства используют ИТ. Создаются музыкальные произведения с использованием midi-совместимых инструментов, исполняющих компьютерную партитуру. Компьютерная графика стала основой современной полиграфии и дизайнерских работ. Профессии, связанные с построением математических и компьютерных моделей, программированием, обеспечением информационной деятельности людей и организаций. Появление специалистов в области информатики в России исторически было связано с подготовкой математиков-программистов в университетах и инженеров в технических вузах. Современное положение можно отразить в следующей ниже таблице. Ради построения компьютерных моделей для решения научно-технических задач были созданы первые компьютеры. В настоящее время компьютерное моделирование активно применяется во всех науках, но обеспечить его применение по-прежнему поручают математикам. Только фундаментальное математическое образование позволяет сформировать специалиста, владеющего теорией дифференциальных уравнений и численными методами, программированием, компьютерным моделированием, способного построить компьютерную модель реальной системы. При подготовке эти специалисты изучают широкий спектр курсов, связанных с вычислительной техникой и программированием: алгоритмы и алгоритмические языки, архитектура ЭВМ и язык ассемблера, системное программное обеспечение, прикладное программное обеспечение, компьютерная графика, параллельные вычисления, базы данных, операционные системы, искусственный интеллект, объектно ориентированное программирование, компьютерные сети, сетевые технологии, системы программирования и др. Для примера укажем направления подготовки факультета вычислительной математики и кибернетики МГУ: прикладная математика и информатика, информационные технологии. Профессия “Информатик” с квалификацией в некоторой прикладной области утверждена в России в 2000 г. Целью является подготовка кадров, способных к успешному функционированию в новых экономических и политических условиях и готовых к решению задач, связанных с использованием наукоемких информационных технологий в смежных областях человеческого знания и деятельности, в том числе при разработке интегрированных систем информационного и математического обеспечения экономической, финансовой и административной деятельности. Эта специальность применяется в экономике, юриспруденции, политологии и т.д., где используются информационные системы. Информатик в соответствующей области занимается созданием и сопровождением информационной системы. Например, информатикэкономист является специалистом по информационным системам в административном управлении, банковском, страховом деле, бухгалтерском учете и т.д. Этот специалист, имеющий глубокую фундаментальную подготовку, может создавать информационнологические модели объектов, разрабатывать новое программное и информационное обеспечение для решения задач науки, техники, экономики и управления, адаптировать систему на всех стадиях ее жизненного цикла. Защита информационных ресурсов от несанкционированного доступа, обеспечение безопасности информационных и телекоммуникационных систем особенно актуальны для современного мира. Эти задачи привели к возникновению новой специальности — специалист по защите информации. Специалисты изучают защиту информации в автоматизированных системах, в персональных компьютерах, в компьютерных сетях с помощью программных и аппаратных средств. Для обеспечения информационной безопасности применяются технические, программные, организационные и правовые методы. К техническим мерам относят защиту от несанкционированного доступа к системе, резервирование компонентов системы, перераспределение ресурсов в случае аварии, резервные системы электропитания, установку сигнализации и др. К правовым мерам относят разработку норм ответственности за компьютерные преступления, защиту авторских прав программистов. В основе программной защиты находятся криптографические методы защиты информации. Специалисты по защите информации востребованны в государственных организациях, работающих со статистической, налоговой, таможенной информацией, в финансово-кредитных учреждениях, в системах электронной торговли и электронных платежей. Вычислительная техника и телекоммуникации составляют аппаратную основу любой информационной технологии. Их разработкой и созданием занимаются инженеры. Они владеют принципами построения вычислительных и телекоммуникационных систем, электротехникой и микроэлектроникой, базисом является инженерное образование. Основу функционирования компьютерных систем составляет уровень архитектуры, который включает общие принципы построения и функционирования логических узлов компьютера, программирование на машинном языке. Логические принципы и схемы реализации основных узлов компьютера (сумматоров, триггеров) составляют следующую ступень. Знание схемных решений современной радиотехники и микроэлектроники требуется разработчикам физических элементов компьютеров. Приведем список направлений подготовки в ГТУ имени Н.Э. Баумана: информатика и вычислительная техника, прикладная математика, вычислительные машины, комплексы, системы и сети, автоматизированные системы обработки информации и управления, системы автоматизированного проектирования, программное обеспечение вычислительной техники и автоматизированных систем, конструирование и технология электронновычислительных средств. 2. Создать компьютерную презентацию из 3–5 слайдов на заданную тему, содержащую текст, графику и элементы анимации. Рассмотрим создание презентации с помощью программы PowerPoint пакета Microsoft Office XP. Окно программы содержит набор меню, панелей инструментов и других компонентов интерфейса, характерных для всех программ Microsoft Office XP, а также ряд компонентов, характерных только для программы PowerPoint. К ним относятся панели Слайд, Заметки, панель задач, кнопки режимов просмотра. Кнопки режимов находятся внизу, слева. Обычный режим используется по умолчанию, в этом режиме выполняются основные действия по разработке презентации: ввод текста, вставка рисунков, диаграмм, оформление слайдов. В обычном режиме включены три панели: Структура/Слайды, Слайд и Заметки. Панель Структура/Слайды находится в левой части окна и позволяет переключить отображение презентации в виде структуры или миниатюр слайдов. На панели Слайд презентация выглядит так, как она будет отображена при демонстрации. Панель Заметки находится внизу окна программы и может содержать заметки докладчика, которые не будут отображаться на экран во время демонстрации слайдов. В правой части окна программы располагается область задач, где представлен список команд определенной задачи. Программа открывает ту или иную область задач в зависимости от ситуации. Например, при запуске программы открывается окно с новой презентацией, которое в правой части содержит область задач Создание презентации с информацией о том, как можно создать новую презентацию (рис. 1). Рис. 1 При выборе пункта Новая презентация помощь в работе будет минимальной и все нужно определить самостоятельно. Напротив, мастер автосодержания последовательно руководит работой. Он поможет определить вид и стиль презентации, ее параметры, но с его использованием мы получим сразу 8–12 слайдов, что не подходит для наших целей. Небольшую работу проще всего выполнить, выбрав раздел Создание и пункт Из шаблона оформления. Будет открыт Титульный слайд, где можно задать название работы и небольшой подзаголовок. При вводе текста программа предлагает по умолчанию шрифт и его размер. При необходимости можно изменить шрифт, начертание и размер командой главного меню Формат, Шрифт. Добавим следующий слайд, подав команду Вставка, Создать слайд. Выбрать разметку этого слайда можно в области задач Разметка слайда правой области окна, указав на нужный макет. Выберем, например, макет Заголовок и текст (рис. 2). Рис. 2 Макет третьего слайда выберем из раздела Другие макеты, например, Заголовок, текст и графика (рис. 3). Рис. 3 Теперь, дважды щелкнув по картинке, получим диалоговое окно Выберите рисунок, где можно выбрать рисунок из предложенной коллекции рисунков Microsoft или, нажав кнопку Импорт…, поискать файл рисунка в другом месте и вставить его сначала в коллекцию, а затем и на слайд. Приготовить рисунок для слайда можно и другим путем. Для этого нужно подать команду главного меню Вставка, Рисунок. Откроется меню, которое содержит несколько вариантов. При выборе пункта Картинки откроется галерея картинок, команда Из файла позволит отыскать файл с рисунком на диске. Аналогично следует выбрать шаблон и заполнить информацией последующие слайды. Теперь следует подумать об оформлении. Оформление должно подчеркивать содержание работы, не отвлекая внимание аудитории на спецэффекты. Подадим команду Формат, Оформление слайда. Откроется область задач Дизайн слайда (рис. 4). Рис. 4 Здесь задают Шаблоны оформления, Цветовые схемы, Эффекты анимации. Выбранный шаблон оформления лучше применить ко всем слайдам презентации. Но иногда на некотором слайде, например содержащем таблицу или диаграмму, лучше отказаться от цветного оформления. Для этого при выборе оформления этого слайда указать команду Применить к выделенным слайдам из списка конкретного шаблона. Любой шаблон оформления может быть исполнен в нескольких цветовых схемах. Для настройки цветовой гаммы нужно задать пункт Цветовые схемы и выбрать подходящую схему, которую также можно применить ко всем или только к выделенным слайдам. Команда Эффекты анимации позволит задать глобальные эффекты, действующие на слайде. На рисунке выбран эффект анимации Изысканный, всплывающая подсказка поясняет, что при смене слайда происходит “Плавное угасание”, на заголовок действует эффект “Выезжание”, на основную часть — эффект “Случайный” (рис. 5). Рис. 5 Если есть потребность, можно настроить эффекты анимации некоторого объекта слайда, например, рисунка. Подадим команду Показ слайдов, Настройка анимации. После этого выделим наш рисунок. Область задач Настройка анимации станет активна, и с ее помощью можно выбрать эффект и его параметры, просмотреть действие выбранного варианта. Зададим темп презентации командой Показ слайдов, Смена слайдов. В открывшейся области задач Смена слайдов установим смену слайдов автоматически после двух секунд. Здесь же можно задать звуковое сопровождение смены слайдов и применить выбранные параметры смены слайдов ко всем слайдам презентации. Программа позволяет провести поиск орфографических ошибок во всей презентации. Слова, содержащие ошибки, подчеркиваются красным цветом. Чтобы их исправить, нужно навести на них курсор и нажать правую кнопку, в появившемся контекстном меню выбрать правильный вариант правописания. Проверка орфографии запускается нажатием кнопки Орфография на панели инструментов. Просмотрите созданную электронную презентацию, подав команду Показ слайдов, Начать показ. Не забудьте сохранить работу командой Файл, Сохранить как… 3. Определить скорость работы модема исходя из времени передачи сообщения и его информационного объема (желательно преобразование единиц измерения). Известны информационная емкость сообщения, например I = 1000 байт, и время отправки этого сообщения t = 2 секунды с помощью модема. Нужно определить скорость модема. Скорость модема задается в битах в секунду, или бит/с. Поэтому информационную емкость сообщения переведем в биты I = 1000 байт = 8000 бит. Вычислим скорость модема V = I / t = 8000 / 2 = 4000 (бит/с) Примечание. Изначально скорость модемов измерялась в бодах. Бод относится к частоте осцилляции звуковой волны, переносящей биты данных по телефонной линии. Свое название эта единица получила от имени французского офицера-связиста Ж.Бодо. В начале 1980 годов скорость в бодах равнялась скорости в битах в секунду, т.е., например, 300 бод равнялось 300 бит/с. Затем были разработаны методы сжатия и кодирования данных, в результате каждая модуляция звука может переносить больше одного бита информации. Это означает, что скорость в битах в секунду может быть больше скорости в бодах. Современные модемы имеют стандартные скорости передачи данных, например, стандарт V42.bis устанавливает скорость передачи данных 57 600 бит/с. Литература 1. Могилев А.В., Пак Н.И., Хеннер Е.К. Информатика: Учебное пособие для педагогических вузов / Под ред. Е.К. Хеннера. М.: Академия, 2004, 848 с. Билет № 19 1. Кодирование графической информации. Растровая и векторная графика. Средства и технологии работы с графикой. Создание и редактирование графических информационных объектов средствами графических редакторов, систем презентационной и анимационной графики. Форматы графических файлов. Способы сжатия. Современная компьютерная графика столь многогранна и разнообразна, что ее часто даже выделяют в качестве отдельного раздела информатики. С практической точки зрения это, возможно, и правильно, но с позиций описания автоматизированных процессов обработки информации графические данные не являются чем-то уникальным или принципиально отличающимся. Уместно, например, вспомнить, что, несмотря на все особенности графических файлов, не существует отдельного программного обеспечения для их передачи по сети или специализированных методов хранения таких файлов на диске. Кодирование графической информации подчиняется наиболее общим принципам представления информации в компьютере (см. билет № 2): она должна быть дискретной и тем или иным способом сводиться к двоичному коду. Дискретность графической информации непосредственно вытекает из способа представления изображения на экране дисплея: там оно формируется из отдельных точек, которые окрашены в те или иные цвета. Точки, из которых состоит изображение, в литературе принято называть пикселями1. Важно подчеркнуть, что пиксель не всегда совпадает с “физической” точкой дисплея: например, в некоторых видеорежимах один пиксель может состоять из нескольких точек экрана. Для наглядности напомним читателям о том, что один и тот же современный монитор (имеющий, разумеется, фиксированное число точек на светящейся поверхности) способен отображать картинку в нескольких стандартных форматах: 600 x 800, 1024 x 768, 1280 x 1024 и даже больше. Что касается сведения графических данных к двоичному коду, то это несколько более сложный вопрос. Остановимся на нем поподробнее. В случае черно-белого изображения каждая точка может иметь всего два цвета; естественно кодировать их нулем (точка не светится, т.е. черная) или единицей (белая). Для того чтобы наглядно представить себе, как хранится в памяти ЭВМ простейшее изображение, рассмотрим для примера нарисованный на черном фоне белый квадратик размером 4 x 4. В черно-белом режиме это будет выглядеть весьма компактно (сначала для наглядности приведен двоичный, а затем шестнадцатеричный вид): 1111 F 1001 9 1001 9 1111 F Теперь увеличим число цветов — пусть их будет 16. Если принять, что все имеющиеся цвета пронумерованы от нуля, то для хранения информации о цвете одной точки потребуется 4 бита: 24 = 16 (см. билет № 3). Следовательно, в режиме 16цветной графики тот же самый квадратик займет памяти в 4 раза больше, т.к. каждая точка уже будет кодироваться четырьмя битами: 1111 1111 1111 1111 F F F F 1111 0000 0000 1111 F 0 0 F 1111 0000 0000 1111 F 0 0 F 1111 1111 1111 1111 F F F F Аналогичным образом при увеличении количества цветов до 256 на каждый пиксель требуется уже по байту, и наш квадратик разрастется еще вдвое: 11111111 11111111 11111111 11111111 FF FF FF FF 11111111 00000000 00000000 11111111 FF 00 00 FF 11111111 00000000 00000000 11111111 FF 00 00 FF 11111111 11111111 11111111 11111111 FF FF FF FF Обратите внимание на то, что белый цвет, как самый яркий, обычно имеет максимально возможный номер. Поэтому для черно-белого режима он равен 1, для 16-цветного — 15, а для 256 цветов — 255. Промежуточные значения позволяют закодировать все остальные цвета. Остается сказать, что для наиболее точной цветопередачи в современных компьютерах используется обычно 2-байтовый или 3-байтовый (это опять же количество информации на одну точку) цвет. Итак, каждый пиксель характеризуется цветом, а цвет, как и вся остальная информация, кодируется (двоичным) числом. Примечание. Если быть несколько более точным, код цвета обычно составлен из трех частей, каждая из которых характеризует интенсивность красной, зеленой и синей цветовых составляющих (так называемая “модель RGB”). Тем не менее части кода хранятся вместе и формально могут считаться единым числом. Интересно заметить, что при 2-байтовом кодировании цвета общее число битов на три равные части не делится; “лишний” шестнадцатый бит либо не используется, либо присоединяется к зеленой компоненте, поскольку именно к ней человеческий глаз наиболее чувствителен. Рассмотренный нами способ кодирования графических изображений, заключающийся в сохранении информации о цвете каждой точки, принято называть растровым. Термин растр возник довольно давно (в конце XIX века) и означает разложение изображения на отдельные точки с помощью специальной сетки. Метод создания изображения из отдельных точек появился задолго до изобретения компьютеров. Вспомним, например, мозаику или вышивание; формирование растра на экране лежит также в основе работы используемого нами каждодневно телевизора. Рассмотренный метод кодирования изображений прост и нагляден, но обладает недостатком — требует запоминания слишком большого количества информации. В качестве альтернативного метода существует векторная графика, в которой запоминается не готовая итоговая картинка, а последовательность ее рисования. Поскольку в учебниках, как правило, суть этого вида графики объясняется весьма туманно, обсудим вопрос подробнее (может быть, даже чуть подробнее, чем требует экзаменационный ответ). Примечание. Общим принципам реализации машинной графики в среде Windows в литературе вообще уделяется мало внимания; в школьных учебниках подобная информация в принципе отсутствует. По нашему мнению, это связано не столько с сознательным исключением данного материала как второстепенного, сколько с тем, что авторы им просто не владеют. Тем не менее названные принципы графики имеют гораздо большие шансы сохраниться в ближайшие годы, нежели детально описываемые меню конкретной версии MS Office. Читателям, интересующимся фундаментальными основами машинной графики, порекомендуем почитать весьма глубокую, но понятно написанную книгу [1]2. Итак, рассмотрим процесс создания произвольных, но не слишком сложных изображений из так называемых графических примитивов: точка, линия, прямоугольник, эллипс и т.д. Последовательность подобных графических команд и хранится в файлах векторной графики; стандартным векторным форматом в Windows является .WMF — Windows MetaFile. Как образно сказано в книге [2], метафайл “очень похож на музыкальную запись, где вместо музыки записаны команды интерфейса графических устройств (GDI). Для того чтобы отобразить метафайл, программа передает эти команды функции PlayMetaFile(), которая, подобно магнитофону, воспроизводит визуальную «мелодию»”. Очень хорошее представление о составе метафайла дает понимание графических операторов языка Basic, например, PSET, LINE, CIRCLE и других. Важно знать, что метафайл не связан с каким-либо конкретным графическим устройством, имеющим фиксированное число точек. Поэтому в момент создания рисунка компьютер способен учесть все особенности используемого устройства и выполнить изображение максимально хорошо. Именно по этой причине метафайлы прекрасно масштабируются; не случайно библиотеки рисунков (clipart), как правило, создаются именно в векторном формате. Подавляющее большинство шрифтов, используемых в системе Windows, базируется на векторном представлении символов. Не менее успешно векторная графика применяется и в САПР. Каждая графическая команда состоит из кода (например, команда рисования дуги Arc имеет код 817h [2]) и минимального количества параметров3 (например, координат или углов). Для того чтобы читатели получили некоторое представление о возможностях векторной графики, выпишем названия наиболее распространенных графических команд-примитивов [2]: Arc (дуга), Chord (хорда), DrawText (нарисовать текст), Ellipse (эллипс, в частном случае — окружность), LineTo (провести линию), MoveTo (перенести перо, не оставляя следа), Polygon (полигон), PolyLine (ломаная линия), Rectangle (прямоугольник), RoundRectangle (прямоугольник со скругленными краями) и многие другие. Очевидно, что графические команды не только проще масштабируются (путем пересчета их числовых параметров), но и необычайно компактны; в частности, линия абсолютно любой длины будет нарисована на основе всего трех чисел — кода соответствующей команды и координат конца линии (координаты начальной точки будут взяты из памяти). Каждый из описанных видов графики имеет свои достоинства и недостатки, вытекающие непосредственно из рассмотренных выше принципов построения изображений. Особенности обоих видов графики подытожены в следующей таблице, которая построена с использованием данных из книг [3] и [4]. Приведенная таблица позволяет выбрать наиболее подходящий для конкретной задачи пользователя способ рисования. Никто не станет возражать, что компьютер предоставляет пользователям большие возможности в обработке графических изображений. Используя компьютерные технологии, мы можем с помощью сканера ввести в компьютер любой рисунок с обычного листа бумаги или из книги. Кроме того, развитое программное обеспечение предоставляет нам возможность создавать изображения непосредственно на компьютере, используя бумагу исключительно на завершающем этапе для представления результатов нашей работы. Независимо от способа создания рисунка, компьютер позволяет его редактировать. Возможности здесь необычайно разнообразны: от мелкой корректировки погрешностей сканирования и нанесения подписей до изменения композиции рисунка и совмещения нескольких изображений. Важно подчеркнуть, что компьютер предоставляет пользователю целый ряд технологий, аналоги которым трудно найти в традиционном рисовании. Упомянем в качестве примеров настройку цветового баланса рисунка или его частей, сглаживание или обострение контуров, применение всевозможных спецэффектов и методов типа компенсации “эффекта красных глаз”. Наверное, не каждый пользователь осознает, что в основе всех этих технологий лежит математическая обработка числовых данных порой по весьма сложным алгоритмам. Тем не менее это так, и именно благодаря вычислительной мощности компьютера возможности современных электронных “художников” существенно расширяются. Помимо плоских статических изображений, компьютер также способен работать с объемной и динамической графикой. Кроме того, все большую популярность среди пользователей завоевывают “комбинированные” мультимедийные ресурсы, например, презентации или фотоальбомы с подписями и декоративным оформлением, позволяющие легко осуществлять поиск и навигацию по большому числу фотографий. Очевидно, что для реализации на компьютере любых графических технологий необходимо соответствующее программное обеспечение. Рассмотрим некоторые наиболее распространенные его виды. Примечание для учеников. Эту часть ответа необходимо обязательно дополнить собственным опытом работы с тем программным обеспечением, которое изучалось на уроках по компьютерной графике. Учитель, оценивая ваши знания, хочет увидеть, что вы не просто способны воспроизвести общетеоретические формулировки, но и видите, где именно и как они применяются на практике. К сожалению, автор этих строк, по сравнению с конкретным учеником, находится в существенно более трудном положении: изучаемое в школах графическое ПО необычайно разнообразно, и поэтому одинаково сложно как рассказать о его общих чертах, так и дать исчерпывающее описание всех применяемых программных продуктов. Самым известным и чаще всего применяемым ПО является графический редактор. В соответствии с основными способами создания графических изображений имеется два типа редакторов. Для векторной графики наиболее известны Corel Draw и Adobe Illustrator, а ассортимент более простых в обращении редакторов растровых изображений значительно шире — от простейшего входящего в состав Windows редактора Paint до профессионального Adobe Photoshop. Графические редакторы предназначены для создания и редактирования графических изображений, а также их сохранения в виде файлов различных форматов и выводе на бумагу. В целом управление графическим редактором во многом осуществляется теми же способами, что и с остальным программным обеспечением (данное свойство обусловлено стандартизацией интерфейса приложений Windows). Если взглянуть с указанных позиций на любой графический редактор (на рис. 1 в качестве примера изображен Paint), то он работает в стандартном окне и, как остальные программы, имеет меню, панель инструментов и прочие стандартные органы управления. Рис. 1 Главными особенностями графического редактора по сравнению с остальным ПО, видимо, являются большее количество приемов использования мыши и специфические графические инструменты. По уже упоминавшимся выше причинам мы не можем в рамках данной публикации рассмотреть конкретные инструменты редактора. Ограничимся лишь указанием на то, что, помимо “электронных аналогов” реальных орудий труда художника (карандаш, кисть, резинка, палитра красок и т.п.), программа предоставляет нам совершенно специфические виртуальные инструменты, такие, как, например, цветной ластик. Особый класс инструментов графических редакторов образуют средства рисования графических примитивов, которые фактически являются одной из основ компьютерной графики. Помимо графических редакторов, в школах активно изучают системы презентационной графики и реже — анимационные системы. Кратко остановимся здесь на системе создания и редактирования презентаций PowerPoint. Данная программа позволяет разрабатывать презентации по некоторой выбранной теме, что может быть использовано как при изложении учебного материала на уроке, так и при выступлении “на более представительном уровне”, например, на конференции. Каждая презентация состоит из отдельных кадров — слайдов. Программа PowerPoint предоставляет пользователю средства по подготовке слайдов, а также машину для их демонстрации, способную показывать слайды в ручном и автоматическом режимах. Имеется большой ассортимент способов смены слайдов на экране, прилагается богатый набор готовых шаблонов для оформления презентации. Характерной особенностью презентационной системы по сравнению с графическим редактором является ее мультимедийный характер. Если графический редактор работает только с рисунками, то презентационная система имеет встроенные средства для работы с текстами, графикой, аудио- и видеофрагментами. Столь широкие возможности делают тщательно подготовленную презентацию весьма выразительным средством. В то же время, презентационная система не претендует на редактирование графики, аудио- и видеоматериалов: она лишь способна включать в себя то, что разработано средствами другого, более специализированного, программного обеспечения. Подчеркнем, что при подготовке слайда каждый элемент кадра (тексты, картинки, стрелки и т.д.) является самостоятельным объектом. Мы можем независимым образом менять размер каждого объекта и перемещать его, причем данный объект может частично заслонять другие объекты или, наоборот, закрываться ими (PowerPoint, как и многие другие программы, поддерживает идеологию графических плоскостей: каждый предмет находится в собственной плоскости, причем порядок расположения плоскостей относительно зрителя можно менять). Таким образом, по принципам работы система PowerPoint определенно ближе к векторному редактированию, чем к растровому. Разработка хорошей презентации — это не чисто технологический процесс. Имеется множество примеров, когда при подготовке презентации человек, увлеченный подбором эффектного механизма смены кадров, забывает о содержании материала и его логике. В результате вместо восхищения продукт такого, с позволения сказать, творчества вызывает в лучшем случае равнодушие, а то и вовсе раздражение. Нам остается рассмотреть последнюю часть вопроса, связанную с форматами графических файлов. Как и любые другие результаты нашей работы на компьютере, графические изображения также могут сохраняться на внешних носителях в виде файлов. Количество графических форматов весьма разнообразно, поэтому выбор наиболее подходящего из них есть важная практическая задача. Как уже отмечалось раньше, типичным векторным форматом графических файлов в среде Windows является WMF. Каждый мощный векторный редактор использует свой собственный формат хранения рисунков (например, CDR у Corel Draw); к счастью, такие редакторы поддерживают большое количество форматов, что позволяет легко преобразовывать их один в другой. Растровые форматы обладают еще большим разнообразием. Стандартным графическим форматом в операционной системе Windows является BMP. Это очень простой формат, который может использовать любое программное обеспечение. Тем не менее он имеет существенный недостаток — файлы .BMP очень велики. Для смягчения этого недостатка многие графические форматы используют внутреннее сжатие (подробности см. ниже). В сети Интернет очень распространен один из таких форматов — GIF. Если сохранить один и тот же рисунок в форматах .BMP и .GIF, то последний окажется существенно меньше при абсолютно таком же качестве изображения. К сожалению, рисунок в формате .GIF не может иметь более 256 цветов, что несколько ограничивает его применение5. Наконец, для хранения многоцветных художественных иллюстраций и фотографий существует формат со специальным сжатием — JPEG (обычно расширение файлов уменьшают до стандартной длины и пишут JPG). Традиционные методы сжатия на многоцветные изображения практически не действуют, т.к. в них почти нет соседних точек с одинаковым цветом: например, все точки листа зеленые, но их оттенки различны. Поэтому большая группа экспертов по цветопередаче JPEG (Joint Photographic Experts Group), обобщив полувековой опыт исследований в области компьютеров, телевидения, полиграфии и других родственных областях, а также по особенностям человеческого зрения, представила детальные рекомендации по сжатию графической информации. Результат получился впечатляющим: объем графических файлов сократился более чем на порядок. Не следует только забывать, что преобразование в формат .JPEG является необратимым — восстанавливаемый после сжатия рисунок не абсолютно идентичен исходному, хотя на глаз это практически незаметно. Файлы .JPG являются вторым базовым стандартом изображений в сети Интернет. Вопросы, связанные с графическими форматами файлов, представляют большой самостоятельный интерес. Наиболее любознательные читатели могут обратиться за интересными подробностями к указанной в списке литературе [3–8]. Обсуждая наиболее распространенные форматы графических файлов, мы не могли не упоминать об использующихся в них методах сжатия информации. (Возможно, с точки зрения повышения логичности ответа авторам билета стоило поменять местами в тексте вопроса сжатие и форматы файлов.) Итак, рассмотрим методы сжатия графической информации. Сжатие — это один из процессов обработки информации. Прежде всего различают обратимое и необратимое сжатие (упаковка с потерей информации или без нее). В первом случае то, что получается в результате восстановления сжатой информации, полностью совпадает с оригиналом, а во втором распакованные данные хоть и не сильно, но отличаются от исходных. В частности, обратимого сжатия обязательно требует текстовая и числовая информация, зато графика и звук допускают некоторые незаметные для органов чувств искажения. Еще большие искажения можно позволить при упаковке отдельных кадров фильма, поскольку они сменяются настолько быстро, что человек не в состоянии рассмотреть отдельные детали изображения. Наиболее распространенной идеей, лежащей в основе обратимого сжатия графических изображений, является учет числа повторений точек с одинаковым цветом. Основанный на ней метод называется методом группового кодирования; в англоязычной литературе он носит название RLE (Run Length Encoding — кодирование длин серий). Метод наиболее хорошо подходит к упаковке простых контурных графических изображений с небольшим числом цветов. Рассмотрим ее на примере простейшего рисунка, на котором на синем небе находится желтое солнышко. Его фрагмент в увеличенном виде приведен на рис. 2. Рис. 2 На рис. 2 одно из горизонтальных сечений рисунка отмечено черной прямой. Как отчетливо видно, в нем после достаточно большого количества синих точек имеется одна желтая, а затем снова следует группа синих. Очевидно, что вместо хранения информации о каждой точке можно просто закодировать, что 22 точки имеют синий цвет, 1 — желтый6 и т.п. В результате в нашем случае вместо 38 чисел, характеризующих цвет каждого пикселя, оказывается достаточно всего трех пар, указывающих количество точек и их цвет. Еще более мощным групповой метод становится для черно-белых (двухуровневых) изображений. В этом случае даже нет необходимости специально указывать цвета, поскольку они обязательно чередуются, — можно просто сохранять число точек в черных и белых группах. Подобные стандарты упаковки данных активно используются в факс-машинах [5]. Метод RLE, будучи необязательной возможностью файлов формата BMP, используется на практике не очень часто. Помимо него, в некоторых других форматах графических файлов также может применяться сжатие: метод LZ (назван так в честь его авторов: A.Lempel и J.Ziv) и его модификации в форматах GIF и PNG, а также метод Хаффмана (PNG и JPG — о последнем речь пойдет ниже). В последнее время все большее распространение получают системы сжатия, специально вносящие некоторые незаметные для человека искажения данных с целью повышения возможности их сжатия. Потребность в подобных технологиях обусловлена тем, что традиционные способы не могут обеспечить существенной степени сжатия. В частности, обратимым методам удается достаточно хорошо упаковать контурные рисунки с небольшим количеством цветов, но попытки проделать то же самое с многоцветными фотографическими изображениями приводят к результатам, которые намного хуже; но именно такие картинки в первую очередь и нуждаются в сжатии из-за большого объема! Наиболее известные стандарты необратимого сжатия базируются на рекомендациях группы профессиональных экспертов по качеству графических изображений и цветопередаче JPEG. Данные рекомендации существенным образом учитывают особенности человеческого зрения. Примечание. Строго говоря, несмотря на укоренившуюся терминологию, JPEG — это не сам формат файлов, а техника сжатия изображений. Методы, применяемые в JPEG, опираются на достаточно сложную математику (см., например, [4]) и выходят за рамки нашего обсуждения. Их суть заключается в том, что в каждом небольшом квадратном участке изображения (обычно 8 x 8 пикселей) производится разложение на гармонические составляющие7. Затем гармоники с наиболее высокими частотами, ответственные за резкие переходы в изображении, округляются. Фотографические и полутоновые изображения, в которых отсутствуют резкие границы и происходит плавное перетекание цветов, от такой обработки практически не пострадают, зато цвета точек, получившиеся в результате усреднения, поддаются сжатию во много раз лучше, чем в исходном изображении. В то же время, фрагменты, содержащие резкие цветовые переходы (рамки, тексты и т.п.), в процессе описанной процедуры искажаются: скорее всего вы замечали, что вокруг надписей на фотографиях формата JPG часто имеется специфический “узор” из разноцветных точек. Существенно, что при сохранении данных в JPEG-файл пользователь может по своему усмотрению задавать степень уплотнения, подбирая баланс между потерей качества и уменьшением объема. Полезно отметить, что в случае чрезмерной степени сжатия границы между отдельными квадратиками, по которым производилось усреднение, становятся различимыми. Закончить хочется цитатой из книги [4], которая может служить хорошим практическим советом: “Как бы ни был хорош формат JPEG, для некоторых приложений он непригоден. Все методы сжатия, обычно используемые в JPEG, относятся к технологиям сжатия с потерями, что делает этот формат непригодным в качестве формата промежуточного хранения, когда требуется многократно повторно редактировать файл изображения. Кроме того, при сжатии текста и рисунков формат JPEG не так хорош, как при сжатии фотографий”. Примечание для учителей. С размером файлов BMP связаны задачи, включенные в качестве третьего вопроса: см. билеты № 4 и № 20 базового и профильного уровней. Как следует из примеров задач, подразумевается, что при их решении ученики должны полагать этот размер равным количеству информации обо всех пикселях изображения. На самом деле это не совсем так, поскольку любой файл формата .BMP имеет еще некоторую служебную часть. Как видно из приведенной ниже таблицы, численное различие совсем невелико и, казалось бы, на него можно не обращать внимания (все данные таблицы относятся к рисунку из 640 ґ 480 = 307 200 пикселей). Тем не менее постоянное практическое использование идеи о том, что графический файл состоит исключительно из данных о пикселях, мне кажется методически некорректной. В частности, интуитивно понятно, что в файле где-то должны быть указаны размеры рисунка, иначе пиксели разбиваются на строки неоднозначно. Менее очевидно, но известно из литературы [2], что в начале файла .BMP хранится опознавательная сигнатура “BM”, а также размер файла в байтах, число битов на пиксель, наличие или отсутствие сжатия и прочие весьма полезные вещи. Размер минимальной постоянной части заголовка файла равен 54 байтам (как в последней строке таблицы), но к этому объему может добавляться некоторая переменная часть, зависящая от цветовых свойств рисунка. В качестве компромиссных вариантов могу предложить для большей корректности добавить в формулировки всех упомянутых выше задач фразу “размером служебной области файла пренебречь” либо по крайней мере слово определить заменить на оценить. Кстати говоря, уточненная формулировка дает хороший повод при необходимости задать ученику дополнительные вопросы. Литература 1. Петцольд Ч. Программирование для Windows 95; в двух томах. Т. I. СПб.: BHVПетербург, 1997, 752 с. 2. Сван Т. Форматы файлов Windows. М.: БИНОМ, 1994, 288 с. 3. Залогова Л.А. Практикум по компьютерной графике. М.: Лаборатория Базовых Знаний, 2001, 320 с. 4. Миано Дж. Форматы и алгоритмы сжатия изображений в действии. М.: Триумф, 2003, 336 с. 5. Кенцл Т. Форматы файлов Internet. СПб.: Питер, 1997, 320 с. 6. Залогова Л.А. Форматы графических изображений. Информатика и образование, 1999, № 6, с. 76–81. 7. Залогова Л.А. Цвет в компьютерной графике. Информатика и образование, 1999, № 7, с. 85–90. 8. Залогова Л.А. Форматы графических файлов. Информатика и образование, 1999, № 8, с. 85–94. 2. Создать две взаимосвязанные web-страницы на заданную тему, содержащие текст, графику, гиперссылки и простые элементы управления (кнопки, переключатели, списки). Создавать web-страницы можно разными способами: например, используя Блокнот и знания языка гипертекстовой разметки страниц HTML, используя визуальные редакторы. В нашем случае задание предполагает, кроме всего прочего, и наличие элементов управления, что подразумевает наличие в коде страницы скриптов на JavaScript. Поэтому скорее всего учащиеся предпочтут при выполнении задания использование визуальных редакторов. Остановимся на этом варианте и рассмотрим основные средства, необходимые для решения поставленной в вопросе задачи, на примере MS FrontPage. Общий вид рабочего окна программы при запуске: В режиме Конструктора (см. в нижней части окна) в визуальном режиме на рабочем поле окна размещаются необходимые элементы. В режиме С разделением отображаются и страница, и соответствующий ей HTML-код. В режиме Код отображается только HTML-код. В режиме Просмотр можно осуществить предварительный просмотр страницы в web-браузере. Добавить рисунок можно разными способами: вставить из буфера обмена; вставить из файла с помощью инструмента или Вставка Рисунок Из файла. Возможны и другие способы вставок рисунков (см. Вставка Рисунок): Внутренняя или внешняя гиперссылка добавляется с помощью инструмента или Вставка Гиперссылка. Диалоговое окно вставки гиперссылки выглядит так: Поскольку задание требует взаимосвязанных страниц, то каждая из них ссылается на другую. Элементы управления можно добавить через меню Вставка. Например, Вставка . Имеется возможность вставки нумерованных и маркированных списков. Элементы, связанные с переключателями и кнопками, содержатся преимущественно в формах (Вставка Форма). Таким образом, умение работать с приведенными здесь инструментами позволяет решить поставленную задачу. 3. Рассчитать, какое количество страниц текста можно сохранить на дискете в виде архива при заданных размерах страницы, кодовой таблице и коэффициенте сжатия. Пример. На странице текста содержатся 64 строки по 48 символов в строке. Используется кодировка ASCII. Коэффициент сжатия — 1,3. Сколько страниц текста можно сохранить на дискете емкостью 1,44 Мб? Решение. 64 х 48 = 3072 (символа) — содержатся на странице. Один символ в данной кодировке кодируется одним байтом, т.е. на страницу текста требуется 3072 байта = 3 Кб. После сжатия эта же страница имеет объем 3 Кб/1,3 2,308 Кб. Подсчитаем, сколько всего можно сохранить страниц на дискете: 1,44 х 1024/2,308 638,9 (страницы). Билет № 20 1. Кодирование звуковой информации. Форматы звуковых файлов. Ввод и обработка звуковых файлов. Использование инструментов специального программного обеспечения и цифрового оборудования для создания и преобразования звуковых файлов. Компьютерные способы хранения и обработки звуковой информации получают в последнее время все большее распространение1. Звукооператоры увидели в компьютере мощное средство для более комфортной реализации своих традиционных функций и, самое главное, множество принципиально новых, ранее неизвестных возможностей. Действительно, современный компьютер может служить хорошей аппаратной основой для обработки звуковой информации: характерная (тактовая) частота последних процессоров превышает максимальные звуковые частоты не менее чем на 5 порядков2, так что при такой скорости можно организовать весьма сложную обработку данных, включая автоматические преобразования в масштабе реального времени. Итак, рассмотрим интересный и все чаще используемый на практике процесс кодирования звуковой информации подробнее. Из курса физики известно, что звук есть колебания среды. В повседневной жизни средой чаще всего является воздух, но это совсем не обязательно. Например, звук прекрасно распространяется по поверхности земли: именно поэтому в приключенческих фильмах герои, стараясь услышать шум погони, прикладывают ухо к земле. Напротив, существует весьма эффектный школьный физический опыт, который показывает, что при откачивании воздуха мы перестаем слышать звук находящегося под герметичным колпаком звонка. “Не может быть никакого звука в вакууме и на поверхности Луны — в космосе царит тишина, вопреки попыткам группы специальных эффектов Голливуда убедить нас в обратном путем имитирования грохота космических кораблей и взрывов, от которых вы подпрыгиваете на стуле” [1]. Чаще всего звуковые колебания с помощью микрофона легко преобразуются в электрические. Сигнал от микрофона очень слаб и нуждается в усилении, что на современном уровне развития техники проблемы также не представляет. Форму полученных колебаний, т.е. зависимость интенсивности сигнала от времени, можно наблюдать на экране осциллографа (к сожалению, для получения наглядной устойчивой картины сигнал должен быть периодическим!). Примечание. Некоторое представление о форме звукового сигнала можно легко получить, настроив соответствующим образом Windows MediaPlayer. Для наблюдения лучше использовать максимально простые периодические звуки, например, старые записи соло электромузыкальных инструментов (см. рис. 1). Рис. 1 Раньше, в эпоху аналоговой записи звука, для сохранения полученного электрического сигнала его преобразовывали в ту или иную форму другой физической природы, которая зависела от применяемого носителя. Например, при изготовлении грампластинок сигнал вызывал механические изменения размеров звуковой дорожки, а для старых киноаппаратов звук на пленку наносился оптическим методом; наибольшее распространение в быту получил процесс магнитной звукозаписи. Во всех случаях интенсивность звука была строго пропорциональна какой-либо величине, например, ширине оптической звуковой дорожки, причем эта величина имела непрерывный диапазон значений. Переход к записи звука в компьютерном виде потребовал принципиально новых подходов. Дело в том, что при цифровой записи зависимости интенсивности звука от времени возникает принципиальная трудность: исходный сигнал непрерывен, а компьютер способен хранить в памяти только дискретные величины (подробнее об этом см. билет № 2). Отсюда следует, что в процессе сохранения звуковой информации она должна быть “оцифрована”, т.е. из аналоговой непрерывной формы переведена в цифровую дискретную. Данную функцию выполняет специальный блок, входящий в состав звуковой карты компьютера, который называется АЦП — аналого-цифровой преобразователь. Каковы основные принципы работы АЦП? Примечание. Советую обратить на этот материал особое внимание, поскольку в большинстве школьных учебников он отсутствует; из тех, что мне известны, могу порекомендовать [2, 3]. Во-первых, АЦП производит дискретизацию записываемого звукового сигнала по времени. Это означает, что измерение уровня интенсивности звука ведется не непрерывно, а, напротив, в определенные фиксированные моменты времени (удобнее, разумеется, через равные временныRе промежутки). Частоту, характеризующую периодичность измерения звукового сигнала, принято называть частотой дискретизации. Вопрос о ее выборе не праздный, и ответ в значительной степени зависит от частотного спектра сохраняемого сигнала: существует специальная теорема Найквиста, согласно которой частота оцифровки звука должна как минимум в 2 раза превышать максимальную частоту, входящую в состав спектра сигнала. Считается, что редкий человек слышит звук частотой более 20 000 Гц = 20 кГц; поэтому для высококачественного воспроизведения звука верхнюю границу обычно с некоторым запасом принимают равной 22 кГц. Отсюда немедленно следует, что частота при таких требованиях должна быть не ниже 44 кГц3. Названная частота используется, в частности, при записи музыкальных компакт-дисков. Однако часто такое высокое качество не требуется, и частоту дискретизации можно значительно снизить. Например, при записи речи вполне достаточно частоты 8 кГц. Результат при этом получается хотя и не блестящий, но вполне разборчивый4 — вспомните, как вы легко различаете голоса своих друзей по телефону. Хотя качество воспроизведения тем лучше, чем выше частота дискретизации, но и объем звуковых данных при этом тоже возрастает, так что оптимального “на все случаи” значения частоты не существует. Во-вторых, АЦП производит дискретизацию амплитуды звукового сигнала. Это следует понимать так, что при измерении имеется “сетка” стандартных уровней (например, 256 или 65 536 — это количество характеризует глубину кодирования), и текущий уровень измеряемого сигнала округляется до ближайшего из них. Напрашивается линейная зависимость между величиной входного сигнала и номером уровня. Иными словами, если громкость возрастает в 2 раза, то интуитивно ожидается, что и соответствующее ему число возрастет вдвое. В простейших случаях так и делается, но, как показывает более детальное рассмотрение, это не самое лучшее решение. Проблема в том, что в широком диапазоне громкости звука человеческое ухо не является линейным. Например, при очень громких звуках (когда “уши закладывает”) увеличение или уменьшение интенсивности звука почти не дает эффекта, в то время как при восприятии шепота очень незначительное падение уровня может приводить к полной потере разборчивости. Поэтому при записи цифрового звука, особенно при 8-битном кодировании, часто используют различные неравномерные распределения уровней громкости, в основе которых лежит логарифмический закон (m-law, A-law и другие; впечатляющие формулы для них можно посмотреть в книге [4]). В качестве практической иллюстрации к проблеме выбора параметров цифровой записи звука можно заглянуть в списки форматов и атрибутов программы “Звукозапись”, входящей в состав Windows (для получения изображенного на рис. 2 диалогового окна необходимо в меню Файл программы выбрать пункт Свойства). Рис. 2 Итак, в ходе оцифровки звука мы получаем поток целых чисел, причем “величина числа соответствует силе звука в данный момент” [1]. На рис. 3 приведенное выше описание процесса дискретизации проиллюстрировано графически: Рис. 3 На рисунке представлен процесс оцифровки зависимости интенсивности звукового сигнала I от времени t. Отчетливо видна дискретизация по времени (равномерные отсчеты на горизонтальной оси) и по интенсивности (требуемое при этом округление схематически изображено “изломами” горизонтальных линий разметки). Подчеркнем, что на рисунке степень дискретизации для наглядности сознательно утрирована: реально различие между соседними значениями по обеим осям значительно меньше и, следовательно, форма сигнала передается гораздо точнее. Мы рассмотрели лишь наиболее общие принципы записи цифрового звука. На практике для получения качественных звуковых файлов используется целый ряд дополнительных технических приемов. Их интересное и подробное описание дается, в частности, в серии популярных статей в журнале “Компьютерра” [5]. Изложенный метод преобразования звуковой информации с целью хранения в памяти компьютера в очередной раз подтверждает уже неоднократно обсуждавшийся ранее тезис: любая информация в компьютере приводится к числовой форме и затем переводится в двоичную систему. Теперь мы знаем, что и звуковая информация не является исключением из этого фундаментального правила. При воспроизведении записанного в компьютерный файл звука производится преобразование в противоположном направлении — из дискретной цифровой формы представления сигнала в непрерывную аналоговую, поэтому вполне естественно соответствующий узел компьютерного устройства называется ЦАП — цифроаналоговый преобразователь. Процесс реконструкции первоначального аналогового сигнала по имеющимся дискретным данным нетривиален, поскольку никакой информации о форме сигнала между соседними отсчетами не сохранилось. В разных звуковых картах для восстановления звукового сигнала могут использоваться различные способы. Наиболее наглядный и понятный из них состоит в том, что по имеющимся соседним точкам рассчитывается некоторая гладкая функция, проходящая через заданные точки, которая и принимается в качестве формы аналогового сигнала. Технические возможности современных микросхем позволяют для реконструкции формы сигнала производить весьма сложные вычисления. Выпускаются даже специализированные микропроцессоры, для которых в технической литературе принято название DSP (Digital Signal Processor) — процессоры цифровой обработки сигналов. Результаты дискретизации звуковой информации, как и все остальные компьютерные данные, сохраняются на внешних носителях в виде файлов. Звуковые файлы могут иметь различные форматы; опираясь на данные замечательной книги [4], рассмотрим наиболее распространенные из них. Формат AU. Этот простой и распространенный формат на системах Sun и NeXT (в последнем случае, правда, файл будет иметь расширение SND). Файл состоит из короткого служебного заголовка (минимум 28 байт), за которым непосредственно следуют звуковые данные. Широко используется в Unix-подобных системах и служит базовым для Java-машины. Формат WAVE (WAV). Стандартный формат файлов для хранения звука в системе Windows. Является специальным типом другого, более общего формата RIFF (Resource Interchange File Format); другой разновидностью RIFF служат видеофайлы AVI. Файл RIFF составлен из блоков, некоторые из которых могут, в свою очередь, содержать другие вложенные блоки; перед каждым блоком данных помещается четырехсимвольный идентификатор и длина. Звуковые файлы WAV, как правило, более просты и имеют только один блок формата и один блок данных. В первом содержится общая информация об оцифрованном звуке (число каналов, частота дискретизации, характер зависимости громкости и т.д.), а во втором — сами числовые данные. Каждый отсчет занимает целое количество байт (например, 2 байта в случае 12-битовых чисел, старшие разряды содержат нули). При стереозаписи числа группируются парами для левого и правого канала соответственно, причем каждая пара образует законченный блок — для нашего примера его длина составит 4 байта. Такая, казалось бы, излишняя структурированность позволяет программному обеспечению оптимизировать процесс передачи данных при воспроизведении, но, как в подобных случаях всегда бывает, выигрыш во времени приводит к существенному увеличению размера файла. Формат MP3 (MPEG Layer3). Это один из форматов хранения аудиосигнала, позднее утвержденный как часть стандартов сжатого видео. Природа получения данного формата во многом аналогична уже рассмотренному нами ранее сжатию графических данных по технологии JPEG (см. билет № 19). Поскольку произвольные звуковые данные обратимыми методами сжимаются недостаточно хорошо, приходится переходить к методам необратимым: иными словами, базируясь на знаниях о свойствах человеческого слуха, звуковая информация “подправляется” так, чтобы возникшие искажения на слух были незаметны, но полученные данные лучше сжимались традиционными способами. Это называется адаптивным кодированием и позволяет экономить на наименее значимых с точки зрения восприятия человека деталях звучания. Приемы, применяемые в MP3, непросты для понимания и опираются на достаточно сложную математику, но зато обеспечивают очень значительный эффект сжатия звуковой информации. Успехи технологии MP3 привели к тому, что ее применяют сейчас и во многих бытовых звуковых устройствах, например, плеерах и сотовых телефонах. Формат MIDI. Название MIDI есть сокращение от Musical Instrument Digital Interface, т.е. цифровой интерфейс для музыкальных инструментов. Это довольно старый (1983 г.) стандарт, объединяющий разнообразное музыкальное оборудование (синтезаторы, ударные, освещение). MIDI базируется на пакетах данных, каждый из которых соответствует некоторому событию, в частности, нажатию клавиши или установке режима звучания. Любое событие может одновременно управлять несколькими каналами, каждый из которых относится к определенному оборудованию. Несмотря на свое изначальное предназначение, формат файла стал стандартным для музыкальных данных, которые при желании можно проигрывать с помощью звуковой карты компьютера безо всякого внешнего MIDI-оборудования. Главным преимуществом файлов MIDI является их очень небольшой размер, поскольку это не детальная запись звука, а фактически некоторый расширенный электронный эквивалент традиционной нотной записи. Но это же свойство одновременно является и недостатком: поскольку звук не детализирован, то разное оборудование будет воспроизводить его по-разному, что в принципе может даже заметно исказить авторский музыкальный замысел. Формат MOD. Представляет собой дальнейшее развитие идеологии MIDI-файлов. Известные как “модули программ воспроизведения”, они хранят в себе не только “электронные ноты”, но и образцы оцифрованного звука, которые используются как шаблоны индивидуальных нот. Таким способом достигается однозначность воспроизведения звука. К недостаткам формата следует отнести большие затраты времени при наложении друг на друга шаблонов одновременно звучащих нот. Вторая половина вопроса билета посвящена описанию того, где и как описанные выше общетеоретические сведения можно применить на практике. Примечание. Подобная структура билета на экзамене — в целом хороший методический прием. Он позволяет учителю проверить, как ученик представляет себе связь теории с практикой, что с точки зрения общеобразовательных целей крайне важно. Ученик же получает некоторые дополнительные шансы в случае плохого знания теории при ответе вспомнить хотя бы то, что они делали на уроках по данному вопросу. Недостатком подобного типа “практически ориентированных” вопросов является возможность “увязнуть” в технических деталях — “скатиться” на обсуждение меню, кнопок и прочих интерфейсных деталей конкретной программы, а вопрос-то все-таки теоретический! По нашему мнению, в подобных случаях экзаменуемый должен всегда стараться описывать общие возможности, но не конкретный ход их реализации. В частности, в нашем случае надо рассказать, в чем состоят возможности программ обработки звука и где это можно применить, а не описывать, какие именно кнопки требуется нажимать в той или иной ситуации. Итак, при обработке звука на компьютере можно воспользоваться уже имеющимися звуковыми файлами, а можно создать (ввести) их самостоятельно. Любые используемые файлы, даже сделанные специально для данного проекта, не всегда полностью соответствуют его потребностям. Для приведения звуковых материалов к необходимому виду используется процесс редактирования. В ходе редактирования можно подкорректировать небольшие дефекты записи (например, укоротить слишком длинную паузу или повысить уровень громкости фрагмента), перекомпоновать части звукового файла в нужном порядке или дополнить его из других файлов, сохранить данные в новом требуемом формате (скажем, преобразовать для экономии места в MP3). Важной задачей является изготовление мультимедийных документов, например, вставка полученного звукового файла в презентацию. Таковы наиболее общие виды работы со звуковой информацией на компьютере. Заметим, что по смыслу они во многом аналогичны задачам компьютерной обработки текстовой и графической информации. А теперь несколько слов о наиболее важных моментах практической реализации. Для того чтобы ввести новую, т.е. не содержащуюся в уже имеющихся компьютерных файлах, звуковую информацию, необходимо воспользоваться аналоговым источником звука. Им может, например, быть микрофон, магнитофон, проигрыватель, радиоприемник или телевизор. Наиболее слабый электрический сигнал дает микрофон, поэтому для него в звуковой карте предусмотрен специальный вход. Подключив к соответствующему входу карты используемый источник звука, можно переходить к оцифровке звука5 и его записи в файл. Помимо чисто аппаратного подсоединения к компьютеру источника звука, дополнительно потребуется еще соответствующее программное обеспечение. В простейшем случае можно воспользоваться стандартной входящей в состав Windows программой Звукозапись, о которой уже упоминалось ранее. Прежде чем начинать запись, в обязательном порядке необходимо тщательно обдумать и установить необходимые параметры оцифровки (в частности, при записи дикторского текста с одного микрофона установка стереорежима с частотой дискретизации 48 кГц весьма красноречиво расскажет о квалификации такого, с позволения сказать, звукооператора!). Только после всего описанного имеет смысл нажать наконец кнопку “Запись”, которая обычно стандартно помечается большой красной точкой. Когда запись произведена, остановлена и сохранена в файл на диске, можно переходить к следующему этапу — ее компьютерному редактированию. Часто его удается осуществить с помощью той же самой программы Звукозапись. Для понимания возможностей программы обратимся к ее меню. Там мы обнаружим следующие пункты, имеющие отношение к процессу редактирования звуков: · свойства (преобразование формата файла); · правка (вставка звука в другой документ или связывание с ним); · вставить в файл (в установленную позицию исходного звука); · смешать с файлом/буфером (микширование звуков); · удалить до/после текущей позиции; · увеличить/уменьшить громкость; · увеличить/уменьшить скорость; · добавить эхо; · обратить. Видно, что для “любительских целей” таких возможностей редактирования вполне достаточно6. По нашему мнению, этого бы и хватило при ответе на билет о компьютерной обработке звука, особенно если ученик “от себя” дополнил бы его рассказом (не показом!) о том, что их научили делать на лабораторных занятиях. Тем не менее согласно тексту вопроса требуется изложение еще некоторого более углубленного материала. Так что проанализируем последнее предложение в вопросе, где речь идет о “специальном программном обеспечении и цифровом оборудовании”. Между прочим, формально оно занимает более половины текста билета. Начнем с того, что это как раз тот случай, когда школа может воспользоваться правом составления “билетов, непосредственно используемых на экзамене, с учетом содержания учебной программы, наличия средств ИКТ и используемого программного обеспечения”. Примечание. Кстати говоря, в связи с “возможностью полного отсутствия” средств ИКТ и ПО для обработки звука в отдельно взятой школе довольно странно смотрится в Обязательном минимуме предмета выделенная в отдельный абзац (ключевая?) фраза “Использование инструментов специального программного обеспечения и цифрового оборудования”!!! Получается, что даже если нет и не на чем, все равно обязательно? Для нас — авторов данной публикации — подобная неопределенность в оснащении школ есть, безусловно, момент отрицательный: мы либо должны написать достаточно подробный обзор имеющихся средств профессионального редактирования звука, чтобы каждый нашел в этом обзоре то, что у него есть в школе, либо представить вежливое извинение за то, что ну не можем мы написать рекомендации на все случаи жизни! Будучи преподавателями периферийного педагогического вуза, мы не считаем для себя позорным выбрать последнее, тем более что вопрос достаточно специальный. Второй принципиальный момент, который заставляет нас сомневаться в необходимости данного материала не только в билете, но и в самой программе предмета, состоит в следующем. Школьное образование хотя и должно готовить детей к практической жизни, но конкретную профессию давать вовсе не обязано. Например, в рамках школьного курса физики надо научиться пользоваться некоторыми наиболее важными электроизмерительными приборами, но осваивать профессиональное измерительное оборудование современного электрика никто не требует. Кстати говоря, в советской школе для облегчения (как показывает опыт, отнюдь не элементарного!) процесса освоения приборов создавалось специальное7 школьное оборудование. Аналогично в школе изучается рисование, но в него включается формирование у детей лишь наиболее общих навыков; ни о какой специализированной художественной подготовке при этом речь не идет, а для наиболее способных предполагается посещение художественной школы. Вернемся теперь в свете сказанного к “специальному программному обеспечению и цифровому оборудованию”. Вы уверены, что это действительно то, что нужно в школе, особенно применительно к монтажу звука? Рискну предположить, что сторонники ИКТ просто стараются чем-то заполнить место того классического материала, который они старательно “выдавливают” из школьного курса информатики: устройство компьютера, особенности двоичного представления данных, основы программирования и др., а также создать видимость глубины своего поверхностного “юзеровского” подхода. Мне могут возразить, что глубокие познания нужны для реализации высококачественных мультимедийных проектов, например, непомерно модных сейчас презентаций (можно подумать, все станут дизайнерами и прочими PRспециалистами…). Во всяком случае, если проекты, проводимые в школе, и потребуют от отдельных школьников углубленных знаний, то это еще не повод включать материал в обязательный минимум и экзамен. Таким образом, и с этой точки зрения, по нашему мнению, включение данного вопроса далеко не бесспорно. Наконец, последнее, и самое страшное в прямом смысле этого слова. В то самое время, когда я писал ответ на данный билет, в нашем Пермском крае в поселке Сепычев Верещагинского района предъявили уголовное обвинение директору новой школы за использование нелицензионного программного обеспечения фирмы Microsoft. Суд, правда, пока затрудняется однозначно определить, кто именно виноват: тот, кто организовал поставку, купил компьютеры, или тот, кто их принял; директор или учитель информатики. Добавлю, что непосредственно нелицензионным софтом пользовались ученики, так что как бы и они, согласно логике закона, не оказались в чем-то уголовно виноватыми…8 Насколько мне известно (правда, я не считаю себя большим специалистом по компьютерной обработке звука), одно из лучших специальных ПО в этой области — это Sound Forge. Так вот, согласно найденному в Интернете объявлению, в 2005 году в рамках какой-то рекламной акции новая, восьмая, версия этого программного обеспечения предлагалась “всего” за $279! Правда, более старые версии вроде бы можно найти гораздо дешевле (своеобразный second hand), но все равно, если умножить на число компьютеров в классе, выйдет порядочно. Так что подумайте обо всем этом, прежде чем начинать обучать школьников “использованию инструментов специального программного обеспечения”. Неплохо бы задуматься и тем, кто пишет стандарты и программы (а Обязательный минимум особенно). В частности, в дополнение к красивым общим фразам стоит найти и порекомендовать учителям конкретное ПО, которым можно свободно пользоваться без риска “попасть под статью”. Это раньше в школах был “зоопарк” — где Корвет, где УКНЦ, где несколько IBM PC XT (а где и вовсе ничего). Теперь-то по крайней мере у всех если есть, то программно совместимая техника, и дать общие руководящие указания вполне реально. И заодно еще подумать, кто, как и с какой юридической ответственностью обеспечит это (имеется в виду ПО и средства ИКТ) в каждую школу! Литература 1. Рош У.Л. Библия мультимедиа. Киев: ДиаСофт, 1998, 800 с. 2. Информационная культура: Кодирование информации. Информационные модели. 9–10-е классы. М.: Дрофа, 2000, 208 с. 3. Угринович Н.Д. Информатика и информационные технологии. Учебное пособие для 10–11-х классов. Углубленный курс. М.: Лаборатория Базовых Знаний, 2000, 440 с. 4. Кенцл Т. Форматы файлов Internet. СПб.: Питер, 1997, 320 с. 5. Симаненков Д. Тема номера. Компьютерра № 30–31, с. 20–33; № 32/1998, с. 20–28 (http://www.computerra.ru/offline/1998/258 и http://www.computerra.ru/offline/1998/260). 6. Еремин Е.А. Представление звуковой информации в ЭВМ. Информатика 2004, № 45, с. 16–17. 2. Найти в Интернете требуемое программное обеспечение, скопировать на свой компьютер и установить его в соответствии с лицензионным соглашением, предварительно проверив скопированные файлы на наличие вирусов. Для поиска программного обеспечения в Интернете можно использовать любую поисковую систему. На мой взгляд (и такая оценка дается и многими экспертами), наилучшим “поисковиком” является Google. При поиске программного обеспечения действуем в зависимости от ситуации: если известно название программного продукта, то в строке поиска записываем его; если нет, то составляем такой запрос, где описываются функции программы. Например, необходимо найти программное обеспечение для конвертирования презентаций PowerPoint в формат avi. Возможный вариант запроса “Презентация ppt конвертация avi+скачать”. После завершения поиска переходим на сайт, где найдена программа, и загружаем инсталляционный файл на компьютер. Далее проверяем полученный файл на наличие вирусов: Наконец, устанавливаем программное обеспечение, учитывая лицензионное соглашение. 3. Определить используемую палитру для графического файла исходя из его информационного объема и размера в пикселях. (Вычисляется количество цветов в палитре и объем информации об одном пикселе.) Определить, как изменится информационный объем файла при изменении палитры. Пример. Определить количество цветов в палитре и объем информации об одном пикселе, если в формате bmp рисунок размером 640 х 480 точек занимает на диске 900 килобайт. Как изменится размер файла, если этот рисунок преобразовать в черно-белый без изменения размеров рисунка? Решение. 640 х 480 точек = 307 200 точек содержится в рисунке. 900 Кб : 307 200 = 900 х 1024 байт : 307 200 = 3 байта = 24 бит — используется для кодирования информации об одной точке. Таким образом, всего кодовых комбинаций существует 224 = 16 777 216, т.е. количество цветов в палитре составляет 16 777 216. Рассмотрим, как изменится объем файла, если используются только два цвета: черный и белый (без градаций). Для кодирования информации об одной точке достаточно одного бита. Таким образом, получаем 307 200 бит =38 400 байт = 37,5 Кб. Билет № 21 1. Кодирование текстовой информации. Основные приемы преобразования текстов: редактирование и форматирование. Использование систем распознавания текстов. Понятие о настольных издательских системах. Гипертекстовое представление информации. Использование готовых и создание собственных шаблонов. Использование систем проверки орфографии и грамматики. Тезаурусы. Использование систем двуязычного перевода и электронных словарей. Примечание для учителей. По нашему мнению, вопрос составлен весьма неудачно. Вопервых, собрано вместе слишком много достаточно разнородных, “мелких” и (на уровне познаний ученика) тривиальных вопросов. Скажите честно, что может ученик прочесть в типовом учебнике о программах распознавания текстов или издательских системах? Почти ничего, кроме факта их существования и весьма очевидного предназначения. А что ему рассказали о проблемах и методах машинного перевода? Даже об алгоритме простой табличной замены одного слова другим мне в учебниках не удалось ничего найти 1. И еще не забывайте, что вопрос теоретический, т.е. ученик должен что-то рассказать, а не демонстрировать владение пакетом. Тогда что мы хотим от него, бедного, услышать? (Неужели имелось в виду, что в ходе ответа ученик будет словами рассказывать, как пользоваться программами FineReader, PageMaker и Lingvo?) Во-вторых, логика расстановки отдельных вопросов непонятна. В частности, гипертекст явно относится к представлению информации, а не к прикладному ПО, “посреди” которого он оказался. Почему особо выделены шаблоны текстов, а не, например, гораздо более полезные для развития мышления пользователя стили? Наконец, почему вообще не упоминается о структурных элементах текста: символ — слово — предложение — абзац и т.д.? (В хороших книгах это всегда делается!) Мы предлагаем при составлении билетов в конкретной школе обдумать как минимум следующие возможности модификации вопроса: · программы распознавания и т.п. объединить в один вопрос: “Программное обеспечение для обработки текстов: текстовые редакторы, издательские системы, системы распознавания текстов, электронные словари и системы машинного перевода: назначение, возможности и общие принципы работы”; последняя фраза о принципах нам кажется по смыслу важной, но, разумеется, если она не соответствует применяемой в школе программе, мы не настаиваем; · аналогичным образом собрать шаблоны и проверку орфографии: “Возможности современных текстовых редакторов: стили, шаблоны, проверка орфографии и грамматики, организация структуры страниц (колонтитулы, сноски, нумерация страниц) и документов (разделы, главы, пункты, заголовки, оглавление)”; конкретный перечень выберите по своему усмотрению; при подготовке ответа советуем обратиться к книгам Ю.А. Шафрина; · вопрос о гипертексте либо поставить на второе место, либо перенести в билет № 25, где обсуждается адресация в Интернет — чаты и форумы там вполне можно потеснить; · как вариант, возможно, стоит добавить отдельное предложение о структуре текста (от отдельного символа до полного документа); · соображения по поводу тезаурусов см. ниже в тексте статьи. Перейдем теперь к непосредственному ответу на билет. Будем при этом строго следовать формулировке вопроса, как она опубликована в документе; особой логики в изложении при этом не получится, но “каков вопрос — таков ответ”. Учитывая принятую в нашей публикации традицию давать материал подробнее, чем нужно рассказать на экзамене (чтобы учитель мог организовать полноценную подготовку, особенно в случаях, когда учебники освещают вопрос недостаточно), по программам распознавания текста и машинному переводу изложение несколько расширено. Использование программ обработки текстовой информации является в настоящее время одним из наиболее распространенных применений компьютера. Возможности данного вида ПО становятся все шире, что позволяет получать высококачественные печатные документы со все более сложным устройством. Кроме того, текст в электронной форме гораздо удобнее обрабатывать: редактировать, хранить, пересылать и осуществлять поиск. Главная идея кодирования текстовой информации в компьютере заключается в следующем. Текст состоит из отдельных символов, поэтому необходимо установить правила кодирования именно для символов. Общепринятый подход заключается в том, что определяется стандартная последовательность символов, и они нумеруются. Попутно заметим, что нумерация тех или иных объектов служит фундаментальным приемом кодирования информации в компьютере. В результате описанного подхода любой текстовый символ сохраняется в виде числа, которое является не чем иным, как его номером в общем стандартном списке символов (своеобразном алфавите). Например, для заглавной латинской буквы “A” принят десятичный номер 65, а для цифры “0” — 48. Считывая из памяти порядковый номер, компьютер изображает символ с этим номером либо извлекая из таблицы его “битовый образ” (комбинацию светлых и темных точек) при растровом способе изображения, либо запуская процедуру рисования с нужным номером при векторном способе2. Первый названный метод сейчас в основном представляет исторический интерес. Примечание. Не следует путать символы и буквы. Символ — более широкое понятие, он включает в себя не только все буквы, причем часто из разных языков, но и знаки препинания, цифры, всевозможные служебные знаки и т.п. Пробел также является символом, хотя на экране ему и соответствует пустое место. Кодирование символов с помощью номера в стандартной последовательности или, как часто говорят, в кодовой таблице очень компактно и удобно для компьютерной реализации. В то же время, при существовании нескольких кодовых таблиц и при неудачном выборе нужной возможно неверное отображение текста. С этим явлением многие, вероятно, сталкивались, читая электронную почту или, несколько реже, посещая некоторые web-страницы. Из описанного выше способа кодирования текстов становится понятно, что символы хранятся в памяти и обрабатываются процессором как обычные числа. Более того, не существует принципиальных признаков, которые позволили бы отличить в памяти код числа от кода символа; например, число 32 и пробел имеют абсолютно идентичный двоичный код. То же самое можно сказать и об остальных видах данных, включая даже программу их обработки: все виды информации в компьютере сводятся к числам. Между прочим, в свете сформулированного вывода попытки утверждений, что современный компьютер чем-то качественно превосходит ЭВМ (вычислительную машину), выглядят весьма неубедительно. Итак, мы выяснили, каким образом кодируются символы. Нетрудно понять, что описанный способ не позволяет указать размер символа, шрифт и прочие особенности его начертания — для этого требуется дополнительная информация. Правила кодирования приемов оформления текста существенным образом зависят от выбранного формата файла. Покажем это на примере некоторых наиболее распространенных типов файлов (см. также рис. 1). Рис. 1 1. Простейшие текстовые документы в формате ASCII. В них сохраняется только текст, поэтому никакие элементы оформления невозможны. Достоинством является компактность и универсальность, благодаря которым формат по-прежнему продолжает использоваться (техническая информация, электронная почта). 2. Документы в формате Unicode. По сравнению с предыдущим, формат позволяет одновременно использовать не два, а произвольное количество языков. Объем файла удваивается. На рис. 1 не приведен, поскольку при отображении по виду не отличается от документа ASCII. 3. HTML-документы, или, как их часто не совсем точно называют в обиходе, webстраницы. Для организации редактирования содержат специальную управляющую разметку, заключенную в угловые скобки (проще говоря, знаки “<” и “>”) и записанную в текстовом виде. Благодаря разметке программное обеспечение получает возможность отобразить текст в соответствующем оформлении (например, слово “HTML” из текста на рис. 1 будет напечатано жирным шрифтом). 4. Документы в формате RTF (Rich Text Format). По принципу хранения во многом схожи с предыдущим форматом, только для выделения разметки используются другие знаки. Обратите внимание на интересную деталь: русские буквы сохраняются в виде шестнадцатеричных кодов (приведенная на рис. 2 последовательность d2 e5 ea f1 f2 образует русское слово “Текст”; полная исходная строка — “Текст в формате RTF”, причем пробелы и латинское ее окончание не преобразуются). 5. Документы MS Word. Фактически не являются в полном смысле слова текстовыми файлами, поскольку сведения о разметке и прочую служебную информацию хранят не в текстовом, а в бинарном виде. На рис. 1 отчетливо видно, что, помимо собственно текста “Это документ в формате MS Word”, имеются нетекстовые фрагменты (пустое место, “квадратики”, отображающие неспособность ПО преобразовывать коды в символы текста и, наконец, бессмысленные сочетания букв типа “ыщчу”). Внимательное рассмотрение вертикальной полосы прокрутки показывает, что файл самый большой из всех и собственно текст его единственного предложения является очень незначительной частью информации. Таким образом, оказывается, что существует два аспекта представления текстовой информации — кодирование собственно символов и информации об оформлении текста; первая задача имеет более универсальное решение, вторая же, напротив, сильно зависит от программного обеспечения, которое работает с текстом. В полном соответствии с выделенными выше направлениями кодирования, работа с любыми текстами имеет два типа деятельности пользователя. Первый связан с тем или иным изменением содержания текста, и именно это есть в полном смысле слова редактирование. Второй вид обработки текста связан с улучшением его оформления — размещение на странице, выравнивание по строкам, рамки, шрифты и многие другие средства; решение подобных проблем называется форматированием текста. Возможности различных программ обработки текстов, разумеется, различны, но все они имеют некоторые стандартные функции. Для редактирования это набор текстов практически неограниченной сложности (включая символы, отсутствующие на клавиатуре, например, греческие или математические); возможность свободного перемещения по редактируемому тексту; удаление и вставка произвольных фрагментов, их перенос по тексту или “размножение”; поиск текста по образцу и, если необходимо, его замена; сохранение на внешний носитель и печать; возможность отмены ошибочно выполненных действий — вот далеко не полный перечень базовых возможностей редактирования любого современного ПО для обработки текстов. Что касается форматирования, то подавляющее большинство ПО данной категории способно устанавливать размер и шрифт символов, регулировать отдельные характеристики абзацев текста (таких, как отступ, межстрочный интервал, выравнивание в строке и т.п.), вставлять иллюстрации и таблицы, разбивать текст на страницы, при этом автоматически нумеруя их. Не сомневаемся, что читатели смогут дополнить еще не одну функцию к этим представительным спискам. Примечание. Перечни возможностей редактирования и форматирования, сформулированные выше, есть краткий конспект того, что должен раскрыть ученик в своем ответе. Разумеется, приведенные списки носят примерный характер, они сознательно составлены так, чтобы охватить как можно более широкий спектр возможностей, встречающихся в различных программных продуктах. На практике, по мнению авторов, целесообразно ориентироваться на конкретное используемое в школе ПО и отобрать те наиболее важные его функции, которые разбирались на уроках. Естественно, ученик должен не просто перечислять основные приемы преобразования текстов, но и уметь раскрыть каждый из них. Например, объяснить, какие способы форматирования абзаца могут быть установлены и чем они отличаются друг от друга. Учитель, в свою очередь, также должен при необходимости помочь вспомнить пропущенные возможности наводящими вопросами и оценивать не столько полноту перечня и скорость его воспроизведения по памяти, сколько понимание каждой возможности и ее роли в обработке текстов. Особо хочется подчеркнуть, что в современных средствах обработки текстов — редакторах и браузерах применяется так называемое логическое форматирование текста. Оно заключается в том, что программное обеспечение снимает с пользователя заботу о деталях оформления и автоматически форматирует текст в имеющей место ситуации. Рассмотрим в качестве примера разбиение текста на строки. Как известно, в редакторе при вводе переход на следующую строку выполняется автоматически, а пользователь указывает только конец абзаца. Смысл такой организации ввода существенно глубже, чем экономия нажатий клавиши . Гораздо важнее то, что в случае изменения размера шрифта, установки уплотненного его формата, включения механизма переносов или изменения размеров полей на листе прежнее разбиение на строки скорее всего окажется недействительным и его придется произвести заново. Аналогичным образом браузер при распределении текста по строкам учитывает текущий размер окна и выбранный серфером размер шрифта; в результате текст web-странички, который видит пользователь, может оказаться весьма далеким от того, каким его видел на своем мониторе web-мастер. Описанный логический подход является важным базовым принципом современных программ обработки текстов. Помимо ввода с клавиатуры, текст может быть введен в компьютер с листа бумаги при помощи сканера. Поскольку в результате работы сканера получается картинка, обязательно требуется специализированное программное обеспечение, способное найти на ней отдельные буквы, распознать их и сохранить в требуемой кодировке. В результате получается полноценный текстовый документ, такой же самый, что и при наборе с клавиатуры. Задача нахождения в графическом изображении отдельных символов и их распознавание весьма нетривиальна. Несмотря на очевидные успехи в данной области, это тот вид деятельности, который человек до сих пор делает лучше компьютера. Интересно обсудить, как именно машина способна “читать текст”. Распознавание символов по их графическому изображению — одна из старых и традиционных задач искусственного интеллекта: работы по ее решению начались еще в 60–70-е годы прошлого века. Однако только с развитием компьютерной техники распознавание символов получило полноценное практическое применение. Согласно сведениям из интересной книги Л.Н. Ясницкого (см. список литературы), все существующие в настоящее время методы распознавания символов относятся к одной из трех категорий: · Шаблонный метод Заключается в сопоставлении распознаваемого изображения с эталонными символами, шаблоны которых компьютеру известны; в качестве меры “похожести” символов может быть взята доля совпадающей площади изображений при их наложении друг на друга; задача эта не такая тривиальная, как кажется в первый момент, из-за возможных дефектов печати, помарок на бумаге, поворота листка при сканировании и прочих осложняющих факторов. · Структурный метод Распознаваемый объект представляется в виде графа, узлами которого являются элементы изображения, например, отрезки прямых или части окружности, а дугами графа описываются пространственные отношения между элементами; для сравнения графов применяются методы теории графов. · Признаковый метод Согласно этому методу изображение распознаваемого символа представляется как объект в n-мерном пространстве признаков; в качестве признаков может, например, служить скругленный левый верхний угол символа (а, б, е, з, о, с, ф, э, я) или наличие двух вертикальных отрезков во всю высоту буквы (и, й, л, м, н, п, ц, ш, щ, ы); полученный nмерный вектор сравнивается с эталонными и подбирается наиболее близкий из них. Каждый метод имеет свои достоинства и недостатки. Так, шаблонные методы устойчивы к дефектам изображения и быстро работают, но применимы только к известным шрифтам. Поэтому хорошее программное обеспечение для повышения надежности распознавания всегда использует сочетание нескольких методов. Наиболее известная в России программа FineReader совмещает в себе шаблонный и структурный подходы. Другая, считающаяся более интеллектуальной, система CuneiForm также использует несколько методов. Ее дополнительной особенностью является возможность самообучения, которая применяется при распознавании “нечетких” текстов. Система, произведя первичную обработку изображения, выделяет наиболее надежно распознанные буквы и формирует для них шаблоны, с помощью которых производится повторное распознавание текста. Авторы утверждают, что подобный подход позволяет повысить точность распознавания текста в несколько раз. Программа CuneiForm имеет также ряд других интересных особенностей. В частности, она умеет, используя интеллектуальный алгоритм, автоматически подбирать оптимальный уровень яркости сканера и использует систему орфографического и синтаксического контроля (в том числе словарь) для проверки правильности распознавания символов. Следующий вид программного обеспечения, о котором надо кратко рассказать, отвечая на вопрос, — это издательские системы. Строго говоря, обычный текстовый редактор и издательская система являются родственными программными продуктами и отличаются лишь полнотой своих возможностей. Обычно под текстовыми редакторами принято понимать программы, выполняющие наиболее простые операции над текстами (типа Блокнота в Windows). Если редактор имеет расширенные возможности, это обстоятельство часто подчеркивают, называя его текстовым процессором. Наиболее популярны у пользователей такие мощные текстовые процессоры, как MS Word, Open Office Writer и Word Perfect; среди авторов научных статей большим уважением пользуется система TEX, разработанная, между прочим, известным ученым Д.Кнутом. Наконец, ПО для профессионального издания газет, журналов и книг вполне естественно именуется издательскими системами (Aldus PageMaker, Adobe PageMaker, Corel Ventura Publisher). Отметим, что четкой границы между названными видами программных продуктов нет. Добавим, что программисты сейчас пользуются специализированными редакторами, которые способны учитывать особенности программного текста (прекрасным образцом служит редактор, который используется в современной системе программирования DOT NET). Профессиональные издательские системы позволяют осуществлять подготовку к массовому тиражированию любых печатных материалов, легко изменяя их взаимное расположение и оформление (специалисты используют термины “верстка” и “макетирование”). Чтобы некоторым образом представить специфику профессиональной работы с текстами, приведем пример: печатники предъявляют повышенные требования к размещению текста в пределах строк, что корректируется незначительным изменением плотности символов в отдельных словах, и строк на странице (в частности, ни в коем случае недопустим отрыв одной строки от абзаца). Издательские системы — это весьма дорогие коммерческие профессиональные продукты, так что их отсутствие в компьютерном классе школы не должно вас смущать. Кроме того, еще раз подчеркнем, что развитый текстовый процессор в принципе способен выполнить большую часть подобных операций, так что знакомства с этой категорией программного обеспечения для непрофессионала вполне достаточно. Перейдем к гипертекстовому представлению информации. Вопрос несложный и многократно описанный, поэтому рассмотрим его кратко. Исторически первые системы гиперссылок использовались еще в книгах, особенно энциклопедиях и справочниках: понятия, пояснения к которым можно найти в данной книге, выделялись, например, курсивом. В компьютерных текстах наличие гиперсвязей позволяет непосредственно переходить на экране от одного документа к другому или, в частном случае, от одной части документа к другой. Строго говоря, гиперсвязи возможны не только между текстами: в современных мультимедийных документах можно, например, дать ссылку на графику, звуковые файлы и даже программы. Механизм реализации гиперссылки поясняется на рис. 2. Рис. 2 В исходном документе место ссылки как-то выделяется: цветом, подчеркиванием, рисунком, рамкой и т.п. Внутри электронного документа в некотором внутреннем формате хранятся связанные с этой ссылкой данные о расположении той информации, на которую надо по этой ссылке перейти, т.е. ссылка на другой (в частности, может быть, и тот же самый) документ и некоторую внутреннюю “невидимую” на странице метку, определяющую положение необходимого фрагмента данных. В web-страницах в качестве ссылок используется универсальный идентификатор ресурса (адрес) в Сети, который принято называть URL; он может при необходимости дополняться меткой. Важно сказать, что URL имеют не только текстовые, но и графические, звуковые, мультимедийные и прочие ресурсы, что и позволяет ссылаться не только на тексты. Особо подчеркнем, что хотя гиперссылки получили свое активнейшее применение именно в документах Всемирной паутины, Интернет — не единственное место их использования. В частности, уже начиная с MS-DOS, существовали так называемые “файлы электронных справок”, где также применялся механизм гиперссылок. Позднее в самых первых версиях Windows была разработана универсальная система гипертекстовой помощи, которая была весьма мощной3 и удобной. По нашему мнению, данная единая для всех программ гипертекстовая система помощи была весьма удачной, так что ее вытеснение документами стиля HTML, скорее, уступка неквалифицированным пользователям, чем свидетельство их превосходства. Следующий вопрос — шаблоны текстов. Пользователям часто приходится оформлять однотипные текстовые документы (отчеты, деловые письма, календари). Внутри каждого типа документов много общего: содержатся одинаковые характерные фрагменты текста и рисунки, используется сходный стиль оформления, для их подготовки требуется специфическая комплектация панели инструментов. Текстовые процессоры типа MS Word позволяют упростить подготовку такого рода документов путем сохранения специальной заготовки — шаблона. Шаблон — это служебный файл4, который содержит всевозможную информацию о структуре и оформлении документов данного типа. Набор типовых шаблонов подготовлен и включен в состав инсталляции редактора. Для документов общего типа предусмотрен стандартный шаблон (NORMAL.DOT). Разумеется, пользователь может создать и сохранить собственный шаблон. Примечание. Наличие общего файла шаблонов NORMAL.DOT создает предпосылку для распространения особого вида вирусов — макровирусов. Попадая в шаблон, они распространяются во все набираемые с его помощью тексты. Важной особенностью автоматизации процесса оформления документа служат стили оформления, которые являются составной частью шаблона. В стилях запоминаются все особенности оформления данного типа фрагментов текста, такие, как название и размер шрифта, выравнивание и т.п. В результате, создав в своем документе стиль, например, для цитат, вы можете легко применять его к любой только что набранной цитате — новая цитата немедленно станет выглядеть, как все предыдущие. Более того, достаточно внести изменения в стиль, и абсолютно все цитаты, где бы они в тексте не располагались, немедленно приобретут скорректированный вид. Большое значение при оформлении документов имеют стили для многоуровневых заголовков, уже имеющиеся в стандартном шаблоне, но допускающие свое изменение. Именно благодаря им редактор способен впоследствии легко сформировать оглавление текста. Следует подчеркнуть, что на практике при оформлении текстов использование стилей позволяет очень существенно облегчить работу по сравнению с “ручным” оформлением каждого фрагмента, особенно если оформление текста по тем или иным причинам может часто изменяться. Почти все современные редакторы обладают системами проверки орфографии и грамматики. Несмотря на заметную помощь, которую они оказывают, следует понимать, что механизм проверки вовсе не гарантирует стопроцентной фиксации ошибок. Смысл орфографической проверки заключается в том, что каждое введенное слово ищется в стандартном словаре правописания, представляющем собой файл5 с полным списком слов используемого языка. Очевидно, что проверка происходит чисто механическим образом, так что если слово формально имеется в словаре, то считается, что ошибки нет. Поэтому с точки зрения программы фраза “он держал в реке зажженную свечу” (правильно “в руке”), несмотря на явную опечатку, не вызывает ни малейших подозрений. Еще более слаб грамматический контроль, рекомендации которого могут быть откровенно неправильными. Например, в предложении “В общем вагоне билет стоит гораздо дешевле” редактор уверенно предлагает после “в общем” поставить запятую. Пользователь имеет возможность занести в словарь новые слова. Кроме того, часто предусмотрена еще одна дополнительная возможность — словарь синонимов, т.е. слов с одинаковым значением. В Microsoft Office он называется тезаурус (thesaurus). Примечание. Здесь имеет место существенная нечеткость в терминологии. Термин тезаурус в информатике имеет несколько близких по смыслу значений: полный словарь языка, словарный запас человека; свод терминов и понятий в какой-либо области со связями между ними, т.е., по сути дела, модель знаний по выбранной тематике. Если вы помните, в билете № 3 мы уже встречались с данным термином в значении совокупности знаний приемника информации по теме принимаемого сообщения. Тезаурус — не просто теоретическое определение, но он активно используется на практике, например, при обработке запросов. Очевидно, что определение в Microsoft Office тезауруса как словаря синонимов весьма неудачно, тем более что тезаурус в общепринятом смысле там тоже есть (тот самый словарь, по которому проверяется правописание). Все это лишний раз свидетельствует о том, что изучение науки информатики через посредство офисных технологий напоминает попытку овладеть медицинскими знаниями, читая инструкции к купленным в аптеке лекарствам. И еще одно замечание. Видимо, совершенно случайно формулировка билета оказывается аналогом известной фразы “казнить нельзя помиловать”, трактовка которой зависит от положения запятой 6. В нашем билете трактовка предложения “Тезаурус.” также существенно зависит от того, к какой части вопроса мы его отнесем. Так, если связать его с предыдущей фразой о проверке орфографии, то получится, что надо рассказывать о словаре синонимов; подозреваю, что тот, кто написал билет, так и предполагал. Но, с другой стороны, тезаурус можно отнести к следующему предложению, об электронных словарях. И такое сочетание тоже имеет смысл в информатике, даже гораздо более глубокий, чем предыдущее. Тезаурус — это тоже словарь, “одноязыкий” и, может быть, даже идеографический, т.е. такой, в котором слова упорядочены не по алфавиту, а по смыслу… Выводы делайте сами. Нам остается рассмотреть электронные словари и системы автоматического перевода. Приложения первого типа реализуются весьма элементарно, но они получили широкое распространение за то, что поиск в них несравненно удобнее поиска в толстых многостраничных словарях. Имеются даже небольшие специализированные карманные электронные устройства, реализующие многоязыкие словари с возможностью звуковой демонстрации произношения. С точки зрения информатики организация электронного словаря есть абсолютно стандартная задача. Введенное слово или словосочетание ищется в списке и в случае совпадения по имеющимся ссылкам выводится вся связанная информация. При очень больших словарях возникает дополнительная подзадача оптимизации поиска, но для многих “бытовых” потребностей достаточно лишь простейших приемов сокращения поиска. Несравненно более сложной задачей оказывается компьютерный перевод с одного языка на другой. В первый момент кажется, что, имея хороший словарь, перевести текст не составит труда. Думаю, большинство читателей понимают, почему это первое впечатление в корне ошибочно. Главной трудностью является многозначность человеческого языка. Так называемая “игра слов”, когда одни и те же слова обозначают абсолютно разные вещи, часто встречается в жизни. Вот, например, цитата из известной сказки Л.Кэрролла “В Зазеркалье”: “Откуда берется хлеб? Отвечай! — Это я знаю, он печется… — Печется? О ком это он печется? — Не о ком, а из чего… Берешь зерно, мелешь его… — Не зерно ты мелешь, а чепуху!” Причем одинаковые слова могут весьма неожиданным образом даже обозначать разные части речи, например, слово “пила” в зависимости от контекста может быть как существительным (инструмент), так и глаголом женского рода прошедшего времени (от слова “пить”). Кстати, понятно теперь, почему во всех машинных языках предъявляются такие жесткие требования к уникальности идентификаторов? Трудности могут возникать не только из-за многозначности перевода отдельных слов, но и из-за грамматической неоднозначности переводимого текста. Возьмем, например, короткое и простое с виду английское предложение “The time flies like arrow”, т.е. “Время летит, как стрела”. По данным английских лингвистов, данная фраза допускает не менее четырех(!) различных синтаксических интерпретаций. В связи с этим одним из вариантов ее возможного “механического” перевода будет, в частности, “Временным мухам нравятся стрелы”. И не надо смеяться над новым видом насекомых, который возник в результате перевода: не каждый человек знает породы мух7, стоит ли требовать это от машины-“филолога”? Самое поразительное, что с точки зрения всех правил языка данный дословный перевод формально абсолютно правильный. Не вдаваясь в подробности, для примера скажем, что слово flies является как одной из грамматических форм глагола “лететь”, так и множественным числом для существительного “муха”. Аналогичная неоднозначность существует и для других слов, входящих в предложение, в результате чего и порождается информация о необычных мухах со странными вкусами. Человеку подобное просто не приходит в голову благодаря жизненному опыту; к сожалению, компьютер лишен этого необычайно ценного и плохо формализуемого внутреннего критерия. Как говорил Марвин Минский, крупный специалист по машинному представлению знаний, “трудность состоит в том, что здравый смысл основан на знании тысяч вещей о тысячах различных свойств вещей”. Примечание. Если пример понравился, попробуйте найти несколько вариантов трактовки русской фразы “юноша встретил девушку на поляне с цветами”. Работы по машинному переводу начались давно, почти сразу после появления первых вычислительных машин. Так, в 1949 году знаменитый американский математик Уоррен Уивер представил документ, предлагавший ни много ни мало “решение мировой проблемы перевода”. Идея была проста и наглядна: он предлагал создать некоторый промежуточный “машинезийский” язык и все тексты, используя словари, сначала переводить на него; затем оставалось взять другой словарь, с его помощью перевести слова и расставить их в соответствии с правилами грамматики выходного языка. Учитывая большие успехи проекта “Колосс”, благодаря которому в Великобритании в годы Второй мировой войны группа математиков успешно расшифровала секретные коды, идея автоматического перевода выглядела тогда вполне правдоподобно — как расшифровка текста, записанного непонятными значками чужого языка. Идея автоматического перевода очень понравилась Министерству обороны США, которое рассчитывало получить способ легкого и быстрого изучения русских технических изданий. В результате исследования получили весьма щедрое финансирование и интенсивно стартовали. Не менее активно готовили симметричный ответ и советские ученые, мечтавшие обеспечить быстрый и точный перевод американских источников информации. По мере продвижения работ энтузиазм все больше и больше угасал, и к середине 60-х годов финансирование работ в области машинного перевода в основном прекратилось. Стало ясно, что для перевода с языка на язык недостаточно знать значения отдельных слов и правила грамматики. Чтобы научиться переводить с одного языка на другой, машина должна понимать язык, т.е. как-то оценивать информационный контекст. Передовые исследования переключились на другую проблему. К сожалению, несмотря на огромные потраченные усилия и значительный рост технических возможностей компьютеров, существенного прорыва в этой области искусственного интеллекта до сих пор не наступило — лингвистические программы пока не приблизились по уровню к среднему ребенку дошкольного возраста. Тем не менее в настоящий момент вопросы компьютерной обработки и машинного структурирования знаний развиваются весьма бурно. Литература 1. Шафрин Ю.А. Информационные технологии (в 2 ч.). Ч. 2. М.: Лаборатория Базовых Знаний, 2000, 336 с. 2. Кушниренко А.Г., Лебедев Г.В., Зайдельман Я.Н. Информатика. 7–9-е классы: Учебник для общеобразовательных учебных заведений. М.: Дрофа, 2000, 336 с. 3. Угринович Н.Д. Информатика и информационные технологии. Учебное пособие для 10– 11-х классов. Углубленный курс. М.: Лаборатория Базовых Знаний, 2000, 440 с. 4. Ясницкий Л.Н. Введение в искусственный интеллект. Пермь: Пермский университет, 2001, 143 с. 5. Компьютер обретает разум. М.: Мир, 1990, 240 с. 6. Перегудов В.М., Халамайзер А.Я. Бок о бок с компьютером. М.: Высшая школа, 1987, 192 с. Еще бы, кто посмеет “юзеру” рассказывать о массиве из двух столбцов, пусть даже применяя слово “таблица”? 1 2 Об особенностях растровой и векторной графики см. билет № 19. Например, в системе помощи, если ссылка подчеркнута двумя чертами, то новая страница не замещает старую, а открывается в отдельном окне; имеется универсальная встроенная система навигации и поиска, причем последний возможен как по теме и ключевым словам, так и по любому произвольному слову в тексте; возможно объединение нескольких справочных файлов под общим содержанием. 3 4 В MS Word файлы шаблонов имеют расширение DOT. 5 В MS Word — MSSP3RU.LEX и MSSP3EN.LEX. Любопытно, что синтаксический анализатор MS Word гуманно рекомендует поставить запятую после слова “нельзя”! 6 7 В частности, по-английски слепни — это horse-flies, т.е. дословно “лошадиные мухи”. 2. С помощью электронной таблицы вычислить прибыль по вкладу при заданной доходности (сложные проценты). Пример. Человек положил деньги в банк под n процентов годовых. Проценты начисляются ежеквартально и зачисляются на счет. С помощью электронных таблиц рассчитать, какое количество денег получит человек через два года. Решение. Спланируем расчетную форму. Сумму денег, которая помещается первоначально на счет, и начисляемые проценты занесем в отдельные ячейки. При необходимости они могут быть изменены, и результат будет пересчитан. На рисунке представлены результаты расчетов для некоторого набора данных. Ниже — тот же фрагмент таблицы в режиме отображения формул. 3. Для заданного логического выражения определить множества значений переменных, при которых выражение истинно или ложно. (Выражение содержит не менее трех логических переменных.) Пример. Для логического выражения переменных А, В, С, при которых выражение истинно. определить все наборы значений Решение. Для получения ответа достаточно составить таблицу истинности данного выражения. В таблице выделены ячейки, отвечающие условию задачи. Задания Для логического выражения определить все наборы значений переменных А, В, С, при которых выражение ложно. Билет № 22 1. Динамические (электронные) таблицы. Назначение и принципы работы электронных таблиц. Использование электронных таблиц для обработки числовых данных (на примере задач из различных предметных областей). Основные способы представления зависимостей между данными. Современные технологии обработки информации часто приводят к тому, что возникает необходимость представления данных в виде таблиц. В языках программирования для такого представления служат массивы. Для табличных расчетов характерны относительно простые формулы, по которым производятся вычисления, и большие объемы исходных данных. Такого рода расчеты принято относить к разряду рутинных работ, для их выполнения следует использовать компьютер. Для этих целей созданы электронные таблицы (табличные процессоры) — прикладное программное обеспечение общего назначения, предназначенное для обработки различных (чаще всего числовых) данных, представимых в табличной форме. Электронная таблица (ЭТ) позволяет хранить в табличной форме большое количество исходных данных, результатов, а также связей (алгебраических или логических соотношений) между ними. При изменении исходных данных все результаты автоматически пересчитываются и заносятся в таблицу. Электронные таблицы не только автоматизируют расчеты, но и являются эффективным средством моделирования различных вариантов и ситуаций. Меняя значения исходных данных, можно следить за изменением получаемых результатов и из множества вариантов решения задачи выбрать наиболее приемлемый. При работе с табличными процессорами создаются документы, которые также называют электронными таблицами. Такие таблицы можно просматривать, изменять, записывать на носители внешней памяти для хранения, распечатывать на принтере. Рабочим полем табличного процессора является экран дисплея, на котором электронная таблица представляется в виде прямоугольника, разделенного на строки и столбцы. Строки нумеруются сверху вниз. Столбцы обозначаются слева направо. На экране виден не весь документ, а только его часть. Документ в полном объеме хранится в оперативной памяти, а экран можно считать окном, через которое пользователь имеет возможность просматривать таблицу. Для работы с таблицей используется табличный курсор — выделенный прямоугольник, который можно поместить в ту или иную клетку. Минимальным элементом электронной таблицы, над которым можно выполнять те или иные операции, является такая клетка, которую чаще называют ячейкой. Каждая ячейка имеет уникальное имя (идентификатор), которое составляется из номеров столбца и строки, на пересечении которых располагается ячейка. Нумерация столбцов обычно осуществляется с помощью латинских букв (поскольку их всего 26, а столбцов значительно больше, то далее идет такая нумерация — AA, AB, ..., AZ, BA, BB, BC, ...), а строк — с помощью десятичных чисел, начиная с единицы. Таким образом, возможны имена (или адреса) ячеек B2, C265, AD11 и т.д. Следующий объект в таблице — диапазон ячеек. Его можно выделить из подряд идущих ячеек в строке, столбце или прямоугольнике. При задании диапазона указывают его начальную и конечную ячейки, в прямоугольном диапазоне — ячейки левого верхнего и правого нижнего углов. Наибольший диапазон представляет вся таблица, наименьший — ячейка. Примеры диапазонов — A1:A100; B12:AZ12; B2:K40. Если диапазон содержит числовые величины, то они могут быть просуммированы, вычислено среднее значение, найдено минимальное или максимальное значение и т.д. Иногда электронная таблица может быть составной частью листа, листы, в свою очередь, объединяются в книгу (такая организация используется в Microsoft Excel). Ячейки в электронных таблицах могут содержать числа (целые и действительные), символьные и строковые величины, логические величины, формулы (алгебраические, логические, содержащие условие). В формулах при обращении к ячейкам используется два способа адресации — абсолютная и относительная адресации. При использовании относительной адресации копирование, перемещение формулы, вставка или удаление строки (столбца) с изменением местоположения формулы приводят к перестраиванию формулы относительно ее нового местоположения. В силу этого сохраняется правильность расчетов при любых указанных выше действиях над ячейками с формулами. В некоторых же случаях необходимо, чтобы при изменении местоположения формулы адрес ячейки (или ячеек), используемой в формуле, не изменялся. В таких случаях используется абсолютная адресация. В приведенных выше примерах адресов ячеек и диапазонов ячеек адресация является относительной. Примеры абсолютной адресации (в Microsoft Excel): $A$10; $B$5:$D$12; $M10; K$12 (в предпоследнем примере фиксирован только столбец, а строка может изменяться, в последнем — фиксирована строка, столбец может изменяться). Можно выделить следующие режимы работы табличного процессора: · формирование электронной таблицы; · управление вычислениями; · режим отображения формул; · графический режим; · работа электронной таблицы как базы данных. Режим формирования электронных таблиц предполагает заполнение и редактирование документа. При этом используются команды, изменяющие содержимое клеток (очистить, редактировать, копировать), и команды, изменяющие структуру таблицы (удалить, вставить, переместить). Режим управления вычислениями. Все вычисления начинаются с ячейки, расположенной на пересечении первой строки и первого столбца электронной таблицы. Вычисления проводятся в естественном порядке, т.е. если в очередной ячейке находится формула, включающая адрес еще не вычисленной ячейки, то вычисления по этой формуле откладываются до тех пор, пока значение в ячейке, от которого зависит формула, не будет определено. При каждом вводе нового значения в ячейку документ пересчитывается заново — выполняется автоматический пересчет. В большинстве табличных процессоров существует возможность установки ручного пересчета, т.е. таблица пересчитывается заново только при подаче специальной команды. Режим отображения формул задает индикацию содержимого клеток на экране. Обычно этот режим выключен, и на экране отображаются значения, вычисленные на основании содержимого клеток. Графический режим дает возможность отображать числовую информацию в графическом виде: диаграммы и графики. Это позволяет считать электронные таблицы полезным инструментом автоматизации инженерной, административной и научной деятельности. В современных табличных процессорах, например в Microsoft Excel, в качестве базы данных можно использовать список (набор строк таблицы, содержащий связанные данные). При выполнении обычных операций с данными, например, при поиске, сортировке или обработке данных, списки автоматически распознаются как базы данных. Перечисленные ниже элементы списков учитываются при организации данных: · столбцы списков становятся полями базы данных; · заголовки столбцов становятся именами полей базы данных; · каждая строка списка преобразуется в запись данных. Рассмотрим примеры обработки данных с использованием табличного процессора. Пример 1. (Информатика. Задачник-практикум в 2 т. / Под ред. И.Г. Семакина, Е.К. Хеннера: Т. 2. М.: Лаборатория Базовых Знаний, 1999, 280 с.) В пещере у реки поселился огнедышащий дракон. Всех, кто пытался его прогнать, он прогонял сам, полыхая на них огнем. Количество полыханий зависело от того, на кого надо полыхать. На царевича дракон полыхал 5 раз, на королевича — 4 раза, на простого рыцаря — 3. За первые сто лет дракона пытались прогнать 2 царевича, 3 королевича и 5 простых рыцарей. За второе столетие на него покушались 3 царевича, 2 королевича и 7 простых рыцарей. За третий век дракона беспокоили 7 царевичей, 5 королевичей и 6 простых рыцарей. За следующее столетие дракону пришлось иметь дело с 3 царевичами, 6 королевичами и 10 простыми рыцарями. После чего дракона в конце концов оставили в покое и объявили гору, на которой он жил, заповедником для охраны редких видов животных. Построить электронную таблицу, из которой будет видно: сколько человек пытались прогнать дракона за каждое из столетий в отдельности и за все 4 века вместе; сколько среди них было царевичей, сколько королевичей и сколько простых рыцарей; сколько раз дракону пришлось полыхать на них огнем в течение каждого века и за все 4 столетия вместе; сколько полыханий досталось царевичам, сколько королевичам и сколько простым рыцарям. Решение. Прежде всего необходимо продумать структуру таблицы и разместить в ней имеющуюся информацию. В приведенном ниже решении информация о царевичах, королевичах и рыцарях занесена в строки, а столбцы содержат сведения о сражениях по векам. Нижняя строка и последние два столбца содержат итоговую информацию согласно условию задачи. Информация о полыханиях, приходящихся на одного царевича, королевича, рыцаря, вынесена отдельно. Это связано с тем, что при изменении этих данных достаточно будет изменить их в указанных ячейках, не изменяя при этом всех формул. На рисунках приведен фрагмент таблицы с решением в режиме отображения формул и с результатами расчетов. Пример 2. Составить форму для решения равнобедренного треугольника по основанию и противолежащему ему углу (вычисления его боковых сторон, периметра, оставшихся углов, площади, высот). Решение. Разработаем форму, которая обрабатывает только корректные исходные данные, т.е. треугольник с такими данными должен существовать, заданные величины не могут быть отрицательными и т.д. В таблице достаточно зафиксировать верные расчетные формулы, и эта форма будет пригодна для любых вычислений с указанными исходными данными. Пусть основание равно c, заданный угол — С. Тогда углы A = B = (180 – C) / 2; боковые стороны (по теореме синусов) a = b = (c sin A) / sin C; периметр P = a + b + c; площадь S = 1/2 ab sin C; высоты ha = 2S / a; hb = 2S / b; hc = 2S / c. На рисунках приведен фрагмент таблицы с решением в режиме отображения формул и с результатами расчетов при c = 10, C = 60°. Табличный процессор позволяет представлять зависимость между величинами в виде графиков и диаграмм. Пример 3. Дана функция y = f(x) и отрезок [a, b]. Построить график этой функции на заданном отрезке, используя табличный процессор. Пусть f(x) = x*cos(x); a = –10; b = 10. Для решения задачи воспользуемся ЭТ MS Excel. Решение состоит из двух шагов: 1) протабулировать заданную функцию на заданном отрезке, т.е. вычислить ее значения с заданным шагом. Занесем начало и конец отрезка в отдельные ячейки, чтобы при необходимости можно было изменить начало и конец отрезка. В один из столбцов поместим значения аргумента, в другой — значения функции. Ниже приведено начало таблицы в режиме отображения формул. 2) Получив необходимые значения, переходим собственно к построению графика. Для этого воспользуемся мастером диаграмм. Из всех диаграмм наиболее подходящей представляется точечная. Ниже приведена серия рисунков, иллюстрирующих процесс (шаги) построения графика, и фрагмент таблицы, содержащей конечный результат. Литература 1. Гейн А.Г., Сенокосов А.И., Шолохович В.Ф. Информатика: 7–9-е классы. Учебник для общеобразовательных учебных заведений. М.: Дрофа, 1998, 240 с. (§ 4 “Организация вычислений с помощью ЭВМ”, с. 23–31.) 2. Каймин В.А., Щеголев А.Г., Ерохина Е.А., Федюшин Д.П. Основы информатики и вычислительной техники: Пробный учебник для 10–11-х классов средней школы. М.: Просвещение, 1989. 3. Кушниренко А.Г., Лебедев Г.В., Сворень Р.А. Основы информатики и вычислительной техники: Учебник для средних учебных заведений. М.: Просвещение, 1993. 4. Семакин И., Залогова Л., Русаков С., Шестакова Л. Информатика: учебник по базовому курсу. М.: Лаборатория Базовых Знаний, 1998. (Глава 8 “Табличные вычисления на компьютере”, с. 163–176.) 5. Угринович Н. Информатика и информационные технологии. Учебное пособие для общеобразовательных учреждений. М.: БИНОМ, 2001, 464 с. (Глава 12 “Технология обработки числовых данных в электронных таблицах”, с. 311–328.) 6. Информатика. 7–8-е классы / Под ред. Н.В. Макаровой. СПб.: ПитерКом, 1999, 368 с. (Раздел 6 “Прикладная среда — табличный процессор”, с. 238–303.) 7. Шафрин Ю.А. Информационные технологии. М.: Лаборатория Базовых Знаний, 1998, 704 с. 2. Написать и отладить программу обработки целочисленных данных. Пример. Написать и отладить программу вывода на экран всех простых чисел в диапазоне от 300 до 500. Решение. Решим задачу в общем виде: Написать и отладить программу вывода на экран всех простых чисел в диапазоне от a до b. QBasic DECLARE SUB Prime (N AS INTEGER, p AS INTEGER) DIM i AS INTEGER, p AS INTEGER PRINT "a, b? ": INPUT a, b FOR i = a TO b CALL Prime(i, p) IF p = 2 THEN PRINT i NEXT i SUB Prime (N AS INTEGER, p AS INTEGER) IF N > 1 THEN p = 2 ELSE p = 1 FOR i = 2 TO N / 2 + 1 IF N MOD i = 0 THEN p = p + 1 NEXT i END SUB Pascal Function Prime(n: integer):integer; Var i, p: integer; Begin If n > 1 then p := 2 else p := 1; For i := 2 to n div 2 + 1 do If n mod i = 0 then p := p + 1; Prime := p End; var a, b, i: integer; Begin Write('a, b? '); ReadLn(a, b); For i := a to b do If Prime(i) = 2 then write(i:6); Writeln End. C++ #include <iostream.h> int prime(int n); void main() {int a, b, i; cout << "a, b? "; cin >> a >> b; for (i = a; i <= b; i++) if (prime(i)==2) cout<< i << " "; } int prime(int n) { int i, p; if (n > 1) p = 2; else p = 1; for (i = 2; i < n/2 + 1; i++) if (n%i==0) p++; return p; } Отметим, что в приведенных выше программах поиск возможных делителей для простоты производился до половины данного числа. Эффективнее искать делители до корня квадратного из числа. Варианты заданий Решить задачу: 1. Среди всех n-значных чисел указать те, сумма цифр которых равна данному числу k. 2. Заданы три натуральных числа — A, B, C, которые обозначают число, месяц и год. Найти порядковый номер даты, начиная отсчет с начала года. 3. Найти наибольшую и наименьшую цифры в записи данного натурального числа. 4. Произведение n первых нечетных чисел равно p. Сколько сомножителей взято? Если введенное число n не является указанным произведением, сообщить об этом. 5. Найти на отрезке [n; m] натуральное число, имеющее наибольшее количество делителей. 3. По заданной таблице истинности записать и упростить логическое выражение. (Таблица задается для трех логических переменных.) Пример. Записать логическое выражение F, заданное таблицей истинности: Решение. При составлении логического выражения по заданной таблице истинности можно составить либо конъюнктивный многочлен (представляющий собой конъюнкции дизъюнктивных одночленов) — если значения формулы преимущественно равны 1; либо дизъюнктивный многочлен (представляющий собой дизъюнкции конъюнктивных одночленов) — если значения формулы преимущественно равны 0. Так как в заданной таблице значения логического выражения F по количеству 0 и 1 совпадают, то возможен выбор любого варианта действий. Построим дизъюнктивный многочлен. Для этого выбираем те строки, где значения выражения равны 1, и для каждой из них строим конъюнктивный одночлен, который будет истинным только для данной строки и ложным для всех остальных; построенные одночлены объединим с помощью дизъюнкции. В результате получаем: (знаки конъюнкции в выражении пропущены). Упростим выражение: Варианты заданий По заданной таблице истинности записать и упростить логическое выражение 1) 2) 3) 4) 5) Билет № 23 1. Математическая обработка статистических данных, результатов эксперимента. Использование динамических (электронных) таблиц для выполнения учебных заданий из различных предметных областей: обработка результатов естественно-научного и математического эксперимента, экономических и экологических наблюдений, социальных опросов, задач по учету и планированию, учета индивидуальных показателей учебной деятельности. В настоящее время все математические пакеты позволяют автоматизировать процесс обработки статистических данных, результатов эксперимента. Наиболее простым средством такого рода обработки является табличный процессор (электронная таблица). В MS Excel в наборе доступных функций (математических, логических и т.д.) в категории “Статистические” содержится несколько десятков функций, позволяющих проводить разного рода статистическую обработку. На рисунке справа представлена справка (а ее можно получить по любой функции), коротко описывающая, что такое дисперсия и каким образом ее можно оценить средствами Excel. Приведем несколько примеров статистической обработки данных. Пример 1. Предположим, что из инструментов, отштампованных одной и той же машиной, выбираются наугад 10 штук и испытываются на излом. Вычислим дисперсию для некоторой выборки (задана прилагаемая к инструментам сила). Функция ДИСП использует следующую формулу: . Для нашей выборки получаем результат 434,6778. Пример 2. Для выборки из примера 1 подсчитаем сумму квадратов отклонений от среднего значения. Воспользовавшись функцией КВАДРОТКЛ, получаем результат 3912,1. Пример 3. Установим, есть ли какая-либо взаимосвязь между двумя последовательностями данных. Для ответа на сформулированный вопрос необходимо вычислить коэффициент корреляции. Коэффициент корреляции используется для определения наличия взаимосвязи между двумя свойствами. Например, можно установить зависимость между средней температурой в помещении и использованием кондиционера. Для этих целей воспользуемся функцией КОРРЕЛ. Получаем для наших данных 0,598841746. 2. Написать и отладить программу обработки вещественных данных. Пример. Написать и отладить программу приближенного нахождения корня уравнения ex - 3x =0 на отрезке [1; 5] методом половинного деления с точностью 0,01. Решение. Решение задачи состоит из двух частей — отделение корня и уточнение корня. Отделение корня можно реализовать программно или с помощью вспомогательных программных средств (например, с помощью MS Excel). Рассмотрим второй вариант отделения корня (напомним, что на некотором отрезке существует корень, если функция на этом отрезке меняет знак; если она к тому же монотонна, то корень единственный). Протабулируем левую часть уравнения на заданном отрезке с шагом 0,1. Замечаем, что рассматриваемая функция на заданном отрезке [1; 5] меняет знак лишь единожды на отрезке [1,5; 1,6]. На этом отрезке и будем уточнять корень. QBasic DECLARE FUNCTION F! (x!) PRINT "Введите a, b, eps:" INPUT a, b, eps DO c = (a + b) / 2 IF F(a) * F(c) < 0 THEN b = c ELSE a = c LOOP UNTIL b — a < eps x = (a + b) / 2 PRINT USING "###.######"; x FUNCTION F (x) F = EXP(x) — 3 * x END FUNCTION Pascal program divide_half; var a,b,c,eps,x:real; function f(x:real):real; begin f := exp(x) - 3*x end; begin write('Введите a, b, eps: '); readln(a, b, eps); repeat c := (a + b)/2; if f(a) * f(c) < 0 then b := c else a := c until b – a < eps; x := (a + b)/2; writeln('x=', x:10:7) end. C++ #include <iostream.h> #include <math.h> double f(double x); void main() { double a,b,c,eps,x; cout << "Введите a, b, eps:"; cin >> a >> b >> eps; do { c = (a + b)/2; if (f(a) * f(c) < 0) b = c; else a = c; } while (b – a >= eps); x = (a + b)/2; cout << x; } double f(double x) { return exp(x) – 3 * x; } Задания На отрезке [–10; 10] (или на той его части, что входит в область определения уравнения) отделите корни. Уточните один из корней по методу половинного деления с точностью e с помощью программы для компьютера. Уравнения: 1) x – 10sinx = 0 Контроль 1-й корень [-8.43;-8.42] x = -8.42320393239788 2-й корень [-7.07;-7.06] x = -7.06817435807170 3-й корень [-2.86;-2.85] x = -2.85234189447510 4-й корень [-0.01; 0.00] x = 0.00000000002053 5-й корень [ 2.85; 2.86] x = 2.85234189443872 6-й корень [ 7.06; 7.07] x = 7.06817435810808 7-й корень [ 8.42; 8.43] x = 8.42320393235423 2) xsinx – 1 = 0 Контроль (для отрезка [–10; 10]) 1-й корень [-9.32;-9.31] x = -9.31724294142623 2-й корень [-6.44;-6.43] x = -6.43911723842757 3-й корень [-2.78;-2.77] x = -2.77260470826150 4-й корень [-1.12;-1.11] x = -1.11415714090799 5-й корень [ 1.11; 1.12] x = 1.11415714084615 6-й корень [ 2.77; 2.78] x = 2.77260470827241 7-й корень [ 6.43; 6.44] x = 6.43911723843485 8-й корень [ 9.31; 9.32] x = 9.31724294144078 3) 2x2 – 5 = 2x Контроль 1-й корень [-1.64;-1.63] x = -1.63137672535049 2-й корень [ 2.18; 2.19] x = 2.18478845171194 3-й корень [ 6.13; 6.14] x = 6.13493835514964 4) 4x4 – 6,2 = cos0,6x Контроль 1-й корень [-1.15;-1.14] x = -1.14899614950809 2-й корень [ 1.14; 1.15] x = 1.14899614952083 5) ln(x + 6,10 = 2sin(x – 1,4) Контроль 1-й корень [-5.93;-5.92] x = -5.92148540437483 2-й корень [-4.73;-4.72] x = -4.72227504245529 3-й корень [-2.45;-2.44] x = -2.44636594824988 6) 2-x = 1 – 0,5x2 Контроль 1-й корень [-2.69;-2.68] x = -2.68003383521864 2-й корень [ 4.46; 4.47] x = 4.46197840075183 7) 5sin2x = sgrt(1-x) Контроль 1-й корень [-18.32;-18.31] x = -18.31275351383374 2-й корень [-17.81;-17.80] x = -17.80359794106334 3-й корень [-15.24;-15.23] x = -15.23931500948675 4-й корень [-14.60;-14.59] x = -14.59236215599230 5-й корень [-12.17;-12.16] x = -12.16045625391416 6-й корень [-11.39;-11.38] x = -11.38599320170761 7-й корень [-9.09;-9.08] x = -9.08077073001186 8-й корень [-8.18;-8.17] x = -8.17946302043856 9-й корень [-6.01;-6.00] x = -6.00429034909757 10-й корень [-4.97;-4.96] x = -4.96761637068994 11-й корень [-2.94;-2.93] x = -2.93754330773299 12-й корень [-1.74;-1.73] x = -1.73949286292191 13-й корень [ 0.09; 0.10] x = 0.09567866423583 3. Построить таблицу истинности для заданной логической схемы (логическая схема должна содержать не менее трех входов). Пример Построить таблицу истинности для данной логической схемы: Решение Таблица истинности построена так. По заданной схеме записано соответствующее ей логическое выражение. Получаем (знак конъюнкции пропущен). Строим соответствующую ему таблицу истинности. Примечание. В действительности логические элементы обозначаются не так, как в приведенном примере; их обозначения приведены в билете № 9. В заданиях ниже используются именно такие обозначения. Задания Построить таблицу истинности для данных логических схем. Литература 1. Введение в информатику. Лабораторные работы. / Авт.-сост. А.П. Шестаков; Пермский университет. Пермь, 1999, ч. I, 56 с. Билет № 24 1. Основные понятия баз данных. Системы управления базами данных. Создание, ведение и использование баз данных при решении учебных и практических задач. Примеры баз данных: юридические, библиотечные, здравоохранения, налоговые, социальные, кадровые. Организация баз данных. Использование инструментов системы управления базами данных для формирования примера базы данных учащихся в школе. База данных (БД) предназначена для хранения больших объемов данных во внешней памяти вычислительной системы. Эта совокупность специальным образом организованных данных, отражающая состояние объектов в некоторой предметной области. Предметной областью может быть книжный фонд библиотеки, музейный фонд, кадровый состав предприятия, учебный процесс в школе. База данных составляет часть соответствующей информационной системы. Понятия “данные” и “модель данных” являются центральными для баз данных. Категория “данные” означает параметры, конкретные значения, которые определяют объект. Например, 1 байт, Иванов А.П. Данные не имеют определенной структуры. Логическую структуру хранимой в БД информации называют моделью представления информации. Это некоторая абстракция, которая отражает взаимосвязь данных. Рассмотрим основные модели данных. Иерархическая модель В реальном мире многие связи соответствуют некоторой иерархии, когда один объект выступает как родительский, а с ним связано множество подчиненных объектов. Связи между объектами описывают с помощью упорядоченного графа, дерева, которое упрощенно можно представить в следующем виде: Основными информационными единицами иерархической модели являются сегмент и поле. Поле — это минимальная неделимая единица данных, сегмент называется записью. В модели сегменты объединяются в ориентированный древовидный граф. Ребра графа отражают иерархические связи между сегментами. “Дерево” состоит из одного корневого сегмента и упорядоченного набора подчиненных сегментов. Возможен следующий пример организации данных типа “дерево”: Конкретный экземпляр записей в базе данных с приведенной схемой “дерево” может, например, выглядеть следующим образом: Сетевая модель С помощью сетевой модели можно отобразить взаимосвязи объектов в виде произвольного графа: Для описания сетевой базы данных используют понятия “запись” и “связь”. Связь определяется для двух записей: предка и потомка. В иерархической модели записьпотомок имела только одну запись-предок, в сетевой модели данных такого ограничения нет, запись-потомок может иметь произвольное число записей-предков. Пример схемы сетевой базы данных приведен на следующем рисунке, связи здесь обозначены надписями на соединяющих линиях. Сетевая БД состоит из набора записей и соответствующих связей. Реляционная модель Эта модель данных основана на понятии отношения. Наглядной формой отношения является двумерная таблица. С помощью таблицы можно описать простейший вид связей между данными: деление одного объекта на множество подобъектов, которым соответствуют строки таблицы. Строки таблицы имеют одинаковую структуру и называются записями. Записи содержат информацию об отдельном объекте — о классе в нашем примере. Записи состоят из полей. Поле — это определенное свойство, атрибут объекта: название класса, его профиль. Поле имеет определенный тип, который определяет множество значений и множество операций, выполняемых с данными. Основными типами данных, применяемыми в БД, являются числовой, символьный, логический и дата. Для каждой таблицы реляционной БД должен быть указан главный ключ. Им может быть имя одного и нескольких полей, однозначно определяющих запись. Значение этого поля не может повторяться в различных записях, оно уникально. Именно по этому полю можно отделить одну запись от другой. Название класса может послужить главным ключом таблицы Класс. В рамках одной таблицы нельзя описать сложные логические структуры данных из предметной области, поэтому применяют связывание таблиц. На основе модели данных строят базу данных. Далее рассмотрим реляционную БД как наиболее распространенную в настоящее время. Системы управления базами данных Системой управления базами данных (СУБД) называют комплекс языковых и программных средств создания, ведения и использования БД. Для персональных компьютеров используют реляционные БД, основанные на табличном представлении данных. СУБД позволяет пользователю выполнять следующие действия: · формировать структуру БД, редактировать ее; · вводить конкретную информацию, изменять ее; · манипулировать данными, находить информацию, отвечающую некоторым критериям; · сортировать данные. Приведем примеры БД. Правовые системы и базы данных предназначены для хранения и регулярного обновления сборников нормативных документов и подзаконных актов. Экономические реформы, проводимые в нашей стране, сопровождаются значительными изменениями законов и нормативных актов, инструкций. С этими документами работают не только юристы, но и руководители и специалисты должны постоянно иметь возможность просмотреть быстро меняющиеся требования, нормативы. В этом классе представлены отечественные информационно-правовые и справочные системы “Кодекс”, “Консультант Плюс”, “Гарант-Сервис”, “Кодекс”, “Консультант-Бухгалтер”. Система “Консультант Плюс” позволяет вести поиск документов по официальным реквизитам или отдельным словам, по тематическому рубрикатору, по ключевым словам. Компания “Гарант” имеет колоссальный информационный банк, охватывающий весь спектр российского законодательства и основные нормы международного права. Все документы представлены в действующей редакции, новая информация поступает ежедневно, еженедельно обновляется весь банк данных. Работа с БД производится в гипертекстовой среде с перекрестными ссылками и мощными поисковыми инструментами. Рассмотрим СУБД Microsoft Access как наиболее популярное приложение, используемое для обучения. Приложение Microsoft Access работает на отдельном компьютере или в небольшой локальной сети. С помощью СУБД, ориентированной на персональный компьютер, можно создать небольшую личную БД или БД для небольшой организации. Система MS Access позволяет, не прибегая к программированию, выполнять основные действия с данными, расположенными в таблицах. Программа имеет стандартный для продуктов Microsoft интерфейс. База данных приложения MS Access включает в свой состав таблицы, формы, запросы, отчеты, макросы и модули. Таблица — основная единица хранения данных в базе. Это понятие соответствует реляционной модели данных. Таблица состоит из записей и полей. Данные в таблице можно просматривать и модифицировать, сортировать и фильтровать, распечатывать. В базе создается совокупность связанных между собой таблиц. MS Access позволяет создавать связи типа “один к одному” и “один ко многим” с помощью схемы данных. Таблица — главный объект БД, остальные объекты являются производными от нее. Форма создается для удобного ввода, отображения и изменения данных в полях таблицы. Запрос позволяет выбрать данные из БД, удовлетворяющие некоторому условию, обновить, добавить, удалить данные. Запрос может выбрать данные из различных таблиц. Результат будет получен так же в табличном виде. Отчет предназначен для вывода на печать информации, сформированной из таблиц и запросов. Страницы публикуют БД в Web для использования ее в локальных сетях и Интернете. Пользователи работают на страницах, так же как в приложении: просматривают таблицы, выполняют запросы. Макрос задает автоматическое выполнение некоторых операций с помощью макрокоманд, например, “Печатать”, “НайтиЗапись”. Модуль состоит из процедур на языке VBA и автоматизирует некоторое действие, которое стандартными средствами приложения MS Access выполнить затруднительно. VBA (Visual Basic for Applications) — язык программирования высокого уровня для создания приложений Windows. Модули используют для решения более сложных задач, которые не под силу макросам. Построим пример базы данных учащихся в школе средствами СУБД MS Access. База данных учащихся должна являться частью общей базы данных информационной системы образовательного учреждения. Такая база данных содержит сведения об учащихся и их родителях, о сотрудниках, учебный план, электронные классные журналы, расписание уроков и факультативных занятий, распоряжения и отчеты, методические и образовательные ресурсы. Общая база данных является одним из компонентов информационной системы, который обеспечивает управление образовательным процессом, обучающимися, кадрами, ресурсами и предоставляет возможность интерактивной связи участникам этого процесса. Рассмотрим упрощенный вариант школьной базы данных, причем обратим внимание только на ту ее часть, которая относится к учащимся. Разработку БД начнем с проектирования. Так как MS Access использует реляционную модель данных, информацию расположим в трех следующих таблицах — Классы, Классный руководитель, Ученики: Так как мы рассматриваем небольшой пример, то естественно, что в таблицах отражена только небольшая часть реальной информации. Например, в таблице Ученики следовало бы внести не только фамилии учеников, но и имена, и другие личные данные. Эти три таблицы должны образовать единую систему, поэтому они взаимосвязаны: Здесь присутствуют два типа связи: “один к одному” и “один ко многим”. Таблицы Классы и Классный руководитель объединяет связь типа “один к одному”, она на рисунке обозначена одинарной стрелкой. При этом типе связи две таблицы можно было бы объединить в одну таблицу, так как одной записи в одной таблице соответствует одна запись в другой таблице. Информация разделена на две таблицы, так как одна таблица содержала бы слишком много полей и с ней было бы неудобно работать. Эти таблицы находятся на одном уровне иерархии. Таблицы Классы и Ученики объединяет связь типа “один ко многим”, она обозначена двойной стрелкой. Например, в одном классе обучается несколько учеников, но каждый ученик может обучаться только в одном классе. Поэтому одной записи в таблице Классы соответствует несколько записей в таблице Ученики. Это связь между соседними уровнями иерархической структуры. Приступим к созданию БД в приложении MS Access. После запуска программы и создания файла новой БД следует построить структуру таблиц и заполнить таблицы данными. Структуру таблиц можно задать с помощью Конструктора. На рисунке показано окно Конструктора при определении структуры таблиц Классы: Изображение ключа указывает на ключевое поле. Аналогично определим структуры таблиц Классный руководитель и Ученик: Обратим внимание на то, что в таблице Классный руководитель поле Наличие почетного_зван имеет логический тип. Заполним таблицы данными: На следующем этапе определим связи между таблицами, используя Схему данных: Здесь отражены два типа связи. Связь “один к одному” между таблицами Классы и Классный руководитель производится через общий главный ключ “Название класса”. Связь “один ко многим” между таблицами Классы и Ученик создана с помощью главного ключа “Название класса” таблицы Классы и одноименного поля таблицы Ученик. Программа MS Access, обеспечивая целостность данных, препятствует удалению и изменению связанных данных. Изменение ключевого поля в первичной таблице приведет к автоматическому изменению ключей в связанных записях. Удаление записей из первичной таблицы вызовет соответствующее удаление записей в связанной таблице. Для этого при создании связи следует установить флажки Каскадное обновление связанных данных и Каскадное удаление связанных данных. Для поиска информации в БД создают запросы. Запрос позволяет манипулировать данными БД: выбирать данные по некоторому условию, сортировать, обновлять, удалять и добавлять данные в БД. Простейшим является запрос на выборку. Результатом запроса на выборку будет таблица, которая содержит поля, удовлетворяющие условиям отбора. В нашем примере Запрос 1 позволяет получить список учеников с домашними адресами, которые обучаются в классе 1а. Создадим этот запрос в конструкторе, в качестве исходной таблицы укажем таблицу Ученик, в строке Условие отбора в поле Название класса зададим условие “1а”: Далее получим результат выборки в таблице: Второй запрос выводит фамилии классных руководителей, которые не имеют почетного звания. Он основан на таблице Классный руководитель. Поле Наличие почетного_зван имеет логический тип, поэтому в строку Условие отбора внесена константа Нет: Результат выборки: Запрос может быть многотабличным. Запрос 3 выводит поля Название класса, Профиль из таблицы Классы, и поле Фамилия из таблицы Классный руководитель, при этом поставлено условие, что класс имеет математический профиль. Ответ можно просмотреть в режиме таблицы: В заключение нашего примера приготовим отчет. Отчеты предназначены только для вывода информации на печать. Напечатаем фамилии учеников и их домашние адреса, основываясь на таблице Ученик. Выберем создание отчета с помощью мастера и, следуя его указаниям, получим следующий отчет: Литература 1. Семакин И.Г. Информатика. 11-й класс / И.Г. Семакин, Е.К. Хеннер. М.: БИНОМ. Лаборатория Знаний, 2002, 144 с. 2. Microsoft Office XP. Версия 2002. Шаг за шагом: Практическое пособие / Пер. с англ. М.: Издательство “ЭКОМ”, 2003, 720 с. 2. Записать с помощью микрофона читаемый вслух текст. Скомпоновать введенный звук с заданными звуковыми файлами с применением эффектов изменения скорости и наложения звука. Сохранить получившиеся файлы в различных звуковых форматах. Для записи звука с микрофона применяют программу Фонограф (Sound Recorder), которая позволяет записывать звуковые клипы, удалять фрагмент звукового файла, изменять скорость и громкость воспроизведения звука, смешивать несколько звуковых записей, добавлять эффект эха. Приступим к выполнению задания. Убедимся, что микрофон присоединен к компьютеру и готов к работе. Запустим программу командой Пуск/Все программы/Стандартные/Развлечения/Звукозапись. Откроется окно программы, которое имеет следующий интерфейс: Создадим новый файл командой Файл/Создать. Нажав кнопку Запись, прочитаем в микрофон текст и нажмем кнопку Стоп, чтобы прекратить запись. Далее скомпонуем речь с некоторым звуковым файлом. Выполним команду Правка/Смешать с файлом и в диалоговом окне укажем путь к нужному звуковому файлу. Применим эффект изменения скорости воспроизведения звука, подадим команду Эффекты/Увеличить скорость. По умолчанию программа сохраняет файл в формате wav. Требуется сохранить наш файл в различных форматах. Для этого следует подать команду Файл/Свойства. Откроется диалоговое окно Свойства объекта “Звук”: Выберем в меню Качество режим преобразования файла Форматы воспроизведения. Нажмем кнопку Преобразовать. На экран выходит диалоговое окно Выбор звука. Список Название содержит стандартные варианты оцифровки звука, выберем стандарт стереозвука CD Quality (Компакт-диск): Этот вариант, как и другие, имеет набор свойств записи, например, количество каналов воспроизведения, частоту оцифровки звукового сигнала. Эти свойства указаны в списке Атрибуты. Список Формат содержит перечень форматов, в которые можно преобразовать нашу запись. Оставим распространенный формат pcm. Нажмем кнопку ОК, что приведет к перекодировке файла. Остается только сохранить его в новом формате. Литература 1. Шалин П. Энциклопедия Windows XP. СПб.: Питер, 2002, 688 с. 3. Написать и отладить программу обработки символьных данных. Проанализировать полученный результат. Пример. Написать и отладить программу шифрования символьной строки, состоящей из букв латинского алфавита, по коду Цезаря (А и а заменяется на D и d соответственно, В и b — на E и e, C и с — на F и f, …, X и x — на А и а, Y и y — на B и b, Z и z — на C и c). Решение QBasic PRINT "Введите исходную строку: " INPUT s$ s1$ = "" FOR i = 1 TO LEN(s$) A$ = MID$(s$, i, 1) SELECT CASE A$ CASE "A" TO "W", "a" TO "w" s1$ = s1$ + CHR$(ASC(A$) + 3) CASE "X" TO "Z", "x" TO "z" s1$ = s1$ + CHR$(ASC(A$) — 23) CASE ELSE s1$ = s1$ + A$ END SELECT NEXT i s$ = s1$: PRINT s$ Pascal Program shifr; Var s: string; i: byte; Begin Write('Введите исходную строку: '); Readln(s); For i := 1 to length(s) do Case s[i] of 'A'..'W', 'a'..'w': s[i] := chr(ord(s[i]) + 3); 'X'..'Z', 'x'..'z': s[i] := chr(ord(s[i]) - 23); End; Writeln(s) End. C++ #include <iostream.h> void main() { char s[255]; int i; cout << "Введите исходную строку: "; cin.getline(s, 255); for (i = 0; s[i]!='\0'; i++) { if (s[i] >= 'A' && s[i] <= 'W' || s[i] >= 'a' && s[i] <= 'w') s[i] = s[i] + 3; else if (s[i] >= 'X' && s[i] <= 'Z' || s[i] >= 'x' && s[i] <= 'z') s[i] = s[i] - 23;} cout << s; } Варианты заданий Решить задачу: 1. Дана строка. Если она представляет собой запись целого числа, то вывести 1; если вещественного (с дробной частью), то вывести 2; если строку нельзя преобразовать в число, то вывести 0. 2. Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Вывести строку, содержащую эти же слова (разделенные одним пробелом), но расположенные в обратном порядке. 3. а) Дана строка-предложение. Зашифровать ее, поместив вначале все символы, расположенные на четных местах, а затем, в обратном порядке, все символы, расположенные на нечетных местах (например, строка “Программа” превратится в “ргамамроП”). б) Решить обратную задачу. 4. Дана строка-предложение на русском языке. Преобразовать строку так, чтобы каждое слово начиналось с заглавной буквы. 5. Дана строка. Получить новую строку, где каждый символ исходной строки заменен на код. Примечание. Если длина результирующей строки превышает 255, завести еще одну дополнительную строку. Билет № 25 1. Комплекс аппаратных и программных средств организации компьютерных сетей. Адресация в Интернете. Клиентсерверная архитектура. Основные сервисы Интернета: электронная почта, чат, телеконференции, форумы. Информационно-поисковые системы. Напомним, что данный билет является не единственным, связанным с темой “Компьютерные сети”. В частности, назначение и аппаратные средства компьютерных сетей подробно рассматривались в билете № 13, а билет № 21 затрагивал вопрос, связанный с гипертекстовой информацией. Поэтому в данной публикации представлен только материал, имеющий лишь самое непосредственное отношение к вопросу. Развитие сетевых компьютерных технологий является неотъемлемой частью современной информатики. Объединение компьютеров в сеть позволяет сделать общими и совместно использовать их ресурсы: аппаратные возможности, установленное программное обеспечение и хранящиеся данные. Кроме того, благодаря сетевой связи пользователи получают возможность обмениваться сообщениями в самых разнообразных формах. Для современных сетевых технологий характерна тенденция их “встраивания” внутрь программного обеспечения с целью унификации методов доступа к информации независимо от того, на каком из компьютеров эта информация фактически располагается. В частности, сетевые операционные системы предоставляют единый пользовательский интерфейс для сетевых и локальных дисков, а прикладное обеспечение, например браузер, не делает особого различия между ресурсами, находящимися на вашем собственном компьютере и в сети. Таким образом, при реализации обмена информацией, помимо аппаратного соединения компьютеров, большую роль приобретают программные средства. Учитывая, что в сеть могут объединяться машины самых разных типов с разнородным программным обеспечением, для них должны быть установлены единые правила взаимодействия: как и в какой последовательности передавать информацию, что делать, если сообщение прервалось, и т.д. Такие правила инженеры называют протоколами. Требования протоколов по смыслу аналогичны способам преодоления языковых проблем при общении людей: те, кто говорит на разных языках, едва ли поймут друг друга. Приведем несколько примеров сетевых протоколов. Широкое распространение получил набор протоколов TCP/IP (Transmission Control Protocol / Internet Protocol), который стал стандартом де-факто для передачи информации между компьютерами во всем мире. В основе концепции локального сетевого окружения Windows лежит протокол NetBIOS1, который позволяет получать доступ к общим ресурсам другого компьютера так же, как к своим собственным. В операционной системе Linux для доступа к Windows-ресурсам используется протокол Samba. Протоколы передачи по сети имеют несколько уровней. Эталонная модель взаимодействия открытых систем OSI (Open System Interconnection) определяет семь таких уровней. На практике используется несколько меньше, в частности, в упоминавшемся ранее TCP/IP их четыре. Сетевое программное обеспечение также имеет несколько уровней. Разумеется, все уровни передачи, лежащие ниже прикладного, функционируют автоматически (благодаря сетевой операционной системе и ее драйверам) и поэтому прозрачны для пользователя. Последнему кажется, что он просто работает со своей программой, например почтовой, которая непосредственно соединяется с аналогичной. Современный ПК предоставляет пользователям широкий набор сетевых сервисов (услуг). Термином services принято обозначать набор возможностей, доступных пользователю. Любой сервис опирается на специальный сетевой программный компонент, который в ОС Windows принято называть службой. Простейшие службы вроде доступа к файлам и сетевым принтерам встроены непосредственно внутри операционной системы и не требуют дополнительного ПО. Более сложные — такие, как, например, почтовая или служба удаленного доступа, реализуются в виде специализированного программного обеспечения. Причиной его создания служит непосредственное управление сетевым обменом со стороны человека (в самом деле, чтение почты и ответы на письма по своей сути для автоматизации не предназначаются). Для передачи информации от одного компьютера к другому необходимо иметь определенную систему их адресации. Подобно тому, как пересылка почтовых сообщений базируется на определенных общепринятых соглашениях об адресах людей, компьютеры для обеспечения правильной доставки информации также должны иметь какие-то средства идентификации [1, 2]. Каждая сетевая плата, предназначенная для подсоединения компьютера к информационной сети, имеет свой физический адрес (так называемый “MAC-адрес”). Он закладывается в аппаратуру при изготовлении, а специальные соглашения между производителями сетевого оборудования гарантируют уникальность номера каждой платы. Адрес принято записывать в виде последовательности из 6 шестнадцатеричных чисел2. При работе в сети Интернет используются 4-байтовые сетевые адреса, которые называются IP-адресами (IP — Internet Protocol). Протокол IP определяет глобальную систему адресации. Для установления соответствия между двумя названными независимыми адресами компьютер хранит специальную таблицу их соответствия, которая формируется автоматически. MAC-адрес жестко задан заводом-изготовителем, а IP-адрес выбирает сетевой администратор с учетом положения машины в сети Интернет. Если машину перемещают в другую часть сети, IP-адрес должен быть изменен. Четырехбайтовый IP-адрес записывается в виде четырех десятичных чисел, разделенных точками, например, 192.168.100.129. Очевидно, что входящие в адрес числа по определению не могут превышать 2553. IP-адрес состоит из двух частей: сетевой и машинной. Первая обозначает логическую сеть, к которой относится адрес; на ее основе принимаются решения по маршрутизации между сетями. Вторая определяет конкретную машину в сети. Разбиение на указанные части происходит по специальным правилам, которые мы рассматривать не будем. Скажем только, что для типичного IP-адреса номер машины определяется последним байтом. С целью более гибкого администрирования и обеспечения возможности создания подсетей, для разделения сетевой и машинной частей используется так называемая сетевая маска. Это специальный битовый набор, состоящий из серии единиц (их количество задается разрядностью сетевой части), за которой следуют нулевые биты. С образовательной точки зрения сетевая маска интересна тем, что позволяет с помощью логической операции И разделять IP-адрес на части. Нетрудно догадаться, что при выполнении указанной операции, например, с (шестнадцатеричной) константой FF FF FF FC будут сбрасываться два последних бита (см. билет № 8). Таким образом, машинная часть в данном случае будет состоять из двух бит, что позволит создать небольшую подсеть из 4 компьютеров. IP-адреса и маски могут назначаться как вручную, так и автоматически с использованием протокола DHCP (Dynamic Host Configuration Protocol). В последнем случае сервер способен “раздавать” обратившимся к нему компьютерам свободные IP-адреса в разрешенном диапазоне, автоматически при этом отслеживая освобождающиеся адреса. Хотя с технической точки зрения описанный выше механизм IP-адресации вполне достаточен для однозначного нахождения любого компьютера в сети, совершенно очевидно, что для человека он неудобен: запоминание числовых комбинаций не является сильной стороной среднестатистического пользователя. Поэтому параллельно с IPадресами в Интернете существует более подходящая для человеческого восприятия доменная система имен компьютеров (Domain Name System — DNS). Доменные имена образуются из символьных сочетаний, разделяющихся между собой точками. Принято называть самую правую запись доменом первого уровня, далее второго и т.д. уровней. Например, в имени openoffice.org доменом первого уровня является org, а второго — openoffice. Домены первого уровня стандартизированы. В самом первом (американском) стандарте их было семь: com — коммерческие организации, edu — учебные заведения, gov — правительственные организации, mil — военные учреждения, net — поставщики сетевых услуг, org — бесприбыльные организации, int — международные организации. Позднее, когда сети стали интернациональными, были дополнительно введены двухбуквенные домены стран (для нашей страны ru — от английского Russia). Встречаются и отдельные “нестандартные” доменные имена, например, eu — Европа. Наконец, в последнее время вводятся некоторые новые домены первого уровня, такие, как info, biz, и другие. Примечание для учеников. При ответе здесь уместно привести примеры имен сайтов, с которыми вы работали на уроках, и разобрать их. Преобразование доменных имен в IP-адреса и обратно осуществляется автоматически. Этим занимаются так называемые “серверы имен”, хранящие таблицы соответствия между двумя формами адресов. Далее согласно билету необходимо рассмотреть вопрос о клиент-серверной архитектуре. Клиент-серверная архитектура — это программная архитектура, в которой один тип программных компонентов (клиенты) с помощью сообщений просит другой тип программных компонентов (серверы) выполнить различные действия [3]. Такая технология обработки данных возникла как ответ на трудности в создании сложных информационных систем. Классический вариант клиент-серверных систем появился уже довольно давно, когда все расчеты крупной организации производил большой компьютер (так называемый “мейнфрейм”), к которому для получения результатов подключались маломощные вычислительные устройства (терминалы), разбросанные по разным производственным помещениям. Аналогичную структуру до сих пор имеют и многие централизованные системы обслуживания крупных баз данных: с недорогих ПК, которые являются клиентами, посылаются запросы на удаленный производительный сервер, возвращающий клиентам требуемые сведения (часто они не просто извлекаются из базы, но получаются в ходе достаточно сложной обработки и вычислений). Иногда на основании знакомства с этими типовыми реализациями делается неверный вывод о том, что характерной чертой клиент-серверной архитектуры является наличие соединенных сетью компьютеров с четко закрепленными функциями, среди которых машина-сервер имеет существенно лучшие характеристики. Как справедливо подчеркивает в своем учебнике [4] Ю.А. Шафрин, “не следует считать, что технология “клиент-сервер” неотделима от сети. Главное в этой технологии — модель обработки данных, разделение программного обеспечения на два компонента: приложение и сервер. Поэтому приложение и сервер БД могут находиться на одном компьютере (например, у вас дома) и не иметь никакого отношения к сети”. Для более полной картины стоит добавить, что технология не обязательно должна быть связана с СУБД; например, в роли клиента может выступать обычный текстовый редактор, а сервером служить программа проверки ошибок или табличный процессор. Так что же все-таки является наиболее характерными особенностями клиент-серверной архитектуры? В клиент-серверной системе функционируют как минимум два приложения, которые определенным образом делят свои функции. Хранением и непосредственным манипулированием данными занимается сервер (в случае БД — это Microsoft SQL Server, Oracle, Sybase или аналогичные им программные продукты). Формирование пользовательского интерфейса, выполнение межэкранной навигации, предоставление помощи осуществляет клиент. Логика обработки данных может выполняться как на сервере, так и на клиенте: обычно там, где эти данные сосредоточены, что позволяет уменьшить передаваемые объемы информации. Очевидно, что клиент и сервер должны иметь четкие правила взаимодействия в ходе обработки запросов, иначе описанное разделение потеряет смысл. Еще раз подчеркнем, что размещение клиента и сервера может быть произвольным: как на разных компьютерах, так и на одном. Более того, один и тот же компьютер часто может выступать и в роли клиента, и в роли сервера. Рассмотрим в качестве примера некоторую весьма правдоподобную ситуацию. В одном из офисов фирмы пользователь хочет получить сводный отчет о деятельности всех подразделений этой фирмы. Он формулирует запрос и с помощью программы-клиента отправляет его в центральный офис, компьютер которого, как совершенно понятно, в такой ситуации служит сервером. Тот принимает запрос и начинает его выполнять. Нетрудно себе представить ситуацию, когда для составления отчета серверу могут потребоваться некоторые показатели, которые хранятся на локальных ПК в других филиалах. И тогда происходит весьма интересная с точки зрения нашего обсуждения вещь: сервер отправляет запросы по всем офисам с требованием предоставить необходимую ему информацию. В результате он становится клиентом(!), а ПК офисов — серверами(!), автоматически отвечающими на запросы. Собрав необходимые данные, компьютер центрального офиса обрабатывает их и отправляет итоговые результаты на компьютер приславшего запрос пользователя, “вспомнив” о своей первоначальной роли сервера. Клиент так никогда и не узнает, какую большую работу пришлось выполнить, чтобы ответить на его запрос. Важной чертой рассматриваемой архитектуры является то, что клиенты и серверы обмениваются сообщениями не по адресам (как можно предположить), а по именам сервисов. Иначе говоря, обращение происходит не к конкретным машинам, а к сервисам с определенными именами. В итоге информационная система сама определяет ответственный за указанный сервис компьютер (это называется разрешением имен) и пересылает ему информацию [3]. Описанный механизм дает ряд важных преимуществ: расположение клиентского и серверного процессов произвольно (об этом мы уже неоднократно говорили); процессы эти не обязательно должны работать на однотипных аппаратных средствах или даже под управлением одинаковых ОС — единственным условием является возможность обмена сообщениями; наконец, система приобретает дополнительную гибкость при модификации оборудования, программного обеспечения и сервисов4. Примечание. Для демонстрации преимуществ технологии клиент-сервер ее часто сравнивают с другой — файл-серверной. Последняя представляет собой следующее. Файлы с данными хранятся на файловом сервере (например, Novell NetWare или Windows NT Server), а их обработка осуществляется на рабочих станциях, на которых, как правило, функционирует одна из так называемых “настольных СУБД” — MS Access, FoxPro, Paradox и т.п. При этом приложение на рабочей станции обеспечивает почти всё: пользовательский интерфейс, логическую обработку и непосредственное манипулирование данными. А мощный файловый сервер предоставляет услуги только самого низкого уровня — чтение или запись файлов. Но главный недостаток технологии заключается даже не в нерациональном использовании серверного оборудования, а в том, что данными манипулируют несколько независимых и несогласованных процессов; в итоге своими действиями они могут мешать друг другу и даже вызывать сбои. Никакие аппаратные и программные улучшения не помогают, ибо источник неприятности заложен в самом принципе построения системы. Немаловажно еще и то, что вносить изменения в такие системы гораздо сложнее, чем при клиент-серверной технологии, когда в основном модифицируется серверная часть: при файл-серверном подходе любое незначительное изменение бизнес-правил приводит к необходимости модификации приложения с последующим тиражированием по всем рабочим станциям. Итак, технология клиент-сервер — это магистральное направление современных разработок в области мощных информационных систем (особенно на крупных промышленных предприятиях, в банках, в сфере торговли и обслуживания). По такой схеме могут быть построены не только системы обработки данных на основе СУБД, но также почтовые приложения, ПО для удаленного доступа и другие. В качестве заключительного примера рассмотрим систему редактирования сайтов (http://editsite.ru), выполненную по клиент-серверной технологии. Программный продукт EDGESTILE SiteEdit — это интернет-комплекс, состоящий из клиентской off-line-программы (устанавливается на компьютере пользователя) и серверной части, расположенной на современных web-серверах с высокой скоростью доступа. Весь процесс проектирования и создания сайта происходит в режиме off-line, а подключение к Интернету требуется только на короткое время выгрузки изменений на web-сервер. Выгрузка файлов в Интернет максимально оптимизирована: файлы предварительно автоматически сжимаются, что существенно сказывается на снижении затрат на интернет-услуги. В случае обрыва соединения можно продолжить выгрузку с момента остановки. Предусмотрены возможности пересылки отдельных частей сайта или только последних изменений. Данное приложение показывает, что конкретное применение принципов разбиения ПО на клиентскую и серверную части может быть весьма разнообразным. Следуя экзаменационному вопросу, перейдем теперь к обсуждению основных сервисов Интернета. Согласно тексту билета, к ним относятся электронная почта, чат, телеконференции, форумы. Такой список сервисов является принципиально неполным, что видно из приводимой на с. 30 таблицы. Примечание. Из приведенной таблицы однозначно напрашивается еще один (весьма странный и удивительный) вывод: чем выше уровень изучения информатики в школе, тем почему-то большую роль среди сервисов Интернета играют чаты и форумы по сравнению с файловыми архивами и www. По мере объединения сетей в единое информационное пространство Интернет постепенно складывались различные сетевые службы. Первоначально они были изолированными и имели четко ограниченную сферу применения. С развитием Интернета стала все более отчетлива тенденция к объединению и унификации всех этих служб; основой такого объединения является “Всемирная паутина” — World Wide Web, или более коротко — WWW. Сервисы Интернета неоднократно описывались в методической литературе (см., например, [5–7]), поэтому ниже они будут рассмотрены очень кратко. Учитывая то внимание к Интернету, которое постоянно подчеркивается при обсуждении Национального проекта “Образование”, подразумевается, что на уроках ученики поработают с этими сервисами и поэтому им будет что рассказать. Документ Примерная программа основного общего образования по информатике и информационным технологиям Раздел О составе сервисов Интернета Коммуникационные технологии Информационные ресурсы и сервисы компьютерных сетей: Всемирная паутина, файловые архивы, интерактивное общение Примерная программа Средства и технологии среднего (полного) общего обмена информацией с образования по информатике помощью компьютерных и информационным сетей (сетевые технологии) технологиям, — 11-й класс базовый уровень Информационные сервисы сети Интернет: электронная почта, телеконференции, Всемирная паутина, файловые архивы и т.д. Примерная программа среднего (полного) общего образования по информатике и информационным технологиям, профильный уровень Представление о средствах телекоммуникационных технологий: электронная почта, чат, телеконференции, форумы, телемосты, интернет-телефония Телекоммуникационные технологии Примерные билеты по информатике для сдачи экзаменов по выбору выпускниками…, базовый уровень Билет № 25 Примерные билеты по информатике для сдачи экзаменов по выбору выпускниками…, профильный уровень Билет № 25 Представления о телекоммуникационных службах: электронная почта, чат, телеконференции, форумы, интернет-телефония Основные сервисы Интернета: электронная почта, чат, телеконференции, форумы Итак, к сервисам Интернета традиционно относятся следующие виды работ на компьютере. · Удаленный доступ (telnet) Удаленным доступом называется соединение вашего компьютера с другим компьютером сети и работа на нем как на своем собственном. Расстояние до удаленного компьютера принципиального значения не имеет: он может находиться в той же комнате, а может — в другом государстве противоположного полушария Земли. Такой способ реализации межкомпьютерного соединения часто называют удаленным терминалом. При удаленном доступе вы можете просматривать каталоги и файлы на другом компьютере, запускать и редактировать документы, словом, делать практически все то же самое, что вы обычно делаете на своем компьютере. Разумеется, для получения возможности работы на другом компьютере вы должны быть на нем зарегистрированы. Другой возможный вариант — общедоступные серверы, например, каталог библиотеки. Программное обеспечение для удаленного доступа называется telnet. Интересно отметить, что оно тоже построено на базе клиент-серверной технологии и состоит из двух взаимодействующих частей: клиента, выполняющегося на вашем компьютере, и сервера, работающего на том компьютере, с которым вы устанавливаете связь. · Передача файлов (FTP) Упомянутая выше программа telnet, несмотря на свои большие возможности, не позволяет копировать файлы с удаленного компьютера. Для этой цели имеется специальное ПО — ftp (от File Transfer Protocol — протокол переноса файлов). Работать с ftp можно в командном режиме, однако значительно удобнее воспользоваться какой-нибудь специальной программой с более дружественным интерфейсом. Например, для ftpдоступа к файлам можно применять широко известную программу Е.Рошала “Far Manager”. Одной из важнейших возможностей ftp является разрешение анонимного доступа к некоторым серверам, что позволяет получать файлы с них абсолютно всем желающим. Для того чтобы воспользоваться такой возможностью, необходимо ввести специальное имя anonymous. Чаще всего общедоступные файлы хранятся в каталоге /pub. На многочисленных ftp-серверах можно найти самые разнообразные архивы, начиная с программного обеспечения и кончая текстами художественных книг. Некоторое неудобство при таком использовании ftp составляет трудность ориентации в “чужих” каталогах без особых вспомогательных пояснений. · Электронная почта (E-mail) Этот вид сетевого сервиса на данный момент, по-видимому, является одним из наиболее доступных и распространенных. Мы не будем тратить время, в очередной раз описывая весьма очевидные возможности этого популярного сервиса, тем более что работа с почтовой программой входит в практические вопросы билетов № 4 и 6. Работа с этой программой по приему и отправке писем широко описана в литературе, например, в учебнике [8]. · Чат, instant messaging Англо-русский словарь дает следующие переводы слова chat: (существительное) “дружеский разговор, беседа, болтовня” и (глагол) “непринужденно болтать”. Перевод весьма точно характеризует суть данного вида интернет-общения, которое представляет собой обмен короткими текстовыми сообщениями. Сообщения можно посылать как всем сразу, так и конкретному участнику чата, с которым вы хотите пообщаться. Каждый участник чата при регистрации выбирает себе “ник” (псевдоним, прозвище, символическое имя) и именно под ним публикует все свои высказывания. Анонимность придает общению непринужденность, но, очень часто, безответственность и грубость по отношению к другим участникам дискуссии; использование данных коммуникационных средств обязательно требует воспитания культуры сетевого общения [9, 10]. Чат является одним из любимых интернет-сервисов молодежи. Наблюдения показывают, что существует значительная категория людей, которые не способны контролировать время своего пребывания в чате и могут часами обмениваться с подобными себе пустыми и абсолютно неинформативными сообщениями. Будучи по своей сути неформальным общением, чат может сформировать привычку изъясняться кратким сленгом, порой весьма далеким от общепринятого русского языка. Некоторой разновидностью чата (своеобразным его гибридом с электронной почтой) является обмен сообщениями через программу, которую называют instant messenger (примерный перевод термина может выглядеть как программа для мгновенного, немедленного обмена сообщениями). Техническое отличие от чата заключается в том, что беседа ведется не через стандартный браузер, в котором отображается формируемая сервером диалоговая страница, а с помощью специализированного ПО, устанавливаемого на компьютере. Наиболее известной программой такого рода является ICQ (aka5 Аська). Многие крупные сайты, такие, как Yahoo! и AOL, также предлагают свою реализацию такого сервиса. Помимо средства непринужденного времяпровождения, сервисы типа ICQ в последнее время иногда используют в службах технической поддержки и для получения оперативных консультаций, например, при покупке путевок или билетов через Интернет. · Телеконференции, форумы Телеконференция — это обмен электронными сообщениями по определенной тематике (в чате тематика, как правило, не определена). Любое сообщение, отправленное в ту или иную тему конференции, попадает всем, кто участвует в работе этой темы. Существует огромное количество телеконференций, посвященных самым разнообразным темам: образованию, искусству, программированию, бизнесу и т.д. Работа в режиме телеконференции выглядит так. Участник готовит свои сообщения по тем или иным темам, а затем соединяется с сервером конференции. Компьютер передает написанные сообщения (если они, конечно, есть) и принимает все новое, что появилось по интересующим абонента темам. Некоторой разновидностью телеконференции является форум. Это также способ тематического электронного общения, когда участники выражают свое мнение по какому-либо вопросу, обсуждают кино или новость, помогают друг другу в овладении каким-то программным продуктом или сервисом. Последнее применение (своеобразная “народная консультация”) может во многих случаях оказаться практически полезным. Имеются также некоторые свидетельства в пользу применения данного сервиса в образовании [11]. · WWW Наиболее распространенной службой Интернета в настоящее время является WWW. Она получила настолько широкое распространение, что начинает вмещать в себя все остальные перечисленные выше службы. Так, используя программное обеспечение для WWW, можно получать файлы по ftp, отправлять почту, участвовать в конференциях и т.д. Остается ответить на последний вопрос — информационно-поисковые системы. Поиск нужной информации в необозримом Интернете6 часто обсуждается в учебной литературе (в качестве примера укажем статью [12]), а после недавней публикации в газете подробных материалов А.А. Дуванова [13] авторы просто считают для себя неудобным снова возвращаться к этой теме. Литература 1. Гук М.Ю. Аппаратные средства локальных сетей. Энциклопедия. СПб.: Питер, 2004, 573 с. 2. Никифоров С.В. Введение в сетевые технологии: Элементы применения и администрирования сетей. М.: Финансы и статистика, 2003, 224 с. 3. Энсор Д., Стивенсон Й. Oracle. Проектирование баз данных. BHV, 1999, 560 с. 4. Шафрин Ю.А. Информационные технологии (в 2 ч.). Ч. 2. М.: Лаборатория Базовых Знаний, 2000, 336 с. 5. Кузьменко М.А. Основные сервисы Internet. Информатика и образование, 1996, № 3, с. 105–113. 6. Угринович Н.Д. Основы Интернета. Информатика и образование, 1999, № 9, с. 79–90. 7. Моисеева Н.Н. Компьютерные сети и телекоммуникации. Информатика и образование, 2006, № 4, с. 33–41. 8. Угринович Н. Информатика и информационные технологии. Учебное пособие для общеобразовательных учреждений. М.: БИНОМ, 2001, 464 с. 9. Ладыженская Н.В. Интернет: гуманитарные аспекты обучения общению. Информатика и образование, 2006, № 7, с. 9–11. 10. Калинин И.А. Социальные сервисы Интернета. Информатика, 2007, № 1, с. 11–19. 11. Андреев А.А. Методические аспекты использования форумов при проведении занятий в Интернете. Информатика и образование, 2006, № 4, с. 13–16. 12. Исаева О.В. Поиск информации в Интернете. Информатика и образование, 2000, № 6, с. 74–88. 13. Дуванов А.А. Поиск информации. Информатика, 2007, № 1, с. 20–30; № 3, с. 23–34; № 4, с. 26–33. 2. По заданному документу создать реляционную базу данных из трех таблиц, исключив при этом дублирование информации. Пример. В качестве примера рассмотрим задачу из [1, с. 111]. Заданная информация: В 1970 г. в СССР всего было произведено бумаги 4,2 млн. т. В 1970 г. в СССР на душу населения было произведено бумаги 17 кг. В 1970 г. в Австрии всего было произведено бумаги 0,9 млн. т. В 1989 г. в Австрии всего было произведено бумаги 2,3 млн. т. В 1980 г. в Бельгии на душу населения было произведено бумаги 81 кг. В 1970 г. в Болгарии всего было произведено бумаги 0,2 млн. т. В 1989 г. в СССР на душу населения было произведено бумаги 22 кг. В 1980 г. в Болгарии всего было произведено бумаги 0,3 млн. т. В 1970 г. в Австрии на душу населения было произведено бумаги 118 кг. В 1989 г. в Великобритании всего было произведено бумаги 3,6 млн. т. В 1980 г. в СССР всего было произведено бумаги 5,3 млн. т. В 1970 г. в Бельгии на душу населения было произведено бумаги 68 кг. В 1989 г. в Великобритании на душу населения было произведено бумаги 63 кг. В 1980 г. в Австрии всего было произведено бумаги 1,3 млн. т. В 1989 г. в Бельгии всего было произведено бумаги 1,1 млн. т. В 1980 г. в Болгарии на душу населения было произведено бумаги 36 кг. В 1970 г. в Великобритании всего было произведено бумаги 3,6 млн. т. В 1989 г. в СССР всего было произведено бумаги 6,3 млн. т. В 1970 г. в Великобритании на душу населения было произведено бумаги 65 кг. В 1980 г. в Бельгии всего было произведено бумаги 0,8 млн. т. В 1980 г. в Бельгии всего было произведено бумаги 0,8 млн. т. В 1970 г. в Болгарии на душу населения было произведено бумаги 24 кг. В 1980 г. в Великобритании всего было произведено бумаги 3,0 млн. т. В 1989 г. в Болгарии на душу населения было произведено бумаги 42 кг. В 1989 г. в Бельгии на душу населения было произведено бумаги 112 кг. В 1980 г. в СССР на душу населения было произведено бумаги 20 кг. В 1980 г. в Австрии на душу населения было произведено бумаги 176 кг. В 1970 г. в Бельгии всего было произведено бумаги 0,7 млн. т. В 1980 г. в Великобритании на душу населения было произведено бумаги 54 кг. В 1989 г. в Болгарии всего было произведено бумаги 0,4 млн. т. В 1980 г. в Бельгии всего было произведено бумаги 0,8 млн. т. По данным можно построить три таблицы: Государства (содержащую перечень государств из текста); Годы (перечень лет); Производство (информация по странам, годам и количеству производства бумаги в общем и на душу населения). В итоге приходим к следующей схеме данных Предоставляем читателю самостоятельно выполнить заполнение соответствующих таблиц. Другие задачи также можно найти в [1]. Литература 1. Задачник-практикум по информатике. Под ред. И.Семакина, Е.Хеннера. М.: Лаборатория Базовых Знаний, 1999. Часть 1, 204 с. 2. Семакин И.Г. Информационные системы и модели. Элективный курс: Учебное пособие / И.Г. Семакин, Е.К. Хеннер. М.: БИНОМ. Лаборатория Знаний, 2005, 303 с. 3. Семакин И.Г. Информационные системы и модели. Элективный курс: Практикум / И.Г. Семакин, Е.К. Хеннер. М.: БИНОМ. Лаборатория Знаний, 2006, 87 с. 3. Рассчитать объем звукового файла при заданной продолжительности звучания, частоте дискретизации и заданном формате файла. Пример. Рассчитать объем звукового файла продолжительностью звучания в 25 сек., если частота дискретизации составила 44,1 кГц, а для записи значения звукового давления используется 16 бит. Решение. 44,1 кГц реально составляет 44 032 Гц, которое делится нацело на 256 (см. билет № 20, вопрос 1). Поскольку в условии задачи не оговорено, какой создается звуковой файл, то будем считать, что он рассчитан на один канал (моно). Получаем: 44 032 Гц ґ 16 бит = 704 512 бит = 88 064 байта = 86 Кб (на 1 секунду) 25 сек. x 86 Кб = 2150 Кб 2,1 Мб Примечание. Если учащимся задается конкретный формат звукового файла, то необходимо приложением к задаче оформить краткую справочную таблицу по числовым характеристикам этого формата, т.к. не предполагается, что учащиеся должны эти характеристики заучивать. Литература Андреева Е.В. Математические основы информатики. Элективный курс: Учебное пособие / Е.В. Андреева, Л.Л. Босова, И.Н. Фалина. М.: БИНОМ. Лаборатория Знаний, 2005, 328 с.: ил.