рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Основы информатики

Основы информатики - раздел Информатика, Информатика А.в.могилев, Н.и.пак, Е.к.хённер (6404)...

Информатика А.В.Могилев, Н.И.Пак, Е.К.Хённер

(6404)

ПРЕДИСЛОВИЕ

 

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

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

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

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

М. П. Лапчик, Действительный член
Академии информатизации
образования, профессор


 

ВВЕДЕНИЕ

Уважаемый читатель!

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

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

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

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

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

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

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

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

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

Данный учебник охватывает основные разделы современной информатики. Чрезвычайно важна теоретическая база, закладываемая в главе 1, - это прочно устоявшееся ядро нашей науки, которому не грозят существенные перемены.

Глава 2 посвящена необъятному вопросу о программном обеспечении ЭВМ. Ее цель - ознакомление с основными классами базового и прикладного программного обеспечения, фундаментальными принципами, заложенными в их основу. Разумеется, в ходе изучения этих вопросов предполагается выработка практических навыков пользования типичными программами каждого класса.

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

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

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

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

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

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

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

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

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

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

Бакалавр должен

• иметь целостное представление об информатике как науке, ее месте в современном мире и в системе наук;

• владеть системой знаний о теоретических основах информатики;

• знать программное обеспечение ЭВМ;

• знать устройство ЭВМ, тенденцию развития архитектуры ЭВМ;

• обладать навыками программирования на нескольких проблемно- и машинно-ориентированных языках, отладки и тестирования программ;

• иметь навыки работы с ЭВМ нескольких типов, различными вспомогательными устройствами, с системными и прикладными программными средствами общего назначения;

• владеть методами работы в локальных сетях и системах телекоммуникаций;

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

Авторы учебного пособия - заведующие кафедрами информатики Воронежского, Красноярского и Пермского педагогических университетов, много лет отдавшие подготовке учителей информатики. В этой книге их коллективный опыт. В работе над пособием авторам оказывали помощь их коллеги. Особо следует отметить доцента Е.А.Еремина и А.П.Шестакова, которые приняли большое участие в написании глав 4 и 7, соответственно. Желаем успеха читателям!


ЧАСТЬ ПЕРВАЯ

ГЛАВА 1 ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ИНФОРМАТИКИ

Нет столь великой вещи, которую не превзошла бы еще большая.

Козьма Прутков

ВВЕДЕНИЕ

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

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

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

 

ИНФОРМАТИКА КАК НАУКА И КАК ВИД ПРАКТИЧЕСКОЙ ДЕЯТЕЛЬНОСТИ

 

ИСТОРИЯ РАЗВИТИЯ ИНФОРМАТИКИ

Информатика - молодая научная дисциплина, изучающая вопросы, связанные с поиском, сбором, хранением, преобразованием и использованием информации в… До настоящего времени толкование термина «информатика» (в том смысле как он… После второй мировой войны возникла и начала бурно развиваться кибернетика как наука об общих закономерностях в…

ИНФОРМАТИКА КАК ЕДИНСТВО НАУКИ И ТЕХНОЛОГИИ

Информатика - отнюдь не только «чистая наука». У нее, безусловно, имеется научное ядро, но важная особенность информатики - широчайшие приложения,… Как наука, информатика изучает общие закономерности, свойственные… Объектом приложений информатики являются самые различные науки и области практической деятельности, для которых она…

СТРУКТУРА СОВРЕМЕННОЙ ИНФОРМАТИКИ

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

МЕСТО ИНФОРМАТИКИ В СИСТЕМЕ НАУК

Рассмотрим место науки информатики в традиционно сложившейся системе наук (технических, естественных, гуманитарных и т.д.). В частности, это… Напомним, что по определению А.П.Ершова информатика- «фундаментальная… Уточним, что такоефундаментальная наука и что такоеестественная наука. К фундаментальным принято относить те науки,…

СОЦИАЛЬНЫЕ АСПЕКТЫ ИНФОРМАТИКИ

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

Таблица 1.1 Изменения в структуре труда США за 10 лет

 

Категория работающих 1970г., % 1980г.,% Относительный прирост численности, %
Работники сервиса 19,9 21,5 +0,1
Рабочие (промышленные, сельскохозяйственные, фермеры) 38,7 34,2 -11,6
Занятые обработкой информации (всего) 41,5 44,4 +6,7
в том числе: менеджеры   8,5   8,7   +2,4
конторские служащие 18,0 18,9 +5,0
специалисты с высшим образованием 15,0 16,8 +12,0

 


Таблица 1.2. Профессиональная структура занятости в экономике США
(по данным на 1980 г.)

 

Отрасль Работают с информацией, % Работают с материальными объектами, %
Обрабатывающая промышленность Транспорт и связь Оптовая торговля Розничная торговля Сфера услуг Финансовая деятельность Государственные учреждения

 

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

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

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

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

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

 

ПРАВОВЫЕ АСПЕКТЫ ИНФОРМАТИКИ

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

ЭТИЧЕСКИЕ АСПЕКТЫ ИНФОРМАТИКИ

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

Контрольные вопросы

 

1. Что общего и в чем различие информатики и кибернетики?

2. Какие определения информатики вы знаете?

3. Какова общая структура современной информатики?

4. Какие существуют наиболее известные информационные технологии?

5. Какое место занимает информатика в системе наук?

6. Что принято понимать под «информационным обществом»?

7. Каковы основные социальные последствия информатизации общества?

8. Какими нормативными актами регулируются отношения в сфере информатики?

9. В чем состоит авторское право на программные средства и базы данных?

10. В чем состоит имущественное право на программные средства и базы данных?

11. Как осуществляется защита авторских и имущественных прав?

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

13. Какие этические проблемы существуют, по вашему мнению, в современной информатике?

ИНФОРМАЦИЯ, ЕЕ ВИДЫ И СВОЙСТВА

 

РАЗЛИЧНЫЕ УРОВНИ ПРЕДСТАВЛЕНИЙ ОБ ИНФОРМАЦИИ

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

НЕПРЕРЫВНАЯ И ДИСКРЕТНАЯ ИНФОРМАЦИЯ

Чтобы сообщение было передано от источника к получателю, необходима некоторая материальная субстанция -носитель информации. Сообщение, передаваемое… В случае когда параметр сигнала принимает последовательное во времени конечное… Непрерывное сообщение может быть представлено непрерывной функцией, заданной на некотором отрезке [а, Ь] (см. рис.…

ЕДИНИЦЫ КОЛИЧЕСТВА ИНФОРМАЦИИ: ВЕРОЯТНОСТНЫЙ И ОБЪЕМНЫЙ ПОДХОДЫ

 

Определить понятие «количество информации» довольно сложно. В решении этой проблемы существуют два основных подхода. Исторически они возникли почти одновременно. В конце 40-х годов XX века один из основоположников кибернетики американский математик Клод Шеннон развил вероятностный подход к измерению количества информации, а работы по созданию ЭВМ привели к «объемному» подходу.

 

Вероятностный подход

Рассмотрим в качестве примера опыт, связанный с бросанием правильной игральной .кости, имеющей N граней (наиболее распространенным является случай… Введем в рассмотрение численную величину, измеряющую неопределенность…  

Таблица 1.3. Частотность букв русского языка

 

i Символ Р(i) i Символ P(i) i Символ Р(i)
Пробел 0,175   0,028 Г 0.012
0,090 М 0,026 Ч 0,012
Е 0,072 Д 0,025 И 0,010
Ё 0,072 П 0,023 X 0,009
А 0,062 У 0,021 Ж 0,007
И 0,062 Я 0,018 Ю 0,006
Т 0,053 Ы 0,016 Ш 0.006
Н 0,053 З 0.016 Ц 0,004
С 0,045 Ь 0,014 Щ 0,003
Р 0,040 Ъ 0,014 Э 0,003
В 0,038 Б 0,014 Ф 0,002
Л 0,035            

 

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

 

H = log2 27 ≈ 4,76 бит.

 

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

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

АНГЛИЙСКИЙ ЯЗЫК: «пробел», E, T, A, O, N, R, …

НЕМЕЦКИЙ ЯЗЫК: «пробел», Е, N, I, S, Т, R, …

ФРАНЦУЗСКИЙ ЯЗЫК: «пробел», Е, S, А, N, I, Т, …

Рассмотрим алфавит, состоящий из двух знаков 0 и 1. Если считать, что со знаками 0 и 1 в двоичном алфавите связаны одинаковые вероятности их появления (Р(0) = Р(1) = 0,5), то количество информации на один знак при двоичном кодировании будет равно

 

H = 1оg2 2 = 1 бит.

Таким образом, количество информации (в битах), заключенное в двоичном слове, равно числу двоичных знаков в нем.

 

Объемный подход

В двоичной системе счисления знаки 0 и 1 будем называть битами (от английского выражения Binary digiTs - двоичные цифры). Отметим, что создатели… Для удобства использования введены и более крупные, чем бит, единицы… Между вероятностным и объемным количеством информации соотношение неоднозначное. Далеко не всякий текст, записанный…

ИНФОРМАЦИЯ: БОЛЕЕ ШИРОКИЙ ВЗГЛЯД

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

ИНФОРМАЦИЯ И ФИЗИЧЕСКИЙ МИР

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

Контрольные вопросы

 

1. Какая форма представления информации - непрерывная или дискретная -приемлема для компьютеров и почему?

2. В чем состоит процедура дискретизации непрерывной информации?

3. Как определяется понятие энтропии?

4. Каким образом определяется единица количества информации при кибернетическом подходе?

5. Каковы особенности определения количества информации, связанной с появлением различных знаков в сообщениях?

 

СИСТЕМЫ СЧИСЛЕНИЯ

 

ПОЗИЦИОННЫЕ СИСТЕМЫ СЧИСЛЕНИЯ

Система счисления - принятый способ записи чисел и сопоставления этим записям реальных значений. Все системы счисления можно разделить на два…    

Таблица 1.4. Некоторые системы счисления

 

Основание Система счисления Знаки
Двоичная 0,1
Троичная 0,1.2
Четвертичная 0,1,2,3
Пятиричная 0,1,2,3,4
Восьмиричная 0,1,2,3,4,5,6,7
Десятичная 0,1,2,3,4,5,6,7,8,9
Двенадцатиричная 0,1,2,3,4,5,б,7,8,9,А,В
Шестнадцатиричная 0,1,2,3,4,5,6,7,8,9,A.B,D,E,F

 

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

 

AnAn-1An-2 … A1,A0,A-1,A-2 =

АnВn + An-1Bn-1 + ... + A1B1 + А0В0 + A-1B-1 + А-2В-2 + ...

 

(знак «точка» отделяет целую часть числа от дробной; знак «звездочка» здесь и ниже используется для обозначения операции умножения). Таким образом, значение каждого знака в числе зависит от позиции, которую занимает знак в записи числа. Именно поэтому такие системы счисления называют позиционными. Примеры (десятичный индекс внизу указывает основание системы счисления):

 

23,43(10) = 2*101 + З*10° + 4*10-1 + З*10-2

 

(в данном примере знак «З» в одном случае означает число единиц, а в другом - число сотых долей единицы);

 

692(10) = 6* 102 + 9*101 + 2.

 

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

 

1101(2)= 1*23 + 1*22+0*21+ 1*2°;

112(3) = l*32+ 1*31 +2*3°;

341,5(8) =3*82+ 4*81 +1*8° +5*8-1;

A1F4(16) = A*162 + 1*161 + F*16° + 4*16-1.

 

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

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

Отметим, что кроме рассмотренных выше позиционных систем счисления существуют такие, в которых значение знака не зависит от того места, которое он занимает в числе. Такие системы счисления называются непозиционными. Наиболее известным примером непозиционной системы является римская. В этой системе используется 7 знаков (I, V, X, L, С, D, М), которые соответствуют следующим величинам:

 

1(1) V(5) X(10) L(50) С (100) D(500) M(1000)

 

Примеры: III (три), LIX (пятьдесят девять), DLV (пятьсот пятьдесят пять).

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

 

ДВОИЧНАЯ СИСТЕМА СЧИСЛЕНИЯ

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

Таблица 1.5. Таблицы сложения и умножения в двоичной системе

 

 

Заметим, что при двоичном сложении 1 + 1 возникает перенос единицы в старший разряд - точь-в-точь как в десятичной арифметике:

 

ВОСЬМЕРИЧНАЯ И ШЕСТНАДЦАТИРИЧНАЯ СИСТЕМЫ СЧИСЛЕНИЯ

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

Таблица 1.7 Таблицы сложения и умножения в восьмеричной системе

 

Сложение Умножение

Контрольные вопросы

1. В чем отличие позиционной системы счисления от непозиционной?

2. Каковы способы перевода чисел из одной системы счисления в другую?

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

4. Как выглядят таблицы сложения и умножения в шестнадцатиричной системе?

КОДИРОВАНИЕ ИНФОРМАЦИИ.

АБСТРАКТНЫЙ АЛФАВИТ

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

КОДИРОВАНИЕ И ДЕКОДИРОВАНИЕ

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

ПОНЯТИЕ О ТЕОРЕМАХ ШЕННОНА

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

Таблица 1.8 Пример к первой теореме Шеннона

 

N Рхi xi Код ni пi-Рi Рхi ∙ log Рхi
0,19 X1 0,38 -4,5522
0,16 X2 0,48 -4,2301
0.16 X3 0,48 -4,2301
0,15 X4 0,45 -4,1054
0,12 X5 0,36 -3,6706
0,11 X6 0,33 - 3,5028
0,09 X7 0,36 -3,1265
0,02 X8 0,08 -3,1288
  Σ=1 Σ=2,92 Σ=2,85

 

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

Доказательство теоремы основывается на следующих рассуждениях. Первоначально последовательность Х = {xi} кодируется символами из В так, что достигается максимальная пропускная способность (канал не имеет помех). Затем в последовательность из В длины п вводится r символов и по каналу передается новая последовательность из п + r символов. Число возможных последовательностей длины и + т больше числа возможных последовательностей длины п. Множество всех последовательностей длины п + r может быть разбито на п подмножеств, каждому из которых сопоставлена одна из последовательностей длины п. При наличии помехи на последовательность из п + r выводит ее из соответствующего подмножества с вероятностью сколь угодно малой.

Это позволяет определять на приемной стороне канала, какому подмножеству принадлежит искаженная помехами принятая последовательность длины п + r, и тем самым восстановить исходную последовательность длины п.

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

 

МЕЖДУНАРОДНЫЕ СИСТЕМЫ БАЙТОВОГО КОДИРОВАНИЯ

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

Контрольные вопросы

 

1. Как определяется алфавит?

2. Что такое код?

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

4. Что определяют первая и вторая теоремы Шеннона?

 

ЭЛЕМЕНТЫ ТЕОРИИ ГРАФОВ

 

ОСНОВНЫЕ ПОНЯТИЯ

 

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

Граф G = (V, Е) задается парой конечных множеств V и Е. Элементы первого множества V1, v2,..., vM называютсявершинами графа (при графическом представлении им соответствуют точки). Элементы второго множества е1, е2, ...,eN называютребрами. Каждое ребро определяется парой вершин (при графическом представлении ребро соединяет две вершины графа). Если ребра графа определяются упорядоченными парами вершин, то такой граф называюториентированным (на чертеже при изображении ориентированного графа на каждом ребре ставят стрелку, указывающую его направление). Ориентированный граф с пятью вершинами и семью ребрами изображен на рис. 1.6.

 

Рис. 1.6. Пример ориентированного графа

 

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

Если ребро ek определяется вершинами vi и vj (будем обозначать этот факт следующим образом: ek = (vi, vj), то говорят, что ребро ekинцидентно вершинам vi и vj. Две вершины vi и vj называются смежными, если в графе существует ребро (vi, vj).

Последовательность вершин vi1, vi2,..., vik, таких, что каждая пара (vi,(j-1), vij) при 1 < j ≤ k определяет ребро, называетсямаршрутом в графе G. Вершины vil и vik называютконцевыми вершинами маршрута, все остальные входящие в него вершины -внутренними.

Маршрут, в котором все определяемые им ребра различны, называют цепью. Цепь считают замкнутой, если ее концевые вершины совпадают. Замкнутая цепь, в которой все вершины (за исключением концевых) различны, называется циклом. Незамкнутая цепь, в которой все вершины различны, носит название путь. Если в ориентированном графе существует путь из vi в vj, то говорят, что вершина vj достижима из вершины vi.

Две вершины vi и vj называют связанными в графе G, если в нем существует путь, для которого эти вершины являются концевыми. Граф G называется связным, если каждые две вершины в нем являются связанными. На рис. 1.7 изображен простой неориентированный связный граф.

Последовательность вершин v1, v5, i4, v3 , например, определяет путь, а последовательность вершин v1, v5, i4, v3, vl, v1 - цикл.Деревом будем называть неориентированный связный граф без циклов.Лес - это любой граф без циклов. На рис. 1.8 показаны возможные деревья с пятью вершинами.

Рис. 1.7. Пример неориентированного связного графа

Рис. 1.8. Примеры деревьев

 

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

 

ПРЕДСТАВЛЕНИЕ ГРАФОВ

Важным вопросом, особенно для приложений теории графов, является определение возможных способов представления графов. Самый простой способ - полное… Матрица смежности. Если вершины графа G помечены метками v1, v2,..., vn, то… Матрица инцидентности. Если вершины графа G помечены метками v1, v2,..., vm, а ребра - метками е1, е2,..., еп, то…

Контрольные вопросы

 

1. Каким образом определяется граф?

2. Что является путем в графе?

3. Как определяется такой вид графа, как дерево?

4. Какими способами можно задать граф?

 

АЛГОРИТМ И ЕГО СВОЙСТВА

6.1. РАЗЛИЧНЫЕ ПОДХОДЫ К ПОНЯТИЮ «АЛГОРИТМ»   Понятие алгоритма - одно из фундаментальных понятий информатики. Алгоритмизация наряду с моделированием выступает в…

ПОНЯТИЕ ИСПОЛНИТЕЛЯ АЛГОРИТМА

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

ГРАФИЧЕСКОЕ ПРЕДСТАВЛЕНИЕ АЛГОРИТМОВ

Алгоритм, составленный для некоторого исполнителя, можно представить различными способами: с помощью графического или словесного описания, в виде… Прежде всего определим понятие блок-схемы. Блок-схема - это ориентированный…

СВОЙСТВА АЛГОРИТМОВ

Алгоритм должен быть составлен таким образом, чтобы исполнитель, в расчете на которого он создан, мог однозначно и точно следовать командам… 1. Одно из первых требований, которое предъявляется к алгоритму, состоит в… 2. Используемые на практике алгоритмы составляются с ориентацией на определенного исполнителя. Чтобы составить для…

ПОНЯТИЕ АЛГОРИТМИЧЕСКОГО ЯЗЫКА

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

Контрольные вопросы

 

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

2. Кто (что) может быть исполнителем алгоритма?

3. В чем особенности графического способа представления алгоритмов?

4. Каковы основные алгоритмические структуры?

5. Чем определяются свойства алгоритмов «дискретность», «определенность», «понятность», «результативность», «массовость»?

6. Что такое алгоритмический язык?

§7. ФОРМАЛИЗАЦИЯ ПОНЯТИЯ «АЛГОРИТМ»

 

ПОСТАНОВКА ПРОБЛЕМЫ

Понятие алгоритма, введенное в предыдущем параграфе, можно назвать понятием алгоритма в интуитивном смысле. Оно имеет нечеткий, неформальный… Установленные в предыдущем параграфе свойства алгоритмов следует называть… Известно несколько подходов к формализации понятия «алгоритм»:

МАШИНА ПОСТА

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

МАШИНА ТЬЮРИНГА

Машина Тьюринга подобна машине Поста, но функционирует несколько иначе. Машина Тьюринга (МТ) состоит из счетной ленты (разделенной на ячейки и… Читающая и пишущая головка может читать буквы рабочего алфавита А = [а0, a1, ..., аt}, стирать их и печатать. Каждая…

НОРМАЛЬНЫЕ АЛГОРИТМЫ МАРКОВА

Для формализации понятия алгоритма российский математик А.А.Марков предложил использовать ассоциативные исчисления. Рассмотрим некоторые понятия ассоциативного исчисления. Пусть имеется алфавит… Рассмотрим два слова N и М в некотором алфавите А. Если N является частью М, то говорят, что N входит в М.

РЕКУРСИВНЫЕ ФУНКЦИИ

Еще одним подходом к проблеме формализации понятия алгоритма являются, так называемые, рекурсивные функции. Исторически этот подход возник первым,… Рекурсией называется способ задания функции, при котором значение функции при… Введем несколько основных понятий. Пусть X, Y - два множества. Частичной функцией (или отображением) из Х в Y будем…

Контрольные вопросы и задания

 

1. Для чего необходимо формализовать понятие алгоритма?

2. Что означает фраза: «Машины Поста и Тьюринга являются абстрактными машинами»?

3. Для чего предназначены машины Поста и Тьюринга?

4. Как «устроена» машина Поста?

5. Перечислите и запишите команды машины Поста.

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

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

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

9. Как «устроена» машина Тьюринга?

10. Каков принцип исполнения программы машиной Тьюринга?

11. Сравните машины Поста и Тьюринга. Укажите различия.

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

13. Каким образом могут быть обобщена машина Тьюринга?

14. Что такое ассоциативное исчисление?

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

16. Дайте определение нормального алгоритма Маркова.

17. В чем состоит принцип нормализации алгоритмов?

18. Охарактеризуйте способы композиции нормальных алгоритмов.

19. Как алгоритм может быть связан с рекурсивной функцией?

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

21. В чем состоит тезис Черча в слабейшей и в обычной формах?

22. Перечислите простейшие функции.

23. Перечислите элементарные операции.

24. Чем отличается рекурсивная функция от примитивно-рекурсивной?

25. Дайте определение частично-рекурсивной функции.

26. Что называется массовой проблемой? Что означает алгоритмическая разрешимость массовой проблемы?

 

ПРИНЦИПЫ РАЗРАБОТКИ АЛГОРИТМОВ И ПРОГРАММ ДЛЯ РЕШЕНИЯ ПРИКЛАДНЫХ ЗАДАЧ

 

ОПЕРАЦИОНАЛЬНЫЙ ПОДХОД

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

СТРУКТУРНЫЙ ПОДХОД

С появлением массовых ЭВМ 3-го поколения устаревшая технология программирования оказалась основным фактором, сдерживающим развитие и распространение… С появлением структурного программирования описанные выше трудности были во… Следование - самая важная из структур. Она означает, что действия могут быть выполнены друг за другом, рис. 1.19:

НОВЕЙШИЕ МЕТОДОЛОГИИ РАЗРАБОТКИ ПРОГРАММ ДЛЯ ЭВМ

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

Контрольные вопросы и задания

 

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

2. Какой подход к созданию алгоритмов называется операциональным?

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

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

5. В чем состоят недостатки операционального подхода к программированию?

6. Охарактеризуйте базовые структуры алгоритмов.

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

8. Что такое нисходящее проектирование программ?

 

СТРУКТУРЫ ДАННЫХ

 

ДАННЫЕ И ИХ ОБРАБОТКА

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

ПРОСТЫЕ (НЕСТРУКТУРИРОВАННЫЕ) ТИПЫ ДАННЫХ

В математике принято классифицировать величины в соответствии с их характеристиками. Различают целые, вещественные, комплексные и логические… Так, над целыми числами могут выполняться операции сложения (+), вычитания (-)… Целые числа, используемые компьютером, имеют те же свойства (подчиняются тем же аксиомам), что и целые числа в…

Таблица 1.9 Таблица истинности для логических операций

 

А В «и» «или» «не»
    (A and В) (A and В) (not А)
И И И И Л
И Л Л И Л
Л И Л И И
Л Л И Л И

 

Часто при решении задач оказываются полезными определенные разработчиком типы данных, представляющие собой перечисление некоторых констант или ограниченный с обеих сторон диапазон определенных ранее данных. Например, создается тип данных из двух символов 'а' и 'b' или из целых чисел в диапазоне от 1 до 100 и т. д.

 

СТРУКТУРИРОВАННЫЕ ТИПЫ ДАННЫХ

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

Массивы

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

Таблица 1.10 Графический образ двумерного массива

 

i j
a11 a12 a13 a14
a21 a22 a23 a24
a31 a32 a33 a34
a41 a42 a43 a44
...

 

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

Вспомогательный алгоритм (k):

1) положить j = 1;

2) если tk,j < T < tk.j+1, то см. п. 2;

3) увеличить j на 1,

4) если j < m, то вернуться к п. 2;

5) задача решена, ответ: (k,j), (k,j + 1);

6)конец.

 

Основной алгоритм:

1) положить k= 1;

2) выполнить вспомогательный алгоритм (K);

3) увеличить k на 1;

4) если k > n, то вернуться к п.2;

5)конец.

 

Записи, множества, файлы

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

Суперпозиция структур данных

Из рассмотренных структур данных можно создавать различные суперпозиции (вопрос о допустимости той или иной суперпозиции в конкретном языке… Рассмотрим в качестве примера такую часто используемую суперпозицию как файл… 1) положить k = 0 (в конце работы k - число искомых болтов);

Стек

 

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

Рис. 1 35. Иллюстрация «стека»

 

Стеки и принцип LIFO находят очень широкое применение в информатике. Рассмотрим в качестве примера использование стека при вычислении значения арифметического выражения.

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

Например, вычисление известного из школьного курса математики выражения b2- 4*а*с включает предварительное установление порядка выполнения операций:

 

14 2 3

b24*a*c

 

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

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

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

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

1) М1 пуст; прочитанный знак помещается на вершину М1.

2) прочитанный знак помещается на вершину M1, если он обозначает операцию, которая старше и поэтому должна выполняться до операции, знак которой был расположен на вершине М1.

3) если операции равноправны или если та, знак которой только что прочитан в выражении, должна выполняться позднее, необходимо применить операцию, знак которой расположен на вершине M1, к двум верхним числам из М2 (число на вершине - второй операнд, число под ним - первый); знак операции на вершине M1 удаляется из M1, вместо двух верхних чисел в M2 помещается результат выполнения над ними операции.

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

Рассмотрим вычисление выражения b2 - 4*а*с; значения переменных а, b, с обозначим А, В, С. Знак возведения в степень обозначим, как часто делается, стрелкой вверх.

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

Группы упорядочены по убыванию приоритета.

Теперь дадим правило работы со скобками. Левая скобка заносится в M1 сразу после прочтения. Прочтение правой скобки влечет выполнение всех операций, знаки которых находятся в Mi выше левой скобки; после выполнения этих операций обе скобки уничтожаются. Вот что будет происходить при выполнении (а + b) * с:

 

Иерархическая организация данных

Во всех рассмотренных выше структурах отдельные элементы (компоненты, поля, составляющие) структуры были формально равноправны. Существует, однако,…  

Контрольные вопросы и задания

 

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

2. Какие данные можно отнести к простейшим неструктурированным?

3. Какие данные называют структурированными?

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

5. Какими свойствами обладают литерные и строковые величины?

6. Что называют логическими данными?

7. Что такое массив?

8. Решение каких задач требует использования массивов?

9. Разберите алгоритм сортировки массива, приведенный в тексте. Предложите свой алгоритм, отличный от данного.

10. Как определяется тип «множество»?

11. Чем отличается комбинированный тип данных (запись) от массива?

12. Что такое очередь (файл)? Какое применение имеют файлы?

13. Что такое стек?

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

15. Придумайте примеры естественной иерархической организации данных.

 

ПОНЯТИЕ ОБ ИНФОРМАЦИОННОМ МОДЕЛИРОВАНИИ

 

МОДЕЛИРОВАНИЕ КАК МЕТОД РЕШЕНИЯ ПРИКЛАДНЫХ ЗАДАЧ

С точки зрения информатики, решение любой производственной или научной задачи описывается следующей технологической цепочкой: «реальный объект… Модель - очень широкое понятие, включающее в себя множество способов… Еще более сложную картину представляют идеальные модели, неразрывным образом связанные с человеческим мышлением,…

ОСНОВНЫЕ ПОНЯТИЯ ИНФОРМАЦИОННОГО МОДЕЛИРОВАНИЯ

 

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

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

Рис. 1.38. Пример абстрагирования при построении информационной модели

 

Таким образом, объект есть абстракция предметов реального мира, объединяемых общими характеристиками и поведением, рис. 1.38.

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

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

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

· реальные объекты;

· роли;

· события;

· взаимодействия;

· спецификации.

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

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

Событие - абстракция чего-то случившегося. Например, поступление заявления от абитуриента в приемную комиссию Университета, сдача (или несдача) экзамена.

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

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

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

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

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

Объект может быть представлен вместе со своими атрибутами несколькими различными способами. Графически объект может быть изображен в виде рамки, содержащей имя объекта и имена атрибутов. Атрибуты, которые составляют привилегированный идентификатор объекта, могут быть выделены (например, символом * слева от имени атрибута):

В эквивалентном текстовом представлении это может иметь следующий вид:

Книга (Автор. Название. Год издания. Число страниц).

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

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

 

Таблица 1.11 Таблица как представление информационной модели

 

Автор Книга
Название Год издания Число страниц
Грин А. Стивенсон Р. П. Скотт В. Гончаров И. А. Бегущая по волнам Остров сокровищ Ричард Львиное Сердце Обрыв

 

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

• описательные;

• указывающие;

• вспомогательные.

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

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

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

Рассмотрим пример:

Автомобиль

* гос. номер

. марка

. цвет

. владелец

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

 

СВЯЗИ МЕЖДУ ОБЪЕКТАМИ

В реальном мире между предметами существуют различные отношения. Если предметы моделируются как объекты, то отношения, которые систематически… Существует три вида связи: один-к-одному (рис. 1.39), один-ко-многнм (рис.… Связь один-к-одному существует, когда один экземпляр одного объекта связан с единственным экземпляром другого. Связь…

Контрольные вопросы и задания

 

1. Что означает понятие «модель» в научном познании?

2. Какие типы моделей существуют?

3. Что такое «информационная модель»?

4. Что такое «объект» с точки зрения информационного моделирования? Какие типы объектов можно различать?

5. Что такое «атрибуты»? Какими они бывают?

6. Что такое «связь»? Какие типы связи различают?

7. Разработайте примеры древовидных структур данных из окружающей реальности.

 

НЕКОТОРЫЕ КИБЕРНЕТИЧЕСКИЕ АСПЕКТЫ ИНФОРМАТИКИ

 

ПРЕДМЕТ КИБЕРНЕТИКИ

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

УПРАВЛЯЕМЫЕ СИСТЕМЫ

Несмотря на такое многообразие задач, решаемых в разных разделах кибернетики, разнообразие моделей, подходов и методов, кибернетика остается единой… Система - это предельно широкое, начальное, не определяемое строго понятие.… Кибернетика как наука об управлении изучает не все системы вообще, а только управляемыесистемы. Зато область интересов…

ФУНКЦИИ ЧЕЛОВЕКА И МАШИНЫ В СИСТЕМАХ УПРАВЛЕНИЯ

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

Контрольные вопросы и задания

 

1. Каков предмет науки «Кибернетика»?

2. Охарактеризуйте задачи, решаемые в научном разделе «исследование операций».

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

4. Что означает понятие «система»?

5. Что такое «система управления»?

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

7. Что такое «обратная связь»? Приведите примеры обратной связи в окружающих вас управляемых системах.

8. Что такое АСУ?

9. Каково место человека и ЭВМ в человеко-машинных системах управления?

 

ПОНЯТИЕ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА

 

НАПРАВЛЕНИЯ ИССЛЕДОВАНИЙ И РАЗРАБОТОК В ОБЛАСТИ СИСТЕМ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА

Научное направление, связанное с машинным моделированием человеческих интеллектуальных функций - искусственный интеллект - возникло в середине 60-х… Говоря о сложных интеллектуальных задачах следует понимать, что всего 300 -400… Несмотря на свою краткость, история исследований и разработок систем искусственного интеллекта может быть разделена на…

ПРЕДСТАВЛЕНИЕ ЗНАНИЙ В СИСТЕМАХ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА

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

МОДЕЛИРОВАНИЕ РАССУЖДЕНИЙ

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

ИНТЕЛЛЕКТУАЛЬНЫЙ ИНТЕРФЕЙС ИНФОРМАЦИОННОЙ СИСТЕМЫ

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

СТРУКТУРА СОВРЕМЕННОЙ СИСТЕМЫ РЕШЕНИЯ ПРИКЛАДНЫХ ЗАДАЧ

Разработки систем искусственного интеллекта шли сначала по пути моделирования общих интеллектуальных функций индивидуального сознания. Однако,… Характерную инфляцию претерпело такое понятие, как «новая информационная… Столкнувшись с непреодолимыми проблемами, разработчики систем, обладающих «общим» искусственным интеллектом, пошли по…

Контрольные вопросы и задания

 

1. Какова теория возникновения и развития исследований по искусственному интеллекту?

2. Каковы отличительные черты задач из сферы искусственного интеллекта?

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

4. Что такое «знания» с точки зрения систем искусственного интеллекта?

5. В чем состоит метод представлений знаний с помощью продукций?

6. На чем основано представление знаний с помощью семантической сети?

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

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

9. Что значит понятие «предикат»?

10. Что такое «фраза Хорна»?

11. Как происходит логический вывод с помощью метода резолюций?

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

13. В чем состоит принцип дружественности программных средств?

14. Какова структура перспективных информационных систем будущего?

 

 

Дополнительная литература к главе 1

 

1. Абрамов Ю. Ф. Картина мира и информация (философские очерки). - Иркутск: ИГУ, 1988.

2. Абдеев Р. Ф. Философия информационной цивилизации. ~ М.: ВЛАДОС, 1994.

3.Аиламазян А. К., Стась Е.В. Информатика и теория развития. - М.: Наука, 1992.

4. Ахундов М.Д. Эволюция и смена научных картин мира. В кн.: Философия, естествознание, социальное развитие. - М.: Наука, 1989.

5. Брой М. Информатика. Основополагающее введение. В 3-х частях. - М.: Диалог-МИФИ, 1996.

6. Будущее искусственного интеллекта. - М.: Наука, 1991.

7. Вейценбаум Дж. Возможности вычислительных машин и человеческий разум. -М.: Радио и связь, 1982.

8. Венда В. Ф. Системы гибридного интеллекта: эволюция, психология, информатика. - М.: Машиностроение, 1990.

9. Вирт Н. Алгоритмы и структуры данных. - М.: Мир, 1989.

10. Вирт Н. Алгоритмы + структура данных = программы. - М.: Мир, 1985.

11. Глинский Б. А. Философские и социальные аспекты информатики. - М.: Наука, 1990.

12. Глушков В. М. Основы безбумажной информатики. /Изд. 2-е. - М.: Наука, 1987.

13. Глушков В. М. Кибернетика. Вопросы теории и практики. - М.: Наука, 1986.

14. Голицын Г. А., Петров В. М. Информация, поведение, творчество. - М.: Наука, 1991.

15. Гриценко В. И., Паньшин Б.Н. Информационная технология: вопросы развития и применения. - Киев: Наукова Думка, 1988.

16. Громов Г. Р. Национальные информационные ресурсы. Проблемы промышленной эксплуатации. - М.: Наука, 1985.

17. Громов Г. Р. Очерки информационной технологии. - М.: Инфоарт, 1992.

18. Дмитриев В. И. Прикладная теория информации. - М.: Высшая школа, 1989.

19. Интеллектуальные процессы и их моделирование. - М.: Наука, 1987.

20. Информатизация общества и бизнес. - М.: ИНИОН, 1992.

21. Информатика и культура. - М. Наука, 1990.

22. Информационая революция: наука, экономика, технология. Серия «Информация. Наука. Общество». - М.: ИНИОН, 1993.

23. Искусственный интеллект: - В 3-х кн. Кн.З. Программные и аппаратные средства: Справочник / Под ред В.Н.Захарова, В.Ф.Хорошевского. - М.: Радио и связь, 1990.

24. Каныгин Ю. М., Калитич Г. И. Основы теоретической информатики. - Киев: Наукова Думка, 1990.

25. Когнитивная психология и искусственный интеллект. Серия «Информация. Наука. Общество». - М.: ИНИОН, 1993.

26. Лорьер Ж.-Л. Системы искусственного интеллекта. - М.: Финансы и статистика, 1982.

27. Марков М. Технология и эффективность социального управления. - М.: Прогресс, 1982.

28. Матросов В.Л. Теория алгоритмов. - М.: Прометей, 1989.

29. Минский М. Вычисления и автоматы. - М.: Мир, 1971.

30. Новик И. Б., Абдуллаев Ф.Ш. Введение в информационный мир. - М.: Наука, 1991.

31. Перспективы информатизации общества. Ч.1,2. Серия «Информация. Наука. Общество». - М.: ИНИОН, 1990.

32. Першиков В. И., Савинков В. М. Толковый словарь по информатике. - М.: Финансы и статистика,1991.

33. Попов Э.П. Экспертные системы: Решение неформализованных задач в диалоге с ЭВМ. - М.: Наука, 1987.

34. Поспелов Г. С. Искусственный интеллект - основа новой информационной технологии. - М.: Наука, 1988.

35. Рахитов А. И. Философия компьютерной революции. - М.: ИПЛ, 1991.

36. Свириденко С. С. Современные информационные технологии. - М.: Радио и связь, 1989.

37. Словарь по кибернетике / Под ред. В.С.Михалевича. - Киев: Гл. ред. УСЭ, 1989.

38. Советов Б. Я. Информационная технология. - М.: Высшая школа, 1992.

39. Становление информатики. Сб. статей из серии «Кибернетика». - М.:, Наука, 1986.

40. Суханов А. П. Информация и прогресс. - Новосибирск: Наука, 1988.

41. Толковый словарь по искусственному интеллекту / Авторы-составители А-Н.Аверкин, М.Г.Гаазе-Рапопорт, Д.А.Поспелов. - М.: Радио и связь, 1992.

42. УинстонП. Искусственный интеллект. - М.: Мир, 1980.

43. Урсул А.Д. Информатизация общества. Введение в социальную информатику. -М.:АОН,1990.

44. Успенский В. А. Машина Поста. - М.: Наука, 1988

45. Успенский В. А., Семенов А. Л. Террия алгоритмов: основные открытия и приложения. - М.: Наука, 1987.

46. Хартли Р. Передача информации. В сб. «Теория информации и ее приложения». - М.: ИЛ, 1959.

47. Шеннон К.-Э. Работы по теории информации и кибернетике. - М.: ИЛ, 1963.

 

ГЛАВА 2

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ЭВМ

 

Многие вещи нам непонятны не потому, что наши понятия слабы, но потому, что сии вещи не входят в круг наших понятий

Козьма Прутков

ВВЕДЕНИЕ

 

Давно ушли в прошлое времена компьютеров первых поколений, когда аппаратные средства (часто называемые в нашей литературе жаргонным словом «железо» или американским термином «hardware») были главным предметом вожделения специалистов. В те времена, в 50-60-е годы, вопрос о программных средствах стоял так: если есть - хорошо, нет - сами напишем, только дайте ЭВМ. Сегодня, прежде всего в силу экономических обстоятельств, т.е. поменявшегося соотношения стоимости в диаде «аппаратные средства / программные средства» (последние часто зовутся «software»), и высокой стоимости разработки удовлетворяющих современным требованиям, но отсутствующих по той или иной причине, программных средств, при приобретении компьютера чаще обращают внимание на наличие для него доступного (по факту и по цене) программного обеспечения. На гигантских международных выставках типа СЕВIT новинки программного обеспечения уже давно доминируют над новыми аппаратурными разработками. Полный комплект программного обеспечения, необходимого для организации, скажем, автоматизированного рабочего места (АРМ) инженера-проектировщика, научного работника (физика, химика, биолога и т.д.) по стоимости превосходит (порой в несколько раз) стоимость компьютера адекватного класса.

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

• операционные системы;

• системы программирования;

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

• прикладные программы.

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

 

ОПЕРАЦИОННЫЕ СИСТЕМЫ

 

НАЗНАЧЕНИЕ И ОСНОВНЫЕ ФУНКЦИИ ОПЕРАЦИОННЫХ СИСТЕМ

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

ПОНЯТИЕ ФАЙЛОВОЙ СИСТЕМЫ

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

ОПЕРАЦИОННЫЕ СИСТЕМЫ ДЛЯ КОМПЬЮТЕРОВ ТИПА IBM PC

Общие сведения о MS DOS

 

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

 

Таблица 2.1 Некоторые типы ОС для персональных компьютеров

 

ПК
8-разрядные 16-разрядные 32-разрядные
Р/М-80, MSX DOS, MикpoDOS, Микрос-80 MS-DOS, РАФОС, ОС DBK, ИНМОС UNIX, XENIX, Windows 95, OS/2

 

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

16-разрядные IBM-совместимые компьютеры составляют значительную часть парка профессиональных персональных компьютеров в нашей стране. Самая распространенная ОС для этих компьютеров - однопользовательская однозадачная MS DOS (компании MicroSoft - сокращенно MS; DOS - английская аббревиатура названия «дисковая операционная система»). Первая версия этой ОС была создана одновременно с персональным компьютером IBM PC в 1981 г. и из внешних устройств поддерживала лишь накопители на гибких дисках с дискетами на 160 кбайт. Версия 2.0 связана с появлением модификации PC XT, поддерживала также накопители на жестких дисках до 10 Мбайт, древовидную файловую структуру. Популярная на протяжении ряда лет версия 3.3 (1987 г.) - для поддержки PC AT. Эта модификация ОС адресует 640 кбайт оперативной памяти, что в момент ее появления было прогрессивным моментом, а затем стало сдерживающим прогресс программного обеспечения фактором. Современные версии MS DOS преодолели ограничения на размер оперативного запоминающего устройства (ОЗУ), имеют множество новых команд, содержат встроенные драйверы устройств, графическую оболочку, справочную систему и т.д.

Основные структурные компоненты MS DOS таковы:

• базовая система ввода-вывода (BIOS);

• системный загрузчик (SB);

• драйверы устройств (т.е. программы, поддерживающие их работу);

• базовый модуль;

• командный процессор (называемый также интерпретатором команд);

• утилиты DOS (вспомогательные программы).

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

Программа начальной загрузки, найденная BIOS-ом на диске, обращается последовательно к дисководам А, В и т.д. пока не найдет программу SB - системный загрузчик. Эта программа проверяет наличие на диске ядра операционной системы, состоящего из файлов с названиями ibmio.sys - файла расширения BIOS и command.com - командного процессора, загружает их в ОЗУ и запускает на исполнение первую из этих программ. Она дополнительно тестирует оборудование, осуществляет конфигурирование DOS (стандартное при отсутствии файла config.sys - файла конфигурации или нестандартное в соответствии с содержанием файла config.sys), подключает необходимые драйверы и т.д. Далее эта программа устанавливает некоторые указания о способах обработки прерываний (векторы прерываний) и передает управление базовому модулю DOS, который продолжает устанавливать правила обработки прерываний и после этого загружает в ОЗУ командный процессор и передает ему управление.

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

Командный процессор, будучи запущенным, вначале отыскивает и исполняет программу автозапуска (файл autoexec.bat), если она есть. Эта программа создается пользователем из команд DOS для того, чтобы произвести некоторые рутинные действия по созданию удобной для начала работы обстановки. Например, если при запуске компьютера вы получаете на экране панели Norton Commander, то лишь потому, что «автозапуск» этой программы предусмотрен тем, кто составлял файл autoexec.bat. Следующее действие командного процессора - выдача на экран приглашения пользователю вводить команду, выглядящее, например, так: С> (если DOS загружалась с диска С).

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

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

 

а:, b:, с:,

 

иерархическую систему каталогов, заимствованную у системы UNIX, файлы с именами до восьми символов и расширением до трех.

Общие команды MS DOS

Общие команды распознаются и выполняются командным процессором command.com. Команды вводятся с клавиатуры, их ввод завершается нажатием клавиши… Общие команды DOS делятся на группы: • команды работы с дисками;

DIR

 

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

Полный синтаксис таков:

 

DIR [диск:] [путь] [имя_файла] |/ Р] //W] [/А[[:]атрибуты]] [/0[[:]порядок_сортировки]] [...]

 

Параметры

[диск:][путь] указывают дисковод и каталог, оглавление которого нужно просмотреть;

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

В имени файла могут быть использованы символы-заместители:

? заменяет один произвольный символ в имени файла;

* заменяет произвольное число произвольных символов.

 

Например:

DIR *.txt просмотр списка всех файлов с расширением txt;

DIR а?.* просмотр списка файлов с именами из двух знаков, первый из которых
буква а, и произвольными расширениями.

 

Ключи:

/Р выводит информацию, пока экран не заполнится, для получения
следующих экранов надо нажимать любую клавишу;

/W выводит информацию в сокращенном виде, только имена файлов и
директориев (в 5 столбцов);

/А[[:] атрибуты] выводит информацию тех директориев и файлов, атрибуты
которых указаны.

 

Вот некоторые атрибуты:

Н . скрытые файлы;

- Н все файлы, кроме скрытых;

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

- S все файлы, кроме системных;

D директории;

-D только файлы;

R файлы только для чтения.

 

Параметр

/О[[:] порядок_сортировки]

 

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

Еще несколько команд той же группы (только имена):

MKDIR (МО) создание нового директория;

CHDIR (CD) переход в другой директорий.

DEL (ERASE)

Команда работы с файлами; удаляет файлы.

Синтаксис:

DEL [диск:] [путь] <имя_файла> [/Р]

Параметр

[диск:] [путь] <имя_файла>

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

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

COPY

 

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

COPY [/Y|/-Y] [/AI/B] <файл-источник> [/A|/B] [+ файл-источник [/А|/В] [+ ...]] [файл-результат [/А|/В]] [/V]

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

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

<файл-результат> указывает местоположение и имя файла, в который нужно
поместить скопированную информацию.

 

Ключи:

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

/V проверка того, что новые файлы записаны правильно.

Еще команда той же группы:

RENAME (REN) - переименование файла или группы файлов;

Примерами команд управления системой служат (приводятся только имена):

COMMAND - запуск командного процессора;

EXIT - выход из командного процессора.

Дополнительные команды-утилиты

Помимо команд, распознаваемых и выполняемых командным процессором, в операционной системе имеется большое число утилит - команд, реализованных в…   FORMAT - форматирует диск для использования в MS DOS.

DISKCOPY

Команда работы с дисками (гибкими); копирует содержимое флоппи-диска в одном дисководе на диск в другом. Ее синтаксис таков   DISKCOPY [dl:][d2:][/l]

ОБОЛОЧКИ ОПЕРАЦИОННЫХ СИСТЕМ

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

Контрольные вопросы и задания

 

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

2. Каковы функции операционной системы?

3. Охарактеризуйте основные ступеньки эволюции операционных систем.

4. Каково содержание понятий

• процесс?

• ресурс?

• виртуализация?

• прерывание?

5. Охарактеризуйте функции основных компонент операционных систем.

6. В чем состоит назначение файловой системы ОС?

7. Что такое файл? Какие структуры файлов поддерживаются различными ОС?

8. Что такое каталог (директорий)? Для чего каталоги служат?

9. Какие операции над файлами обеспечиваются операционными системами?

10. Охарактеризуйте команды операционной системы MS DOS.

11. Опишите интерфейс оболочки ОС Norton Commander.

12. Охарактеризуйте стиль работы с помощью оболочки Windows.

13. По каким показателям Windows'95 превосходит Windows 3.11?

14. Опишите типичное окно Windows'95.

15. Какие функции выполняют меню Пуск? Поиск?

16. Как вызвать динамическое меню и каковы его возможности?

 

ПОНЯТИЕ О СИСТЕМЕ ПРОГРАММИРОВАНИЯ

 

ОСНОВНЫЕ ФУНКЦИИ И КОМПОНЕНТЫ

Системы программирования - это комплекс инструментальных программных средств, предназначенный для работы с программами на одном из языков… В настоящее время разработка любого системного и прикладного программного… • трансляторы с языков высокого уровня;

ТРАНСЛЯЦИЯ ПРОГРАММ И СОПУТСТВУЮЩИЕ ПРОЦЕССЫ

С появления первых компьютеров программисты серьезно задумывались над проблемой кодирования компьютерных программ. Уже с конца 40-х годов стали… Идеи трансляции (перекодирования) одних символов в другие легли в основу… Важнейшим элементом в развитии систем программирования выступили подпрограммы. Появление аппарата подпрограмм…

Контрольные вопросы

 

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

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

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

 

ПРИКЛАДНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ОБЩЕГО НАЗНАЧЕНИЯ

 

КЛАССИФИКАЦИЯ

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

ИНСТРУМЕНТАЛЬНЫЕ ПРОГРАММНЫЕ СРЕДСТВА ОБЩЕГО НАЗНАЧЕНИЯ

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

ИНСТРУМЕНТАЛЬНЫЕ ПРОГРАММНЫЕ СРЕДСТВА СПЕЦИАЛЬНОГО НАЗНАЧЕНИЯ

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

ПРОГРАММНЫЕ СРЕДСТВА ПРОФЕССИОНАЛЬНОГО УРОВНЯ

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

ОРГАНИЗАЦИЯ «МЕНЮ» В ПРОГРАММНЫХ СИСТЕМАХ

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

Контрольные вопросы ч задания

 

1. Что такое текстовые редакторы? Для чего они нужны?

2. Что такое графические редакторы? Для чего они нужны?

3. Что такое электронные таблицы? Для чего они нужны?

4. Что такое СУБД? Для чего они нужны?

5. Что такое интегрированные системы? Для чего они нужны?

6. Что такое экспертные системы? Для чего они нужны?

7. Что такое авторские системы? Для чего они нужны?

8. Что такое гипертекст, гипермедиа?

9. Что такое мультимедиа?

10. Какие бывают типы меню?

11. Для чего в меню используют «горячие» клавиши?

12. Разработайте программу «меню» на одном из языков программирования.

 

СИСТЕМЫ ОБРАБОТКИ ТЕКСТОВ

 

ЭЛЕМЕНТЫ ИЗДАТЕЛЬСКОГО ДЕЛА

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

ТЕКСТОВЫЕ РЕДАКТОРЫ

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

ИЗДАТЕЛЬСКИЕ СИСТЕМЫ

 

Общая характеристика

Настольные компьютерные издательские системы приобрели широкую популярность в различных сферах производства, бизнеса, науки, культуры и образования.… Настольные издательские системы (desktop publishing) представляют собой… Минимальные аппаратно-технические требования для развертывания издательских систем таковы:

Настольная издательская система WORD

В последнее время все большую популярность среди широкого круга пользователей завоевывает текстовый процессор Word для Windows. Прежде всего из-за… Word - это многофункциональная программа обработки текстов, настольная… • набор, редактирование, верстка текста и таблиц;

Как выделить участок текста?

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

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

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

Для отмены удаления

• или использовать команду меню Правка + Отменить ввод. Добавление текста: установить текстовый курсор на конец абзаца и нажать клавишу Enter, чтобы начать новый абзац.

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

• выделите текст, который необходимо преобразовать в таблицу; • включите отображение сетки таблицы с помощью команды меню Таблица + Линии… • выберите команду меню Таблица + Преобразовать текст;

Настольная издательская система PageMaker

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

Настольная издательская система ТеХ

Описанные выше издательские системы плохо приспособлены к набору и подготовке к печати текстов математического характера, с большим числом сложных… В отличие от описанных выше систем, ТеХ не является системой типа «WYSIWYG» -…  

Контрольные вопросы

 

1. Какие возможности предоставляют текстовые редакторы?

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

3. Какие функциональные разделы допускают издательские системы?

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

 

СИСТЕМЫ КОМПЬЮТЕРНОЙ ГРАФИКИ

 

ПРИНЦИПЫ ФОРМИРОВАНИЯ ИЗОБРАЖЕНИЙ НА ЭКРАНЕ

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

ИЗОБРАЗИТЕЛЬНАЯ ГРАФИКА

Композиция - строение, соотношение и взаимное расположение частей, сосредоточие идейно-творческого начала, позволяющего автору произведения… Законы композиции: 1) закон цельности: во-первых, наличие конструктивной идеи, объединяющей в единое целое все компоненты произведения;…

ГРАФИЧЕСКИЕ РЕДАКТОРЫ

 

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

 

Редактор Paint

  Рис. 2.18. Рабочее окно программы Paint

Редактор CorelDraw

Начиная работать с графическим редактором CorelDraw, мы прежде всего видим его рабочее окно, рис. 2.19. Рис. 2.19. Рабочее окно программы CorelDraw

ДЕЛОВАЯ ГРАФИКА

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

ИНЖЕНЕРНАЯ ГРАФИКА

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

НАУЧНАЯ ГРАФИКА

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

Контрольные вопросы и упражнения

 

1. Составьте каким-либо средством машинной графики бордюры каждого типа симметрии из следующих элементарных мотивов, рис. 2.21.

 

 

Рис. 2.21.

 

2. Постройте орнаменты различного типа симметриииз выбранного произвольного элементарного мотива каким-либо средством машинной графики.

3. Задана высота (м) над уровнем моря вершин: Мак-Кинли - 6200, Логан - 6100, Элберт - 440, Робсон - 4000, Митгелл - 2000. Составьте по этим данным столбчатую диаграмму.

4. По данным упражнения 3 составьте круговую диаграмму.

5. Постройте график функции у = x sin (1/x).

6. Создайте мультипликацию: вращение электрона в модели атома.

7. Изобразите шестиугольную призму.

8. Подготовьте иллюстрацию ко Дню учителя.

9. Организуйте в школе (вузе) компьютерный вернисаж.

 

БАЗЫ ДАННЫХ И СИСТЕМЫ УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ

 

ПОНЯТИЕ ИНФОРМАЦИОННОЙ СИСТЕМЫ

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

Таблица 2.2 Информация об альбомах музыкальных групп

 

Название альбома Год выпуска Тип Фирма альбома
Help! Lp (England) Parlophone
Led Zeppelin 4 Lp Atlantic
Led Zeppelin 3 Lp Atlantic
Flash Gordon Soundtrack EMI

 

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

 

ВИДЫ СТРУКТУР ДАННЫХ

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

ВИДЫ БАЗ ДАННЫХ

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

Реляционные базы данных

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

Таблица 2.3, а Музыкальные альбомы групп

 

Код альбома Код группы Название альбома Год выпуска Тип альбома Фирма
Help! Lp (English) Pariophone
Led Zeppelin 4 l97l Lp Atlantic
Led Zeppelin 4 - Lp Atlantic
Flash Gordon Soundtrack EMI

 

Таблица 2.3, б Рок группы

 

Код группы Название группы Страна Дата создания Дата распада
The Bealles Англия I970
Led Zeppelin 4 Flash Gordon Англия Англия 199I - -

 

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

Необходимость использования больше одной таблицы станет заметной, если объединить эти таблицы в одну (табл. 2.4).

 

Таблица 2.4 Объединение таблиц 23

 

Название группы Страна Дата создания Дата распада Название альбома Год выпуска Тип альбома Фирма
               
The Beatles Англия I970 With the Beatles Lp Pariophone
The Beatles Англия I970 Please, please me Lp Pariophone
The Beatles Англия I970 Rubber soul Lp Pariophone

 

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

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

• сколько альбомов выпустила группа;

• выпускались ли альбомы у фирмыEMI;

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

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

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

 

СОСТАВ И ФУНКЦИИ СИСТЕМ УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ

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

Язык манипулирования данными SQL

 

Рассмотрим в качестве примера языка манипулирования данными некоторые команды языка SQL (от английских слов Structured Query Language), ставшего классическим языком реляционных баз данных.

Простейшая операция выборки представляется командой SELECT - FROM -WHERE (выбрать-из - где):

 

select <список атрибутов>

from <отношение>

Where <условие>.

Например, если необходимоиз отношения «Успеваемость», имеющего схему:   Успеваемость (ФПО_студента, Дисциплина, Оценка, Дата, Преподаватель)

ПРИМЕРЫ СИСТЕМ УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ

 

СУБД DBASE

• число полей БД; • характеристикакаждогополя; • число записей в БД.

СУБД Microsoft Access

Access - в переводе с английского означает «доступ». MS Access - это функционально полная реляционная СУБД. Кроме того, MS Access одна из самых… Популярность СУБД Microsoft Access обусловлена следующими причинами: • Access является одной из самых легкодоступных и понятных систем как для профессионалов, так и для начинающих…

Контрольные вопросы и задания

 

1. Каково назначение программ, входящих в состав СУБД?

2. Какой интерфейс можно считать дружественным?

3. Какие компоненты можно выделить в составе СУБД?

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

5. Охарактеризуйте основные команды языка SQL.

6. Как с помощью команд SQL задать поиск в базе данных?

7. Как с помощью команд SQL модифицировать базу данных?

8. Используя СУБД типа DBase разработайте базы данных:

а) телефонный справочник;

б) каталог программного обеспечения персонального компьютера;

в) домашняя библиотека.

9. Используя СУБД Access разработайте БД «Музыкальная энциклопедия».

 

ЭЛЕКТРОННЫЕ ТАБЛИЦЫ

 

НАЗНАЧЕНИЕ И ОСНОВНЫЕ ФУНКЦИИ ТАБЛИЧНЫХ ПРОЦЕССОРОВ

Как показала практика, решение многих задач экономического характера на языках высокого уровня с использованием всего арсенала приемов и методов… В настоящее время известно много вариантов электронных таблиц: АБАК,… Электронная таблица (ЭТ) - это прямоугольная матрица, состоящая из ячеек, кдая из которых имеет свой номер, рис.…

ЭЛЕКТРОННЫЕ ТАБЛИЦЫ SUPERCALC

 

Общие сведения

 

Одним из популярных табличных процессоров под DOS для компьютеров PC-286, -386 является SuperCalc-4 (SC-4).

SC4 позволяет работать с семью типами диаграмм и графиков, позволяет вводить различные обозначения, шкалы переменных, заголовки. В SC-4 можно создавать базы данных (БД), имеются простейшие средства, характерные для систем управления БД. Кроме того, SC-4 располагает средствами для перевода информации к виду, доступному из текстовых редакторов, систем управления БД (например, семейства DBASE) и других программных средств.

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

Электронная таблица SC-4 состоит из клеток, образующих строки (rows) и столбцы (columns). Столбцы обозначены одно- и двухсимвольными буквами латинского алфавита: А, В, С, ..., Z, АВ, ..., AZ, ВА, ..., BZ, ..., IA, ..., IU. Максимальное число столбцов 255. Строки обозначены номерами от 1 до 9999. В обозначении каждой клетки указывают координаты столбца и строки. Например: Al, B20, IA1. Такое обозначение клетки еще называют адресом клетки. ! В каждый момент времени одна из клеток является активной (АК). Она высвечивается на экране при помощи указателя, которым можно управлять. Активная клетка доступна пользователю для чтения и записи данных. Для быстрого перемещения указателя к краю ЭТ используют одновременное нажатие клавиши END и стрелок (к верхнему краю, к нижнему, к левому и к правому). Для листания ЭТ по страницам используют клавиши PageUp (страница вверх), PageDown (страница вниз), Ctrl + <== , Ctrl + ==> (страницы влево или вправо).

ЭТ имеет обрамление (верхняя строка и левый столбец) с именами строк и столбцов. Сами клетки составляют рабочую область ЭТ. Напомним, что на экране видна . лишь часть таблицы. В нижней части экрана расположены четыре служебные строки:

• в первой строке отображается адрес и содержимое АК, а также направление ' движения указателя АК;

• во второй строке содержится информация об ЭТ;

• в третьей строке вводятся данные или команды;

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

Объекты, с которыми работает SC4: клетки, столбец, строка, диапазон столбцов (например А:С), диапазон строк (например 4:7) и блок клеток. Блок клеток задается адресами левой верхней и правой нижней клеток. В качестве разделителя используется двоеточие или точка, например, АЗ:В5 или АЗ.В5.

Список- один или более адресов объектов, разделенных запятыми.

Ссылки - адреса клеток, используемые в качестве имен переменных в формулах.

Обычное обозначение адресов является относительным, так как оно показывает расстояние от клетки, в которой содержится формула, до клетки, на которую в этой формуле есть ссылка. Например, пусть в клетке A3 хранится формула А2 + 1 (т.е. клетка A3 должна принять значение клетки А2, увеличенное на единицу). При копировании этой формулы в другие клетки, в них будет возникать не ссылка А2, а ссылка на клетку, расположенную выше, подобно тому как А2 есть клетка, расположенная над клеткой A3 - так называемое, «копирование с настройкой», значительно ускоряющее формирование ЭТ при решении многих задач.

Для того, чтобы ссылка не изменялась, используют абсолютный адрес. В этом адресе перед номером столбца и строки должен стоять знак $. Например, $A$2 - не перенастраивается ни номер столбца, ни номер строки; $A2 - не перенастраивается только номер столбца, номер строки остается относительным; A$2 - здесь относителен номер столбца.

Содержимым клетки может быть текст, повторяющийся текст и формула:

• формула используется для вычислений, строится из чисел, математических операторов и функций; длина формулы до 241 символа (частный вид формулы -число);

• текст - может содержать любой символ клавиатуры, его длина должна быть не более 241 символа, для введения текста набор следует начинать с символа S или кавычки (");

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

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

SC-4 поддерживает два вида математических операторов: арифметические и операторы отношения. Арифметические операторы +, -, *, / имеют стандартное назначение, Операторы % (расчет процента), ** или ^ - возведение в степень. Операторы отношения:<, >, =, <=, >= (меньше, больше, равно, меньше или равно, больше или равно).

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

После ввода символа "/" в первой и второй служебных строках появляется меню команд. Для выбора команды надо переместиться на ее имя и нажать клавишу ввода или ввести только первую букву ее имени. В ответ программа выводит полное имя команды:

/Blank -очистка клетки, группы клеток, всей таблицы или описания графиков;

/Insert - вставка пустых строк/колонок;

/View - визуализация данных в графическом режиме;

/Move - перенос-вставка существующих строк/колонок с указанной позиции;

/Global - задание общих режимов или режимов пересчета таблицы;

/eXecute - исполнение командного файла (xqt. файл);

/Copy - копирование содержания клеток или описания графиков;

/Zap -удаление таблицы и значения форматных характеристик изпамяти;

/Load - загрузка таблицы или ее части с диска в рабочую область памяти;

/Window - установка режима «два окна»;

/Output - вывод отображения данных или содержимого клеток на экран, на диск
или на печать;

/Edit - редактирование содержания клетки;

/Arrange - сортировка данных (строк, колонок);

/Title - фиксация заголовка и/или левых колонок таблицы,

/Delete - удаление колонки (строки), файла;

/Format - установление форматныx характеристик отображения дан-ных на уровне клетки, строки, колонки или всей таблицы;

/Save - сохранение текущего содержания таблицы на диске;

/Quit - завершение сеанса работы с программой;

/Unprotect - снятие защиты клеток;

/Protect - установка защиты клеток;

/Name - задание имени для диапазона клеток;

//Data - предлагает дополнительные команды для работы с базой данных;

//Export - пересылка файлов из Суперкалка;

//Import - пересылка файлов в Суперкалк;

//Macro -создание макроопределений. Большинство команд имеют несколько уровней возможных ответов. После ввода буквы команды, вместо списка команд, появляется подсказка с вариантами ответов, допустимыми дляэтой команды.

 

Пример: создание ЭТ «Штатное расписание»

 

Общий вид создаваемой таблицы:

 

  А В С D Е F G Н I J К
      Школа №5              
                     
ФИО Стаж Разряд Разрядный коэффициент Оклад. Руб. Число часов Всего начислено Подоходный налог Профсоюзные сборы Всего удержано К выдаче
 
 
Артемьева Т Н. 3,30 124,22 14,91 0,12 15,03 109,19
Бердышева А С. 3,30 186,33 22,36 0,19 22,55 163,78
Пришвина О.Н. 3,40 133.47 16,02 0,13 16,15 117,32
Веселова В А. 3,45 154,27 18,51 0,15 18,67 135,60
Николаева С.Ф. 3,40 177,96 21,35 0,18 21,53 156,43
Левина Е.А. 3,45 115,70 13,88 0,12 14,00 101,70

 

Опишем порядок выполнения работы.

 

А. Оформление шапки таблицы.

 

1. Перемещаем курсор АК в клетку D1 и набираем с клавиатуры текст «Школа №5», нажимаем клавишу ввода.

2. В клетку А2 вводим повторяющийся текст:'_ . Он должен начинаться с апострофа, за ним указывается тот символ, который должен повторяться. В нашем случае это знак подчеркивания. Во второй строке проведена линия до правого края таблицы. Очистите клетки таблицы от линии, начиная со столбца L. Для этого введите в клетку L2 повторяющийся текст, содержащий пробел. Вернитесь к левому краю таблицы (Ctrl <== ).

3. В строки 3 и 4 введите заголовки столбцов, как показано в общем виде таблицы.

4. В пятой строке проведите линию, действуя аналогично п.2.

 

Б. Внесение данных.

 

1. Заполните столбец А. Так как по умолчанию ширина столбцов 9 символов, необходимо увеличить ширину столбца А. Выполните команду:

 

/F,CA,W,15.

 

Эта форма записи команды означает: нажатием клавиши «/» мы выходим в меню команд; клавишей F выбирается команда Format, нажатием С указывается область действия команды: Column (столбец); символ А автоматически появляется в командной строке, поскольку курсор АК находится в столбце А (или переведите его в этот столбец); далее выбирается опция Width (ширина) и указывается ширина столбца 15.

2. Внесите данные в столбцыB,C,D,F.

3. В клетку Е6 внесем формулу для расчета оклада: (D6+l)*20. Обратите внимание, что в этой клетке сразу появилось числовое значение этой формулы. Если же этого не произошло, значит при наборе была ошибка и формула воспринята как текст. Для исправления ошибки нажать F2, удалить признак текста - кавычки - и внести исправления в формулу.

4. Аналогично п.З занесите формулу для расчета суммы начисления:

E6*F6/18* 1.3 (эту формулу при желании можно сделать более точной).

5. В клетки Н6 и 16 введите формулы 12% G6 и 1 % G6, соответственно.

6. В клетку J6 внесите формулу Н6 +16.

7. В клетку К6 внесите формулу G6 - J6.

8. Скопируйте формулу для расчета оклада из клетки Е6 в блок клеток командой

 

Е7:Е11 :/С,Е6,Е7:Е11.

 

Далее процесс аналогичен.

Во всех клетках автоматически появились числовые значения формул. В первой служебной строке можно увидеть их вид. Заметьте, что при копировании произошла автоматическая настройка адреса D6 на D7, D8, D9 и т.д.

 

/C,G6:K6.G7:K11.

 

Рассмотрим на примере этой ЭТ применение команд Title, Global, Window, Arrange, а также запись и чтение с диска.

1. Вся таблица не вмещается на экран. Можно зафиксировать столбец А, тогда при движении к последним столбцам ЭТ, например к столбцу с суммой начисления, столбец с фамилиями будет служить границей и не исчезнет с экрана. Для этого сначала курсор АК поместите на столбец А, а затем выполните команду

 

/Title, Vertical.

 

Передвиньте курсор АК в столбец Н и убедитесь в правильности выполненных действии. Опция Clear снимает все титульные значки. Выполните команду /Title, Clear.

Для фиксации шапки таблицы, надо поместить курсор АК на 5-ю строку и выполнить команду

 

/Title. Horizontal.

 

Если поместить курсор АК в клетку А5 и выполнить команду

 

/Title,Both,

 

то фиксируется и шапка таблицы и столбец А.

2. Поместите курсор АК в клетку А12. Выполните команду Window, HorizontaI.

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

 

/Global,Formula.

 

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

 

Window, Synchronize

 

установится синхронный режим смещения (Unsynchronize - несинхронный).

3. Запишите ЭТ на диск при помощи команды Save:/S . Во второй строке появляется запрос: Enter File Name (введите имя файла). Укажите имя файла, например PR1.Из опций А|| (вся таблица). Values (без формул), Part (часть таблицы) выберите А||. Назначение опций можно посмотреть при помощи клавиши-подсказки F1 в момент их высвечивания на экране. Команда записи на диск

 

/Save.PRlAll.

 

4. Команда /Zap удаляет всю таблицу из памяти. Загрузить таблицу с диска можно командой Load:

 

/Load.PRl, AH.

 

5. Сортировка данных в таблице производится командой Arrange. Опция Row означает, что по значениям указанной строки будут сортироваться столбцы, опция Column - сортировка производится между строками по значениям столбца.

Отсортируем строки таблицы по столбцу А, в котором находятся фамилии сотрудников, в соответствии с алфавитом. Выполните команду

 

/Arrange, Column, A,

 

но не нажимайте клавишу ввода. Обратите внимание на 2-ю служебную строку: "Enter Column; then <RETURN>, or<,> for Options" (введите колонку, затем ввод или запятая для опций). Вы должны нажать запятую. Это связано с тем, что не все строки нашей ЭТ должны сортироваться (в строках с 1-й по 5-ю находится шапка таблицы). На запрос "Enter Range" (введите область) укажите А6:К11 - можно воспользоваться удобствами режима Point. Далее из опций Ascending, Descending (по возрастанию, по убыванию) выберите Ascending. Из следующих опций Ajust, No-Ajust (с настройкой, без настройки формул) выберите опцию Ajust. Далее: Go. Общий вид команды

 

/Arrange, Column, A, A6:K 11, Ascending, Ajust,Go.

 

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

 

/Arrange, Column, С, А6: К11, Descending, Adjust, Options, F, Ascending.

 

Средства макропрограммирования

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

Графическое представление данных

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

ЭЛЕКТРОННЫЕ ТАБЛИЦЫ EXCEL

Современные электронные таблицы типа Excel используют манипулятор «мышь»; в них реализован удобный и комфортный интерфейс. Excel имеет два окна - программное (внешнее) и рабочее (внутреннее).…

Контрольные вопросы и задания

 

1. Создайте ЭТ «Стипендиальная ведомость».

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

3. Составьте компьютерную модель Солнечной системы в электронных таблицах. Считая, что планеты движутся вокруг Солнца по окружностям с постоянной скоростью, определите скорость движения по орбите для каждой планеты. Например, для Марса V = 2∙3,14-0,387/0,24 = 10,1(км/ч). Оцените в каких пределах может меняться расстояние от Земли до Марса. При каких расположениях планет достигаются наименьшее и наибольшее значения.

4. Пусть интервал движения автобуса составляет 10 мин. Среднее время ожидания автобуса можно оценить проведя N опытов, разыгрывая случайное число в интервале [0, 10]. Найдите среднее значение для серий из 10, 50, 100 опытов. В случае двух маршрутов найдите среднее значение ожидания, когда интервал движения первого автобуса составляет 10 минут, а второго 60 минут. Постройте вычислительную таблицу для трех маршрутов.

 

ИНТЕГРИРОВАННЫЕ ПРОГРАММНЫЕ СРЕДСТВА

 

ПРИНЦИПЫ ПОСТРОЕНИЯ ИНТЕГРИРОВАННЫХ ПРОГРАММНЫХ СИСТЕМ

Программные средства, подробно описанные в предыдущих разделах - системы подготовки текстов и машинной графики, базы данных и электронные таблицы… Типичной является ситуация, когда данные, полученные из базы данных,… Системы Symphony, KnowledgeMan позволяют рассматривать элементы записей в БД, тексты и ячейки электронной таблицы как…

ИНТЕГРИРОВАННЫЙ ПАКЕТ MS-WORKS

После запуска интегрированного пакета MS-Works вы попадаете в интегрированную среду этого программного средства. Опишем некоторые правила работы с… Работа с текстовым редактором системы MS-Works. Текстовый редактор MS-Works… Нажатие на клавишу Alt - переход в главное меню. При этом опция Файл оказывается выделенной. Нажатие на клавишу Enter-…

Контрольные вопросы и задания

 

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

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

3. Разработайте информационную систему «Каталог программных продуктов» и подготовьте следующие документы:

а) базы данных лицензионных и свободно распространяемых программных средств;

б) прайс-лист программных продуктов фирмы «Microsoft»;

в) рекламные буклеты по отдельным программным продуктам.

 

ЭКСПЕРТНЫЕ СИСТЕМЫ

Систему искусственного интеллекта, построенную на основе глубоких специальных знаний о некоторой предметной области (полученных от… Особенности экспертных систем: • компетентность - в конкретной предметной области экспертная система должна достигать того же уровня, что и…

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

 

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

 

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

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

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

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

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

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

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

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

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

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

Система MYCIN справляется с задачей путемназначения показателя определенности каждому из своих 450 правил. Поэтому можно представлять MYCIN как систему, содержащую набор правил вида «ЕСЛИ... , ТО» с определенностью Р. В случае MYCIN их предоставили люди-эксперты, которые изложили и правила, и указали свою степень доверия к каждому правилу по шкале от 1 до 10. Установив эти правила и связанные с ними показатели определенности, MYCIN идет по цепочке назад от возможного исхода, чтобы убедиться, можно ли верить такому исходу. Установив все необходимые исходные предпосылки, MYCIN формирует суждение по данному исходу, рассчитанное на основе показателей определенности, связанных со всеми правилами, которые нужно использовать.

Допустим, чтобы получить исход Z, требуется определить предпосылки Х и Y, дающие возможность вывести Z. Но правила для определения Х и Y могут иметь связанные с ними Показатели определенности Р и О . Если значения Р и Q были равны 1,0, то исход Z не вызывает сомнения. Если Р и Q меньше 1,0 (как это обычно бывает), то исход Z не последует наверняка. Он может получиться лишь с некоторой степенью определенности.

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

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

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

DENDRAL - это старейшая, самая разработанная экспертная система в мире. Или, по крайней мере, старейшая система, названная экспертной.

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

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

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

PROSPECTOR - это экспертная система, применяемая при поиске коммерчески оправданных месторождений полезных ископаемых.

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

Самый простой случай - правила, выражающие логические отношения. Это правила типа «ЕСЛИ X, ТО Z», где событие Z непосредственно вытекает из X. Они остаются такими же простыми, если сопоставить Х некоторую вероятность.

Если у Х всего один аргумент, то это правило существенно упрощается. Обычно вместо Х мы представляем более сложное логическое выражение, например (X И Y) или (X ИЛИ Y).

Если элементы отношения связаны с помощью логического И и отдельным элементам этого отношения сопоставлены определенные вероятности, то система PROSPECTOR выбирает минимальное из этих значений и присваивает эту минимальную вероятность рассматриваемому возможному исходу. Поэтому когда вероятность наступления события X равна 0,1 и вероятность наступления события Y равна 0,2, то вероятность исхода Z равна 0,1. Легко видеть, почему выбран такой метод: чтобы Z было истинным, и X, и Y должны быть истинными. Это является «жестким» ограничением, поэтому следует брать минимальное значение.

Система PROSPECTOR пользуется методом, основанным на применении формулы Байеса с целью оценки априорной и апостериорной вероятностей какого-либо события. В целом правила в системе PROSPECTOR записываются в виде ЕСЛИ ..., ТО (LS, LN), причем каждое правило устанавливается с отношением правдоподобия как для положительного, так и для отрицательного ответа.

Система PROSPECTOR предлагает пользователю шкалу ответов в диапазоне от -5 до + 5. Нижний предел - это определенно «Да», верхний - определенно «Нет».

Обычно ответ пользователя находится где-то между крайними значениями, и PROSPECTOR корректирует Р(Н), учитывая LS и LN с помощью линейной интерполяции. Это легко представить себе в виде линейной шкалы, где LN - крайнее левое, а LS - крайнее правое значения.

Кроме экспертных систем MYCIN, DENDRAL и PROSPECTOR существует большое количество других экспертных систем. В табл. 2.6 приводится список некоторых систем, отличительной особенностью которых является наличие большой базы знаний. Этот перечень, конечно, весьма неполный, потому что в последнее время происходит быстрое расширение сферы применения экспертных систем, и полный их перечень был бы огромным и устарел бы почти сразу после его опубликования.

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

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

• символьные языки программирования, ориентированные на создание ЭС и систем искусственного интеллекта (например, LISP, INTERLISP, SMALLTALK);

•языки инженерии знаний, т.е. языки высокого уровня, ориентированные на построение ЭС (например, OPS-5, LOOPS, Пролог, KES);

• системы, автоматизирующие разработку (проектирование) ЭС (например, КЕЕ, ART, TEIRESLAS, AGE, TIMM); их часто называют окружением (enviroment) для разработки систем искусственного интеллекта, ориентированных на знания;

• оболочки ЭС (или пустые ЭС) - ЭС, не содержащие знаний ни о какой проблемной области (например, ЭКСПЕРТИЗА, EMYCIN, ЭКО, ЭКСПЕРТ).

 

Таблица 2.6 Список некоторых экспертных систем

 

Наименование системы Назначение системы
MYCIN Медицинская диагностика
PUFF Тоже
PIP »
CASNET »
INTERNIST »
SACON Техническая диагностика
PROSPECTOR Геологическая диагностика
DENDRAL Определение химической структуры вещества
SECHS Тоже
SYNCHEM »
EL Анализ цепей
MOLGEN Генетика
MECHO Механика
PECOS Программирование
Rl Конфигурирование компьютеров
SU/X Машинная акустика
VM Медицинские измерения
SOPHIE Обучение электронике
GUIDON Медицинское обучение
TE1RESIAS Построение базы знаний
EMYCIN Тоже
EXPERT »
KAS »
ROSIE Построение экспертных систем
AGE Тоже
HEARSAY

AL/X » SAGE » Micro-Expert »  

Контрольные вопросы и задания

 

1. Что отличает экспертные системы от других программ?

2. Какие категории различных типичных проблем решаются экспертными системами?

3. Охарактеризуйте экспертную систему MYCIN.

4. Охарактеризуйте экспертную систему DENDRAL.

5. Охарактеризуйте экспертную систему PROSPECTOR.

6. Какие виды инструментальных программных средств для создания экспертных систем существуют?

 

ИНСТРУМЕНТАЛЬНЫЕ ПРОГРАММНЫЕ СРЕДСТВА ДЛЯ РЕШЕНИЯ ПРИКЛАДНЫХ МАТЕМАТИЧЕСКИХ ЗАДАЧ

 

НАЗНАЧЕНИЕ ПРОГРАММ

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

ПАКЕТ MATHCAD

Одним из последних достижений в области инструментальных средств для решения прикладных задач является MATHCAD - физико-математический пакет с… На рисунке 2.28: 1 - палитра операторов; 4-рабочая область;

СИСТЕМА АНАЛИТИЧЕСКИХ ПРЕОБРАЗОВАНИЙ REDUCE

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

Х*У

Y

Y

 

Комментарий: переменной А присваивается сначала значение S, затем - X*Y.

 

Пример 4.

 

13; 3+6; 2**64; 11-20; 25/(-125); 2*(3*A-6)/6; <Enter>

 

Листинг результата программы следующий:

 

139 18446744073709551616 (-9) (-1)/5А-2

 

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

 

Пример5.

 

I**2; A:=X+I*Y# B:=X-I*Y# A*B; A**2; <Enter>

 

Листинг результата программы следующий:

 

-1

X-52-0+Y-52

' 2*I*X*Y + X-52-0-Y-52

 

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

 

Пример 6.

 

OPERATOR F,W; W(X); F(5*X); (F(X)+A)**2; <Enter>

 

Листинг результата программы следующий:

 

W(X) F(5*X) F(X)-52-0 + 2*A*-F(x) + A-52

 

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

 

Пример 7.

 

DF(X**2,X); DF(Y,Y,2); DF(X**3*Y*82*Z**3,X,3,Y,Z,2); DF(Y,X); <Enter>

 

Листинг результата программы следующий: 2*Х 0 72*Y*Z О

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

 

Пример 8.

 

INT(X**2,X); INT(SIN(X),X); <Enter>

Листинг результата программы следующий:

Х-53-0/3 - COS(X)

 

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

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

 

Контрольные вопросы

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

2. В каких задачах предпочтительнее использовать методы компьютерной алгебры?

 

КОМПЬЮТЕРНОЕ ТЕСТИРОВАНИЕ

 

ТЕХНОЛОГИЯ ПРОЕКТИРОВАНИЯ КОМПЬЮТЕРНЫХ ТЕСТОВ ПРЕДМЕТНОЙ ОБЛАСТИ

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

Оценка соответствия

Рис. 2.30. Схема создания тестовых заданий   Самый простой способ составления тестовых заданий - формирование вопросов к понятиям, составляющим узлы семантического…

ТИПЫ КОМПЬЮТЕРНЫХ ТЕСТОВ

В соответствии с моделью знаний, выделим три класса компьютерных тестов на знания, умения и навыки. Отметим, что типы компьютерных тестовых заданий… 1.Типы тестовых заданий по блоку «знания» — вопросы альтернативные (требуют… • вопросы с выбором (ответ из набора вариантов);

ИНСТРУМЕНТАЛЬНЫЕ ТЕСТОВЫЕ ОБОЛОЧКИ

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

ПРИМЕР ТЕСТА ПО ШКОЛЬНОМУ КУРСУ ИНФОРМАТИКИ

 

В 1996 г. Республиканский центр тестирования использовал тесты по некоторым школьным предметам, в частности по информатике. Ниже приводится один из его вариантов (разработчики: Н.Г.Граве, И.А.Елисеев. Г.В.Тюрникова). Тесты построены на основе канонического принципа: вопрос и варианты ответа.

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

 

N Модуль 1.Введение

1. Измерение информации ,

2. Свойство информации

3. Измерение информации

4. Предмет информации. Фундаментальные понятия

5. История развития вычислительной техники

Модуль 2. Устройство и работа ЭВМ

6. Состав информационно-измерительного комплекса

7. Поколения ЭВМ

8. Арифметические основы ЭВМ

9. Состав информационно-измерительного комплекса

10. Арифметические основы ЭВМ

11. Физические основы ЭВМ

12. Состав информационно-измерительного комплекса

Модуль 3.Алгоритмизация

13. Величины, тип, имя, значения, вид

14. Величины, тип, имя, значения, вид

15. Величины, тип, имя, значения, вид

16. Типы алгоритма

17. Способы описания

18. Способы описания

19. Алгоритм, свойства

20-24. Остальные вопросы как единый подраздел

Модуль 4. Информационные технологии

25-28. Операционные системы

29-30. Текстовый, графический,музыкальный редакторы

31-32. Базы данных

33. Электронные таблицы

Модуль 5. Заключение

34-36. Перспективы развития

 

РОССИЙСКИЙ ТЕСТ ПО ИНФОРМАТИКЕ №01

 

01. Килобайт - это

1) 1000 символов; 2) 1024 байт; 3) 8 бит; 4) 1000 байт.

02. Достоверность - это свойство

1) алгоритма; 2) компьютера; 3) информации; 4) языка программирования.

03. Наибольший объем памяти требуется для хранения

1)"10";2) 10; 3) "десять"; 4) (10).

04. Носителем информации является

1) провода; 2) принтер; 3) классный журнал; 4) телефон.

05. Первая машина, автоматически выполняющая все 10 команд, была

1) машина С.А.Лебедева; 2) машина Ч.Бэббиджа; 3) абак; 4) Pentium.

06. Минимально необходимый набор устройств для работы компьютера содержит

1) принтер, системный блок, клавиатуру; 2) процессор, ОЗУ, монитор,
клавиатуру; 3) монитор, винчестер, клавиатуру, процессор; 4) системный блок,
дисководы, мышь.

07. Элементной базой ЭВМ третьего поколения являются

1) ЭЛТ (электронно-лучевая трубка); 2) светодиоды;

3) ИС (интегральные схемы); 4) транзисторы.

08. Число 3210-это

1)1000002;2)358;3)2116;4)100001.

09. К внешним запоминающим устройствам относится

1) процессор; 2) дискета; 3) монитор; 4) жесткий диск.

10. Определить сумму трех чисел: 0012 + 0178 + 1112

1) 02310; 2) 00910; 3) 1112; 4) 10002.

11. Перевести число 3210 в двоичную систему счисления

1)100000;2)111111;3)101010; 4) 100001.

12. К внутренним запоминающим устройствам относится

1) монитор; 2) жесткий диск„3) оперативная память (RAM); 4) флоппи-диск.

13. Неверно записанное выражение

1) + 3; 2) tg(+3); 3)-tg(-3)+l; 4) -sin(-3)+(l)*(tg(+l).

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

х:=7; у:=12+5, у:=у+у-х

значение х будет

1)7; 2) 89; 3)94; 4) 47.

15. Если исполнить

X:=2; Y:=X+3; X:=X+1; Y:=X+3*Y,

то значение Y равно

1)0;2)-10;3) 18; 4) 6,5.

16. При t > 17 будет ложно

1) t=17,01; 2) t>212 и t<1000; 3) t =17; 4) t>17 и t<20.

17. До какого числа должно изменится значение счетчика i в фрагменте алгоритма

а:=1

нц для i от 2 до <...>

а: = a *i

i: =i +1 а:= а* i

кц

чтобы а стало равно II?

1)8; 2) 9; 3)10; 4) 11.

18. Для вывода данных в блок-схемах используют фигуру

19. Геометрическая фигура используется в блок-схемах для обозначения

1) условия; 2) останова; 3) любого действия; 4) цикла «для».

20. Не является свойством алгоритма

1) универсальность; 2) массовость; 3) результативность; 4) дискретность.

21. При составлении алгоритма для вычисления функции y=a*sin(x) аргументами являются 1) sin; 2) а, х; 3) х; 4) х, у.

22. Сколько раз выполнится цикл

i-1;

а:=10;

n:=2;

нц пока а>0

а:= a-n*i

кц

1)0; 2) 10; 3)5; 4) 4.

23. В качестве имени переменной может быть

1) 1996;2)а1996;3) 1996а;4)-1996.

24. Для описания циклического алгоритма используется конструкция

1) ПОКА; 2) ЕСЛИ; 3) ВЫБОР; 4) ПРОЦЕДУРА.

25. Какая программа является интерпретатором команд MS DOS?

1) AUTOEXEC.BAT; 2) MSDOS.SYS; 3) CONFIG.SYS; 4)COMMAND.COM

26. Минимально необходимый набор файлов для работы компьютера в MSDOS

1)IO.SYS, MSDOS.SYS; 2) IO.SYS. MSDOS.SYS, COMMAND.COM;

3)IO.SYS, MSDOS.SYS. COMMAND.COM, CONFIG.SYS;

4) IO.SYS, MSDOS.SYS, COMMAND.COM, AUTOEXEC.BAT.

27. Сколько символов в своем полном имени может содержать директория?

1)11; 2) 8; 3)7; 4) 12.

28. Неверным будет утверждение

1) файл с расширением .ТХТ может быть не текстовым;

2) системный диск может не содержать файл CONFIG.SYS;

3) файл AUTOEXEC.BAT может не содержать ни одной строки

(ни одного байта);

4) файл должен содержать в расширении не менее трех букв.

29. Текстовый редактор Лексикон - это

1) прикладная программа; 2) базовое программное обеспечение;

3) сервисная программа; 4) редактор шрифтов?

30. Под термином «интерфейс» понимается

1) внешний вид программной среды, служащий для обеспечения диалога с пользователем;

2) связь текстового редактора с устройством печати;

3) совокупность файлов, содержащихся в одном каталоге;

4) устройство хранения графической информации.

31. База данных - это 1) текстовый редактор; 2) совокупность связанных между собой сведений; 3) операционная оболочка; 4) утилиты NC?

32. Графический редактор нужен для

1) нормальной работы баз данных; 2) быстрого поиска информации;

3) проигрывания звуковых файлов; 4) создания рисунков.

33. В отличие от бумажных табличных документов, электронные таблицы обычно

1) имеют большую размерность; 2) позволяют быстрее производить расчеты;

3) обладают всеми свойствами, перечисленными в пунктах 1 -2;

4) стоят дороже.

34. Что делает невозможным подключение компьютера к глобальной сети?

1) тип компьютера; 2) состав периферийных устройств;

3) отсутствие винчестера; 4) отсутствие телефона.

35. Дан E-mail: artem@wremech.msk.ru. Слово msk означает

1) город назначения; 2) тип компьютера; 3) каталог; 4) имя пользователя.

36. Первый PHOTO CD был произведен фирмой

1) IBM; 2) APPLE; 3) KODAK; 4) POLAROID.

 

Ответы на тестовые задания

 

01 - 2); 02 - 3); 03 - 3); 04 - 3); 05 - 2); 06 - 2); 07 - 3); 08 - 4); 09 - 2); 10 -4); 11 - 4);

12 - 2); 13 - 4); 14 - 1); 15 - 3); 16-3); 17 - 4); 18 - 3); 19 - 2); 20 - 1); 21 - 3); 22 - 3); 23 - 2); 24 - 1); 25 - 4); 26 - 2); 27 - 2); 28 - 4); 29 - 1); 30 - 1); 31- 2); 32 - 4); 33 - 3); 34 -4); 35-1); 36-1).

 

Контрольные вопросы и задания

 

1. Разработайте модель знанияпо школьному разделу «действия с дробями», используя модульный принцип.

2. Разработайте тест на знание таблицы умножения чисел от 0 до 100.

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

 

КОМПЬЮТЕРНЫЕ ВИРУСЫ

 

ЧТО ТАКОЕ КОМПЬЮТЕРНЫЙ ВИРУС

Среди огромного разнообразия видов компьютерных программ существует одна их разновидность, заслуживающая особого упоминания. Главное отличие этих… Компьютерным вирусом называется программа, обычно малая по размеру (от 200 до… Существуют вирусы и менее «злокачественные», вызывающие, например, переустановку даты в компьютере, музыкальные…

РАЗНОВИДНОСТИ КОМПЬЮТЕРНЫХ ВИРУСОВ

Рассмотрим подробнее основные особенности компьютерных вирусов, характеристики антивирусных программ и меры зашиты программ и данных от компьютерных… По приближенным оценкам к 1997 г. существовало около 7000 различных вирусов.… Среди всего разнообразия вирусов следует выделить следующие группы:

АНТИВИРУСНЫЕ СРЕДСТВА

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

Контрольные вопросы и задания

 

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

2. Какие типы компьютерных вирусов существуют?

3. Каковы принципы функционирования загрузочных вирусов?

4. Каковы принципы функционирования файловых вирусов?

5. Охарактеризуйте известные типы антивирусных программ.

6. Перечислите меры защиты информации от компьютерных вирусов.

 

КОМПЬЮТЕРНЫЕ ИГРЫ

 

ВИДЫ И НАЗНАЧЕНИЕ КОМПЬЮТЕРНЫХ ИГР

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

ОБЗОР КОМПЬЮТЕРНЫХ ИГР

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

Контрольные вопросы

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

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

различия?

 

Дополнительная литература к главе 2

 

1. Андриес ВанДааг. Машинная графика // Современный компьютер. - М.: Мир, 1986.

2. Ахметов К. С. Курс молодого бойца. - М.: Компьютер-пресс.1995.

3. Бабий А. А..Коновалова Н.И.,Пак Н.И.Пара.ией М.Г. Методическое пособие по работе с IBM PC- Красноярск: КГПИ. «Демос», i991.

4. Безрукое Н. Н. Компьютерные вирусы. - М.: Наука, 1991.

5. Брукс Ф П. Как проектируются и создаются программные комплексы. /Очерки по системному программированию. - М.: Наука. 1979.

6. Брябрин В. М. Программное обеспечение персональных ЭВМ. - М.: Наука, 1990.

7. Богумирский Б. С. Руководство пользователя ПЭВМ. Части 1,2. - С.-Пб.: Печатный Двор, 1994.

8. К.Герман О. В. Введение в теорию экспертных систем и обработку знаний. -Минск: «Дизайн-ПРО», 1995.

9. Глазко Т.П., Киреева Т. В., Киреев Н.В. Работа с инструментальными средствами на IBM. - Красноярск, КГПУ, 1995.

10. Илюшечкин В.М., Костин А.Е. Системное программное обеспечение. - М.:

Высшая школа, 1991.

11. Как работать с Microsoft Office для Windows 95. Техническое описание Microsoft Corporation. 1995.

12. Каратыгин С., Тихонов А., Долголаптев В. Базы данных: простейшие средства обработки информации. Т. 1,2. Серия «Компьютер для носорога». - М.: ФИА, 1995.

13. Келжек А. М. и др. Работа на IBM. - М.:АО «Книга и бизнес». 1992.

14. Кирмайер М. Мультимедиа. - С.-Пб.: BHV-Санкт-Петербург, 1994.

15. Климов Д. М., Руденко В.М. Методы компьютерной алгебры в задачах механики. - М.: Наука, 1989.

16. Компьютерная вирусология. - Киев: Укр. сов. энцикл., 1991.

17. Косневски Ч. Занимательная математика и персональный компьютер. - М.:

Просвещение, 1989.

18. Липаев В. В. Проектирование программных средств. - М.: Высшая школа, 1990.

19. Маейрс Г. Надежность программного обеспечения. - М.: Мир, 1980.

20. НаймертаимД. Word 6.0 для Windows. - М.: Международные отношения, 1995.

21. Операционная система MS DOS. - М.: Радио и связь, 1992.

22. Одинцова О. П. Введение в Автокад. Методические указания. - Красноярск, КГПУ, 1996.

23. Пак Н. И. Рогов В В Компьютерная графика. - Омск, ОмГПУ, 1995.

24. Проектирование пользовательского интерфейса на персональных компьютерах. Стандарт фирмы IBM. - Вильнюс: DBS Ltd., 1992.

25. Ратбон Э. Windows 3.1 для «чайников». - Киев: Диалектика, 1994.

26. Роджерс Д. Ф., Адамс Дж.А. «Математические основы машинной графики». -М: Машиностроение, 1980.

27. Скляров В. А. Программное и лингвистическое обеспечение персональных ЭВМ. Системы общего назначения. - Минск: Высшая школа, 1992.

28. Смирнов Н.Н. Программные средства персональных ЭВМ. - Л.: Машиностроение, 1990.

29. Смолянинова О. Г. Основы компьютерной грамотности. - Красноярск, КГПУ, 1996.

30. Смолянинова О. Г., Яшин А. В. СУБД MS Access. Метод, указания. - Красноярск, КГПУ, 1997.

31. Соловьев Г.Н., Никитин В. Д. Операционные системы ЭВМ. - М.: Высшая школа,1989.

32. Туранова Л. М. Элементы компьютерной графики. Уч. пособие. - Красноярск, КГПУ, 1996.

33. Фигурнов В.Э. IBM PC для пользователя. Изд.б-е. - М.: ИНФРА, 1995.

34. ФоксДж. Программное обеспечение и его разработка. - М.: Мир, 1985.

35. Фош Д., Ван Дем А. Основы интерактивной машинной графики. - М.: Мир, 1989.

36. Хаслер Р., Фаненштих К. Word 6.0 для Windows. - М.: Экон, 1994.

37. Шафрин Ю. Основы компьютерной технологии. - М.: ABF, 1996.

38. Шенен П., Каспар М. и др. Математика и САПР, книга 1. - М.: Мир, 1988.

39. Шикин Е. В. Начала компьютерной графики. - М.: Диалог-МИФИ, 1994.

40. Шкаев А. В. Настольные издательские системы: Справочник. - М.: Радио и связь, 1994.

41. AutoCAD Release 10. Reference manual. 1989, Autodesk, Inc

 

ГЛАВА 3 ЯЗЫКИ И МЕТОДЫ ПРОГРАММИРОВАНИЯ

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

Из журнала Reader's Digest

 

ВВЕДЕНИЕ

 

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

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

 

ИСТОРИЯ РАЗВИТИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ

Одной из самых революционных идей, приведших к созданию автоматических цифровых вычислительных машин, была высказанная в 20-х годах XIX века… Аду Лавлейс, одну из немногих современников Чарльза Бэббиджа, кто сумел по… Революционным моментом в истории языков программирования стало появление системы кодирования машинных команд с помощью…

Контрольные вопросы

 

1. Какие события и когда стали толчком для начала работ по программированию?

2. Каковы основные вехи на пути развития программирования?

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

 

ЯЗЫКИ ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ

 

ПОНЯТИЕ О ЯЗЫКАХ ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ

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

МЕТАЯЗЫКИ ОПИСАНИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ

Интерпретация конструкций языка программирования должна быть абсолютно однозначной, ибо фраза на языке программирования превращается в машинный код… Для строгого и точного описания синтаксиса языкапрограммирования, как правило,… Язык БНФ (называемый также языком нормальных форм) представляет компактную форму в виде некоторых формул, похожих на…

Lt;пусто>::=.

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

ГРАММАТИКА ЯЗЫКОВ ПРОГРАММИРОВАНИЯ

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

Контрольные вопросы и задания

 

1. Какие преимущества имеют языки программирования высокого уровняпосравнению с машинно-ориентированными языками?

2. Каковы основные составляющие языка программирования высокого уровня?

3. В чем различия понятий языков программирования от аналогичных понятий математического «языка»?

4. С какой целью используются и что представляют собой металингвистические формулы Бэкуса-Наура?

5. Что представляет собой синтаксическая диаграмма Вирта?

6. В чем различие между постоянными и переменными величинами? Чем характеризуется величина?

7. В чем принципиальная разница между величинами простыми и структурированными?

8. Для чего служит описание величин в программах?

9. В чем состоит назначение функций? процедур? модулей?

 

ПАСКАЛЬ КАК ЯЗЫК СТРУКТУРНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ

 

ВВЕДЕНИЕ

 

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

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

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

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

Программа I

program KvadUravn; (заголовок программы)

var (список переменных)

а,b,с: real; (коэффициенты уравнения)

d,xlx2: real; (вспомогательные переменные)

begin (начало программы)

writein; (пропуск строки на экране)

writein('введи a,b,c'); read(а,Ь,с); (ввод данных)

d:=b*b-4*a*c; (дискриминант)

if d<0 then (если d<0, то)

write('корней нет') (печатать)

else (иначе)

begin (начало серии команд)

xl:=(-b+sqrt(d))/(2*a);

x2:=(-b-sqrt(d))/(2*а); (вычисляем корни)

write('х1=',х1,' х2=',х2) (печать корней)

end (конец серии)

end.(конец программы)

 

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

1) заголовок программы;

2) описание внешних модулей, процедур и функций;

3)описание меток;

4) описание констант;

5) описание типов переменных;

6) описание переменных;

7) описание функций и процедур;

8) раздел операторов.

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

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

Рассмотрим пример программы 2, вычисляющей длину окружности и площадь круга по данному радиусу.

Программа 2

program circle;

const

pi=3.14159;

var

r,s,1 : real;

begin

writeln (введите радиус'); readln(r);

s:=pi*r*r; l:=2*pi*r;

writeln('площадь круга=',S:8:4); writeln('длина окружности=', l:8:4)

end.

 

В этой программе можно выделить четыре раздела. Описание заголовка начинается со служебного слова program, описание констант - const, описание переменных -var, раздел операторов начинается с begin. Программа заканчивается служебным словом end, после которого ставится точка. Описания величин и операторы друг от друга отделяются знаком «точка с запятой».

Для обозначения величин используются имена. Они составляются из латинских букв и цифр, причем первым символом должна быть буква. В примере использованы имена величин - pi, r,s и 1.

Имя программы (в примере - circle) выбирается автором и составляется по такому же правилу.

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

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

 

const <имя> = <константа>

 

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

Например:

 

const

pi=3.14159; k=-15; s='площадь';

 

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

Группа типов, значения каждого из которых можно перечислить в некотором списке- скалярные типы. Для них определена порядковая функция ord(x) - номер значения х в списке (для целочисленного х ord(x)=x); функции pred(x) - значение в списке, предшествующее х, и suce(x) - значение в списке, следующее за х.

Упорядоченный тип - это тип, значения которого упорядочены в обычном смысле. К данным такого типа применимы операции отношения <,>, <= (меньше или равно), >=(больше или равно), =, <> ( не равно). Для логического типа выполняется неравенство:

 

false < true.

 

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

 

var <список имен переменных>: <тип>

 

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

 

var a,b,c:real; k,l:integer; p:boolean;

 

Надцелыми величинами (тип integer) определены арифметические операции : * (умножение), div (деление нацело), mod (вычисление остатка от деления), + , -(сложение и вычитание); операции перечислены в порядке старшинства.

Например: 25 div 4 = 6 ; 25 mod 4=1. Целый результат дают некоторые стандартные функции (аргумент функции заключается в круглые скобки):

 

abs(x) - абсолютная величина целого х;

sqr(x) -квадрат значения х;

trunc(x) - целая часть вещественной величины х;

round(x) - целое число, полученное из вещественного х по правилу округления;

random(x) - случайное целое числоиз интервала от 0 до х.

 

Например: trunc(4.7)=4 ; round(4.7)=5 ; sqr(3)=9 . Для данных типа byte определены те же операции и функции, что и для данных типа integer.

Над вещественными величинами определены операции: *, +, -, /, а также стандартные функции при вещественном или целом аргументе: abs(x), sqr(x), sin(x), cos(x), arctan(x), ln(x), exp(x), sqrt(x) - квадратный корень из х, int(x) - целая частьизх, random - случайное число из интервала от 0 до 1. Указанные операции и функции дают вещественный результат.

Надлогическими величинами определены операции: not - отрицание, and -конъюнкция, or-дизъюнкция. Логическая функция odd(x) принимает значение true, если целочисленное х является нечетным и false , если четным.

Множество всех символов образуютсимвольные величины (тип char), которые являются упорядоченными, причем 'А' < 'В'< 'С'<...< 'Z', 'а' < 'b'<...< 'z', '0' < 'I'<...< '9'.

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

Эта роль выражений отражена в основном операторе языка - операторе присваивания. Он имеет следующий вид:

<имя переменной> := <выраженне>

Тип переменной и тип выражения должны быть согласованы (величины принадлежат одному и тому же типу). Есть исключение: имя переменной может относиться к типу real, а значение выражения - к типу integer.

Примеры.

l:=2*pi*r; p:=(a+b+c)/2; z:=sqrt(sqr(x)+sqr(y))

В Паскале можно вводить с клавиатуры числовые и символьные данные. Имеются две встроенные процедуры (подпрограммы) ввода:

1) read(<cписок переменных>); 2) readln(<cписок переменных>).

При выполнении процедуры read(xl,x2,...,xN) программа прерывается и компьютер ждет ввода с клавиатуры N значений переменных из списка х1, х2,..., xN. Эти значения - константы соответствующих типов - должны при вводе разделяться пробелами. Набор данных завершается клавишей ввода.

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

Пример.

 

var a,b:real; c:char; d:integer;

...

read(a,c,d,b);

...

 

Допустимый ввод: 83.14 k 200-7.15

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

1) write(<cписок выражений>); 2) writeln(<cписок выражений>).

Процедура write(xl,x2,...,xN) печатает на экране значения выражений из списка х1, х2, ..., xN. Процедура writeln отличается от write тем, что переводит курсор в начало следующей строки. Для вывода на принтер используются те же процедуры с добавлением служебного слова 1st перед списком выражений.

Пример: write(lst,'нет решений');

На бумаге будет напечатан текст «нет решений».

Для управления печатью используютсяформаты данных. Пусть х - переменная типа real. Если не использовать форматы, то значение х будет выводиться в «плавающей» форме (типа 1.654887892Е-04). Форматы позволяют напечатать вещественное число в естественной форме. Пусть m, n - целые числа. Процедура write(x:m:n) выводит на экран значение переменной х в виде десятичной дроби, причем m определяет общее число выводимых символов, включая цифры, точку и знак числа, n - количество цифр после точки. Если количество выводимых символов меньше m, то перед числом добавляются пробелы.

Пусть, например, х = 387.26. Следующая таблица демонстрирует влияние форматов на вывод значения х:

оператор строка вывода

writeln('*',x) * 3.8726000000E+02

writeln('*',x:8:3) * 387.260

writeln('*',x:8:l) * 387.3

Один формат - ширину поля вывода - можно использовать и для вывода значений выражений типов integer, boolean, char.

Контрольные вопросы

1. Какова последовательность разделов в программе на Паскале?

2. Какие типы данных называются скалярными? упорядоченными?

3. Какие действия допустимы над величинами целого типа? вещественного типа?

4. Как в Паскале осуществляется ввод и вывод данных?

ОСНОВНЫЕ КОНСТРУКЦИИ ЯЗЫКА

Реализация последовательности действий (т.е. структуры следования) выполняется с помощью составного оператора: begin <последовательность операторов> end Раздел операторов в программе всегда является составным оператором. Служебные слова begin и end часто называют…

Контрольные вопросы

 

1. Как в Паскале реализуется развилка?

2. В чем различие в назначениях условногооператора и оператора варианта? Как реализуется оператор варианта?

3. Какого типа циклы реализуются в языке Паскаль? каким образом?

СТРУКТУРЫ ДАННЫХ

Мы уже познакомились с простыми типами real, integer, boolean, byte,char. В Паскале программист по своему желанию может определить новый тип путем… Описание перечисляемого типа выполняется в разделетипов по схеме:

Контрольные вопросы и задания

 

1. Как определяется перечислимый тип данных?

2. Для чего может понадобиться интервальный тип данных?

3. Как вводятся и используются в программах массивы?

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

5. Какие операции допустимы над множествами?

6. В чем принципиальные различия между одномерными массивами и записями?

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

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

9. Числа а и b выражают длины катетов одного прямоугольного треугольника, числа с и d - другого. Определите, являются ли треугольники подобными.

10. Напечатайте числа а, b, с в порядке возрастания.

11. Определите все пары двузначных чисел, обладающих свойством: (20+25^2 = = 2025.

12. Вычислите в числовом массиве а1,а2,...,аn суммы положительных и отрицательных элементов.

13. Вычислите скалярное произведение двух десятимерных векторов Х и Y.

14. Упорядочите массив х1,х2,...,хn по неубыванию, используя метод сортировки вставками: пусть первые k элементов уже упорядочены по неубыванию; берется (K+1)-й элемент и размещается среди первых k элементов так, чтобы упорядоченными оказались уже (k+1) первых элементов.

15. Составьте программу решения треугольной системы уравнений порядка n.

16. Замените в заданном арифметическом выражении все вхождения sin на cos и sqrt на abs.

17. Для заданного текста определите длину содержащейся в нем максимальной последовательности цифр 0, 1,2,..., 9.

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

19. Найдите и напечатайте в порядке убывания все простые числа из диапазона [2..201].

20. Опишите тип «запись» для следующих данных:

а) адрес(город, улица, дом, квартира);

б) дата(число,месяц.год);

в) студент(фио,факультет,курс,группа).

21. Заданы N точек на плоскости. Найдите точку, ближайшую к началу координат. Используйте тип «запись».

 

ПРОЦЕДУРЫ И ФУНКЦИИ

Описание и вызов. В Паскале подпрограммы называются процедурами и функциями и описываются в разделе с тем же названием. Процедура имеет такую же структуру, как и программа, но с двумя отличиями: • заголовок процедуры имеет другой синтаксис и включает служебное слово procedure;

Контрольные вопросы

 

1. Какова структура процедуры? функции?

2. Какие параметры называют формальными и какие - фактическими?

3. В чем различие между локальными и глобальными переменными?

4. В чем сходство и различие между процедурой и модулем?

 

РАБОТА С ФАЙЛАМИ

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

Контрольные вопросы и задания

1. Какие проблемы решаются при использовании файлов?

2. Какие операции и функции используются при работе с файлами?

3. Найдите площадь выпуклого четырехугольника со сторонами х, у, z, t и одной

из диагоналей d.

4. Заданы три комплексных числа. Найдите их сумму,

5. Имеется внешний файл записей «lab.zap», содержащий сведения об ученика.' школы. Файл формируется приведенной ниже программой.

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

а) упорядочить файл по признаку «class» в порядке возрастания;

б) упорядочить файл по признаку «god» в порядке убывания;

в) упорядочить файл в алфавитном порядке.

program lab;

type shcoo 1= record

fiо : string[20], class : 1 .. 11; god : integer; pol: char;

end;

var x:array[1..100] ofshcool; n,i:integer; f:file of school;

begin

write ('введите кол-во учеников:'); readln(n); assign(f,'lab.zap'); rewnte(f);

for i:=l to n do with x[i] do

begin write('введи Ф.И.О.',1,'-ого ученика:'); readln(fio);

write('клacc:'); readln(class);

write('гoд рождения:-'); readln(god); write('пол(M/Ж):-');

readln(pol); write(f,x[i])…;

end; close(f);

end.

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

ПИСЬМО ОТВЕТ

а) последовательность целых чисел до 100 | квадраты этих чисел;

б) простые числа в интервале от 1 до 200 | сумма этих чисел

 

ДИНАМИЧЕСКИЕ ИНФОРМАЦИОННЫЕ СТРУКТУРЫ

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

Контрольные вопросы

1. В чем принципиальное различие статических и динамических переменных?

2. 2 Как реализуется связь указателя с динамическим объектом?

3. 3. Что такое «связанный список данных»?

РАБОТА С ГРАФИКОЙ

Модуль представляет собой мощную библиотеку графических подпрограмм универсального назначения, рассчитанную на работу с наиболее распространенными… Подключение модуля Graph, tpu к программе выполняется директивой uses graph;

Некоторые сведения о драйверах н определяемых ими режимах

  Процедура инициализации в Турбо-Паскале имеет три аргумента: Initgraph(<драйвep>, <режим>, '<путь к драйверу>').

Begin

writeln('ошибка графики');

writeln(grapherrormsg(errorcod));

halt

end;

Процедура Halt останавливает выполнение программы и возвращает управление операционной системе.

Для формирования палитры используется система смешения красного, зеленого и синего цветов и изменения яркости луча. Цвет задается номером из списка цветов палитры в интервале 0 .. 15.

Процедуры sе1со1ог(<цвет>) и setbkcolor(<цвет>) устанавливают текущий цвет рисунка и цвет фона. При инициализации графики по умолчанию устанавливается черный фон и белый цвет рисунка.

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

Координаты точек воспринимаются в «экранной» системе координат, в которой начало - верхний левый угол экрана, ось «х» направлена вниз, ось «у» -направо. Максимальные значения координат определяются разрешимостью экрана (см. табл. 3.1).

Первый аргумент процедуры setlinestyle(a,b,t) а - стиль линии второй параметр b -«образец» - имеет значение 4, если а=4, в остальных случаях b=0; третий параметр t -толщина линии - может иметь значение 1 (нормальная толщина) или 3 (жирная линия).

 

Таблица 3.2

Основные процедуры модуля Graph

 

Заголовок процедуры   Геометрический смысл  
putpixel(x,y,c)   Построить точку (х,у) цветом с  
setlinestyle(a,b,t)   Установить стиль, образей и толщину линий  
line(xl,yl,x2,y2)   Соединить две точки отрезком  
rectangle(xl,yl.x2.y2)   Построить прямоугольник с заданными концами диагонали и  
    сторонами, параллельными осям координат  
circle(x,y,r)   Построить окружность с центром (х,у) и радиусом г  
arc(x,y,a,b,r)   Построить дугу окружности: a,b - начальный и конечный угол в  
    Градусах  
ellipse(x,y,a,b,rx,ry)   Построить эллиптическую дугу: rx, rу - полуоси эллипса  
setfillstyle(t,c)   Установить стиль закраски и ее цвет  
fillellipse(x,y,rx,ry)   Построить закрашенный эллипс, используя цвет рисунка  
floodfill(x,y,cg)   Закрасить фигуру до границы с цветом cg; (x,y) - внутренняя  
    точка фигуры  
bar(xl,yl,x2,y2)   Построить столбец, используя тип и цвет закраски  
pieslice(x,y,a,b.r)   Построить и закрасить сектор круга  
sector(x,y.a,b,rx,ry)   Построить и закрасить эллиптический сектор  
settextsiyle(f,n,d)   Установить шрифт, направление вывода и размер символа текста '  
outtextxy(x,y,st)   Вывести строку st, начиная с точки (х,у)  
outtext(st)   Вывести строку, начиная с точки расположения текущего указателя  

 

Первый аргумент процедуры setfillstyle(t,c) - тип закраски t - принимает значения из интервала 0..12. Наиболее употребителен тип t = 1 - заполнение фигуры текущим цветом.

Для вывода текста на графический экран сначала выполняется процедура settextstyle(f,n,d), устанавливающая шрифт f, направление вывода п и размер символов (параметр d). При f = 0 используется стандартный точечный шрифт, встроенный в систему Турбо-Паскаль. С использованием других шрифтов познакомимся ниже. Направление вывода п принимает значения 0 (горизонтальный вывод) и 1 (вертикальный вывод).

Размер букв определяется параметром d, принимающим значения из интервала 1..10. Если d = 1 и f = 0, то каждый символ занимает квадрат 8*8 точек, при d > 1 сторона квадрата умножается на d.

Далее, с помощью процедуры outtextxy(x,y,st) строка st выводится на экран, начиная с точки (х,у).

Например:

settextstyle(0,0,2); оuttехtху(100,200,'горизонтальная строка');

оuttехtху(100,230,'размер увеличен вдвое');

Примеры графических программ

Пример 1: программа рисует звездноенебо с 400 «звездами», вспыхивающими постепенно, и полную желтую луну.

Програлша 29

program sky;

uses crt,graph;

var k,gd,gm:integer;

begin gd:=detect;

initgraph (gd, gm, ' '); randomize;

for k:=l to 400 do

begin putpixel(random(640),random(480),random(15)+1); delay(10);

end;

setfillstyle(l,14); setcolor(14);

circle(550,80,30) ; floodfill(550,80,14) ;

repeat until keypressed; closegraph

end.

 

Пример 2. Узор. Используя простейшие геометрические образы строят замечательные графические изображения. Ниже приведена программа изображения муарового узора, полученного пересечением двух семейств расходящихся отрезков прямых. Качество и изображение получаемого узора зависит в основном от трех параметров: kl, k2 - расстояний между отрезками слева и справа ; h - смещения вниз (вверх) всего семейства.

Программа 30

program uzor;

uses crt, graph;

var gd,gm,errCode,i,kl,k2,h; integer;

begin

kl:=8; k2:=3; h:=110; gd:=Detect; InitGraph(gd,gm.'') ;

errCode:=GraphResult ;

if errCode = grOk then begin

setcolor(green); *

for i:=l to (420 div kl) do

begin line(0,i*kl,640,i*k2+h); line(0,i*k2+h,640,i*kl);

end;

repeat until keypressed; CloseGraph;

end else writeln('errCode=',errCode)

end.

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

Пример 3: программа 31 строит столбчатую диаграмму, наглядно отражающую числовую информацию о населении 6 крупных городов мира: Токио, Гамбурга, Москвы, Бангкока, Мехико и Парижа.

 

Программа 31

program colon;

uses crt,graph;

const m:array[l..6] of real=(11500,2300,9700.5100,12400,8200) ;

name:array[I..6] of

string =('Токио','Гамбург','Москва','Бангкок','Мехико','Париж');.

var gd,gm,k,n,s:integer; st:string[6];

begin

gd:=detect;

initgraph(gd,gm,' ');

setcolor(15);

setlinestyle(0,0,1);

line(60,400,620,400);

line(60,400,60,100) ;

settextstyle(0,0,1);

for k:=l to 12 do begin n:=1000*k; str(n.st);

outtextxy(10,400-20*k-4,st);

line(60,400-k*20,65,400-k*20)

end;

setcolor(14); settextstyle(0,0,2);

outtextxy(120,20, 'Население городов (тысяч)'); settextstyle(0,0,1);

for k:=l to 6 do begin setfillstyle(1,k+2);

bar(100+(k-l)*70,400,100+k*70,round(400-m[k]/1000*20)) ;

outtextxy(100+(k-l)*70+4,450,name[k]) ;

end;

repeat until keypressed;

closegraph

end.

Процедура bar3d(xl,yl,x2,y2,d,top) рисует трехмерный столбец, глубина которого определяется параметром d. Последний параметр процедуры top - логического типа. Если top=true, рисуется верхнее основание столбика, в противном случае оно не изображается, что позволяет рисовать столбики один над другим. Диаграммы с трехмерными столбиками красивы, но их труднее создавать.

Построение графиков функций. Построение графиков функции - неотъемлемая часть большинства программ, предназначенных для обучения математике, физике. Ниже представлен пример программы построения графика функции y=x*x*sin(l/x). на произвольном отрезке [а, b]. Количество точек графика (параметр п) также задается произвольно (точка х=0 исключается, так как в ней функция не определена). В программе также определяются величины tl=(xl-x0)/(b-a) и t2=(yl-y0)/(2m), которые означают масштабы по осям Х и Y соответственно.

График рассматриваемой функции представлен на двух отрезках [а, b] и [-0.1,0.1]. Чтобы построить график другой функции, достаточно задать ее аналитический вид в описании функции (function f).

Программа 32

programgrafik;

uses crt, graph;

var gd,gm, errCode : integer; a,b : real; n : integer;

function f(x:real):real;

begin ifx<>0 thenf:=x*x*sin(l/x);

end;

procedure grafun(xO,xl,yO,yl,n :word;a,b;real);

var h,m,x, tl,t2 : real; i, u,v,xv,yv : word;

begin

h:=(b-a)/n; (поиск максимума f(x)} m:=abs(f (a));

for i:=l to n do if m<abs(f(a+i*h)) then m:=abs(f(a+i*h)) ;

tl:=(xl-x0)/(b-a);

t2:=(yl-y0)/(2*m); (построение координатных осей)

setfillstyle(l,15); bar(x0-5,y0-5,xl+5,yl+5) ;

xv:=round(x0-a*tl); yv:=round((yO+yl)/2) ;

setcolor(l); line(xv,y0,xv,yl);

line(xO,yv,xl.yv) ;

Moveto(xO,yv-round(f(a) *t2)); (установка курсора в начало графика}

setcolor(3); (построение графика) for i:=l to n do begin x:=a+i*h; u:=x0+round((x-a)*tl);

v:=yv-round(f(x)*t2); lineto(u,v);

end;

end; (конец процедуры } begin

clrscr; write ('введи a,b и n : '); readln(a,b,n); gd^Detect;

InitGraph (gd,gm, ' ' ) ;

errCode:=GraphResult ;

if errCode = grOk then begin

grafun(100,500,50,300,n,a,b);

grafun(550,620,10,100,200,-0.1,0.1);

repeat until keypressed; CloseGraph;

end else writeln( "ezzCode=' ,errCode)

end.

Для изображения поверхностей, определяемых функцией двух переменных z=f(x,y), можно использовать разные способы. Одним из них является метод построения семейства одномерных графиков функции z=f(x.y) от одной переменной х или у различных фиксированных значениях другой. Это может быть хорошей тренировкой для самостоятельной работы по освоению графики.

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

• нарисовать фрагментв нужном месте экрана;

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

• снова нарисовать фрагмент в другом месте экрана.

Такой способ осуществлен в программе billiard, где два шарика радиусом 5 пикселей разных цветов двигаются с одинаковой скоростью внутри зеленого прямоугольника, построенного с помощью процедуры bar.

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

В программе также рассмотрена ситуация соприкосновения шариков во время их движения. Она решается примитивно просто: каждый шарик меняет направление своего движения на противоположное.

Программа 33

program billiard;

uses crt,graph;

var х,y,dx,dy,gd,gm:integer; xl,yl,dxl,dyl:integer;

procedure blow(a,b:integer; var c,d:integer);

begin if (a<107) or (a>523) then c:=-c;

if (b<107) or (b>363) then d:=-d;

end;

begin

gd:=detect; initgraph(gd,gm,''); setcolor(14);

setlinestyle(0,0,1); rectangle(99,99,531,371) ;

setfillstyle(l,3); bar(100,100,530,370) ;

x:=320; y:=240; dx:=2; dy:°2;

xl:=320; yl:=200; dxl:=-2; dyl:=-2;

repeat circle(x,y,5); setcolor(4); circle(xl,yl,5);

blow(x,y,dx,dy); blow(xl,yl,dxl,dyl); delay(10);

if (abs(x-xl)<=10) and (abs(y-yl)<=10) then begin

dx:—dx; dy:=-dy; dxl:=-dxl; dyl:=-dyl; delay(300)

end;

setcolor(3); circle(х,у,5);

x:=x+dx; y:=y+dy;

setcolor(3); circle(xl,yl,5) ;

xl:=xl+dxl; yl:=yl+dyl; setcolor(14)

until keypressed;

closegraph

end.

Еще один способ организации движения на экране, широко применяющийся в компьютерных играх, связан с использованием нескольких экранных страниц. В режиме Vgamed их две, а в режиме Vgalo - четыре. Страницы имеют номера: 0,1,... В любой момент времени одну из страниц можно сделать видимой и посмотреть ее содержимое на экране с помощью процедуры setvisualpage(номep). Визуальная страница обычно пассивна, т.е. на ней нельзя выполнять графические процедуры. Другую страницу можно объявить активной с помощью процедуры setactivepage(номep). Активная страница невидима для пользователя. На ней можно подготовить другой рисунок. В следующий момент можно поменять роли страниц, т.е. визуальную сделать активной и невидимой и на ней рисовать следующий кадр, а бывшую активную сделать визуальной и показать объект в новом месте экрана.

В программе helicopter с помощью страниц моделируется вращение винтов вертолета. Две процедуры verti и vert2 подготавливают рисунки вертолета с разным положением винтов. Изображения выводятся на разные страницы, которые потом по очереди становятся то видимыми, то активными.

В программе организовано также движение вертолета по эллиптической орбите. Центр орбиты - точка (х0,у0) - располагается в центре экрана, числа а=250 и b=130 -горизонтальная и вертикальная полуоси эллипса. Положение вертолета на орбите 'вычисляется по формулам

u=x0+round(a*cosp), t=y0+round(b*sinp),

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

 

Программа 34

program helicopter;

uses crt,graph;

const step=0.01;

var gd,gm,u,t,z,k,xO,yorc,ac,vi:integer; p,a,b:real;

procedure vertl(x,у:integer) ;

begin

cleardevice; setcolor(14);

setlinestyle (0,0,1); setfillstyle(1,3) ;

line(x+12,y,x+36,y);line(x+24,y,x+24,y+8) ;

fillellipse(x+24,y+14,12,7); moveto(x+18,y+20);

lineto(x,y+20); lineto(x,y+14);

line(x+18.y+28,x+30,y+28); line(x+24,y+27,x+24,y+21) ;

end;

procedure vert2(x,у:integer);

begin

cleardevice; setcolor(14);

setlinestyle(0.0,1); setfillstyle(1,3) ;

line(x+22,y,x+26,y); line(x+24,у,x+24,y+8) ;

fillellipse(x+24,y+14,12,7); moveto(x+18,y+20) ;

lineto(x,y+20); lineto(x,y+14) ;

line(x-3,y+14,x+3,y+14); line(x+24,y+27,x+24,y+21) ;

line(x+18,y+28.x+30,y+28);

end;

begin

gd:=vga; gm:=vgamed; initgraph(gd,gm,' ');

x0:=getmaxx div 2; y0:=getmaxy div 2;

z:=l; p:=pi; a:=250; b:=130; ac:=0; vi:=l;

for k:=l to 800 do

begin u:=x0+round(a*cos(р)); t:=y0-round(b*sin(p));

• setactivepage(ac); setvisualpage(vi);

if z=l then vertl(u,t) else vert2(u,t); z:=-z;

delay(50); p:=p+step; c:=ac; ac:=vi; vi:=c:

end; closegraph

end.

 

Контрольные вопросы и задания

1. Какие бывают режимы графического экрана?

2. Охарактеризуйте возможности процедур модуля Graph.

3. Какие есть способы построения движущихся изображений?

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

5. Изобразите поверхность функции z=Sin(x)+Cos(y), предусмотрев удаление «невидимых линии».

6. Создайте демонстрационную модель идеального газа в замкнутом объеме.

ТУРБО-ОБОЛОЧКИ. ВЕРСИИ ПАСКАЛЯ

  Рис. 3.2. Главное меню Турбо-Паскаля 3.0  

Контрольные вопросы

1. В чем состоят основные различия версий Турбо-Паскаля?

2. Какие возможности версии Турбо-7.0 отсутствуют в предыдущих версиях?

РУКОВОДСТВО ПОЛЬЗОВАТЕЛЮ ТУРБО-ПАСКАЛЯ

СТАНДАРТНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ Принятые обозначения: type -любой тип;

МЕТОДЫ И ИСКУССТВО ПРОГРАММИРОВАНИЯ

ПРОЕКТИРОВАНИЕ ПРОГРАММ

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

Контрольные вопросы и задания

1. Каковы основные этапы проектирования и разработки программы?

2. Что означает хорошо сформулированная постановка задачи?

3. Назовите методологии проектирования и разработки программ.

4. Как выбрать модель задачи?

5. Что такое тестирование программы?

6. Постройте группу тестов для алгоритма решения системы линейных уравнений.

ОСНОВНЫЕ ПРИНЦИПЫ РАЗРАБОТКИ И АНАЛИЗА АЛГОРИТМОВ

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

Задания

1. Используя принцип проектирования сверху-вниз постройте блок-схему и программ) для решения системы линейных алгебраических уравнений методом Гаусса.

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

МЕТОДЫ ПОСТРОЕНИЯ АЛГОРИТМОВ, ОРИЕНТИРОВАННЫЕ НА СТРУКТУРЫ ДАННЫХ

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

Контрольные задания

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

2. С помощью стека организуйте алгоритм, который определяет, является ли заданное слово палиндромом («перевертышем»).

3. Придумайте задачу на использование очереди.

 

РЕКУРСИВНЫЕ АЛГОРИТМЫ

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

Контрольные задания

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

2. Разработайте программу игры «Ханойские башни».

3. Предложите другие модификации алгоритма полного тураконя.

4.5. ВАЖНЕЙШИЕ НЕВЫЧИСЛИТЕЛЬНЫЕ АЛГОРИТМЫ
(ПОИСК И СОРТИРОВКА)

 

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

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

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

• числа сортируемых элементов;

• степени начальной отсортированности (диапазона и распределения значений сортируемых элементов);

• необходимости исключения или добавления элементов;

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

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

В этой связи выделяют сортировку двух классов объектов: массивов (внутреняя сортировка) и файлов (внешняя сортировка).

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

 

a1, а2… аn → ak1, ak2…akn

F(ak1) < F(ak2) < F(akn)

 

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

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

Поиск. Для определенности примем, что множество, в котором осуществляется поиск, задано как массив

var a:array[0..N] of item;

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

Результатом поиска, как правило, служит элемент массива, равный эталону, или отсутствие такового.

Линейный поиск. Процедура заключается в простом последовательном просмотре всех элементов массива и сравнении их с эталоном X.

i:=0;

while (i<=N)and(a[i]<>X) do i:=i+1 end.

Часто бывает целесообразнее осуществлять поиск с барьером, вводя дополнительно граничный элемент массива a[N+l]:

a[N+l]:=X;i:=0;

while a[i]<>X do i:=i+l end.

Равенство i = N + 1 означает, что совпадений не было, т.е. что эталонный элемент отсутствует.

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

 

Программа 42

program poiskl; (*линейный поиск*) const N=8;

type item= integer;

var a : array[0..n] of item; i :integer; x : item;

begin

(*задание искомого массива*) for i:=0 to N do

begin writet'Bвeди элемент a[ ',i, ']= '); readln(a[i]);

end;

writeln; write('введи эталон x= '); readln(x);

(* линейный поиск*)

i:=0; while (i<=N)and(a[i]<>X) do begin i:=i+l end;

(*вывод результата*)

if i<=N then write( 'найден элемент на ',i, ' месте ') else write( 'такого элемента в массиве нет ') ;

readin

end.

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

L:=0; R:=N; while L<R do

begin

m:=(L+R) div 2;

if a[m]<X then L:=m+l else R:=m;

end;.

Например, пусть эталонный ключ х=13, а в массиве имеются следующие элементы:

 

а[0]=1; а[1]=3; а[2]=4; а[3]=7; а[4]=8; а[5]=9; а[6]=13; а[7]=20; а[8]=23.

 

Бинарный процесс поиска показан ниже:

 

1 3 4 7 8 9 13 20 23 - элементы массива

0 1 2 3 4 5 6 7 8- порядковые номера элементов

L m R

L m R

a[m]=x =>поиск закончен и m = 6

 

Программа поиска представлена ниже.

 

Программа 43

program poisk2; (*поиск делением пополам*)

const N=8;

type item= integer;

var a: array[0..n] of item; i, L, R, m:integer; x: item; f:

boolean;

begin

(*задание искомого массива*)

for i:=0 to N do

begin write( 'введи элемент a[',i, '1= '); readln(a[i])

end;

writeln; write( 'введи эталон х= '); readln(x);

(*бинарный поиск*)

L:=0; R:=N; f:=false;

repeat m:=(L+R) div 2; if a[m]=X then f:=true;

if a[m]<X then L:=m+l

else R:=m;

writeln(m,L,R);

until (L>=R)or(f);

(*вывод результата*)

if f then write('найден элемент на ',m, ' месте') else write('такого элемента в массиве нет ');

readln

end.

Сортировка массивов. Как и в случае поиска определим массив данных:

var a: array [0.. N] of item

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

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

for i:=2 to N do begin

x:=a[i];

<включение х на соответствующее место готовой последовательности a[l],...,a[i]>

end

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

Исходные элементы            
i=2            
i=3            
i=4            
i=5            

 

В алгоритме поиск подходящего места осуществляется как бы просеиванием х при движении по последовательности и сравнении с очередным a[j]. Затем х либо вставляется на свободное место, либо a[j] сдвигается вправо и процесс как бы «уходит» влево.

Программа 44

program sortirov)ca_l;

(*сортировка включением по линейному поиску*) const N=5;

type item= integer;

var a: array[l..n] of item; i, j: integer; х: item;

begin (*задание искомого массива*)

for i:=l to N do begin write('введи элемент a[',i,']=');

readln(a[i]) end;

for i:=l to N do begin write(a[i], ' ' );

end;

writeln;

(*алгоритм сортировки включением*) .for i:=2 to n do begin

x:=a[i]; j:=i; a[0]:=x; (*барьер*)

while x<a[j-l] do

begin

a[j]:=a[j-l); j:=j-l;

end;

a[j]:=x; .

(for k:=l to n do write(a[k.l, ' ') end; writeln;) end;

(*вывод отсортированного массива*) for i:=l to N do begin .

write(a[i], ' ') ;

end;

readln;

end.

В рассмотренном примере программы для анализа процедуры пошаговой сортировки можно рекомендовать использовать трассировку каждого прохода по массиву с целью визуализации его текущего состояния. В тексте программы в блоке непосредственного алгоритма сортировки в фигурных скобках находится строка, которая при удалении скобок выполнит требуемое (параметр k необходимо описать в разделе переменных - var k:integer). Во всех последующих программах сортировки легко осуществить подобную процедуру.

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

 

Программа 45

program sortirovka_2;

(*сортировка двоичным включением*) const N=5;

type item= integer;

var a: array(l..n] of item; i, j, m, L, R: integer; x: item;

begin

(*задание элементов массива*) for i:=l to N do

begin write('Bведи элемент a[',i,']= '-); readln(a[i]) ;

end;

for i:=l to N do

begin write (a[i], ' ');

end;

writeln;

(*алгоритм сортировки двоичным включением*)

for i:=2 to n do begin

x:=a(i]; L:=l; R:=i;

while L<R do begin

m:=(L+R) div 2; if a[m]<=x then L:=m+l else R:=m;

end;

for j:=i downto R+l do a(j]:=a[j-1];

a[R]:-x;

end;

(* вывод отсортированного массива*)

for i:=l to N do

begin write(a[i], ' ');

end; , readln;

end.

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

Исходные элементы                  
Четвертная сортировка                  
Двойная сортировка                  
Одинарная сортировка                  

 

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

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

             
          i=2, min= 11  
          i=3.min=12  
          i=4, min=13  
          i=5,min=15.  

 

Программа 46

 

program sortirovka_3;

(*улучшенная сортировка включением - сортировка Шелла*)

const N=8; t=4;

type item= integer;

var a: array[-9..n] of item; i, j, k, s :integer; x: item;

m: l..t; h :array [l..t] of integer;

begin

(*задание искомого массива*)

for i:=l to N do

begin write('введи элемент a[',i,']=') readln(a[i])

end;

for i:=l to N do begin write(a[i], ' ');

end;

writeln;

(*алгоритм Шелла*)

h[l]:=9; h[2]:=5; h[3]:=3; h[4]:=1;

for m:=l to t do

begin k:=h[m]; s:=-k; (*барьеры для каждого шага*)

for i:=k+l to n do

begin x:=a[i], j:=i—k; if s=0 then s:=-k;- s:=s+l;

a[s]:=x; while x<a[j] do begin a[j+k]:=a(j]; j:=j-k;

end;

a[j+k]:=x

end;

end;

(*вывод отсортированного массива*)

for i:=l to N do begin write(a[i], ' ');

end;

readln;

end.

 

Программа 47

 

program sortirovka 4;

(*сортировка прямым выбором*)

const N=5;

type item= integer;

var a: array[l..n] of item; i, j, k: integer; x: item;

begin

(*задание искомого массива*)

for i: =1 to N do

begin write('введи элемент a[', i, ']='); readln(a[i]);

end;

for i:=l to N do begin write(a[i],' ');

end;

writeln;

(*алгоритм прямого выбора*)

for i:=l to n-1 do

begin k:=i; x:=a[i]; (*поиск наименьшего элемента*)

for j:=i+l to n do (*и его индекса из a[i]...a{n]*)

if a[j]<x then begin k:=j; x:=a[k)

end;

a(k]:=a[i]; a[i]:=x;

end;

(*вывод отсортированного массива*)

for i:=l to N do begin write(a[i], ' ');

end;

readln;

end.

Улучшенный метод сортировки выбором с помощью дерева. Метод сортировки прямым выбором основан на поисках наименьшего элемента среди неготовой последовательности. Усилить метод можно запоминанием информации при сравнении пар элементов. Этого добиваются определением в каждой паре меньшего элемента за n/2 сравнений. Далее n/4 сравнений позволит выбрать меньший из пары уже выбранных меньших и т.д. Получается двоичное дерево сравнений после n-1 сравнений у которого в корневой вершине находится наименьший элемент, а любая вершина содержит меньший элемент из двух приходящих к ней вершин. Одним из алгоритмов, использующих структуру дерева, является сортировка с помощью пирамиды (Дж.Вилльямс). Пирамида определяется как последовательность ключей hL...hR, такая, что *

hi<=h2i и hi<=h2i+l, для i=L,...,R/2.

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

• каждая конечная вершина имеет высоту h или h-1;

• каждая конечная вершина высоты h находится слева от любой конечной вершины высоты h-1;

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

27 9 14 8 5 11 7 2 3.

У пирамиды п вершин, их значения можно разместить в массиве а, но таким образом, что следующие за вершиной из a[i] помещаются в a[2i] и a[2i+l]. Заметим, что а[6]=11,а[7]=7, а они следуют за элементом а[3]=14 (рис.3.14).

Рис. 3.14. Пирамида

 

Очевидно, что если 2i > n , тогда за вершиной a[i] не следуют другие вершины, и она является конечной вершиной пирамиды.

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

1) меняя местами а[1] и а[п], получаем 3 9 14 8 5 11 7 2 27;

2) уменьшаем n на 1, т. е. n=n-l, что эквивалентно удалению вершины 27 из дерева;

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

4) повторяем шаги 1, 2, 3 до тех пор, пока не получим n= I.

Для алгоритма сортировки нужна процедура преобразования произвольного массива в пирамиду (шаг 3). В ней необходимо предусмотреть последовательный просмотр массива справа налево с проверкой одновременно двух условий: больше ли a[i], чем a[2i] и a[2i+l].

Полный текст программы приведенниже.

 

Программа 48

 

program sortirovka_5;

(*улучшенная сортировка выбором - сортировка с помощью дерева*) const N=8;

type item= integer;

var a : array(l..n] of item; k, L, R: integer; x: item;

procedure sift(L,R:integer);

var i, j: integer; x,y: item;

begin i:=L; j:=2*L; x:=a[L]; if (j<R) and (a[j]<a[j+1]) then j:=j+l;

while (j<=R)and(x<a[j]) do begin y:=a[i]; a[i]:=a[j];

а[j]:=y a[i]:=a[j]; i:=j; j:=2*j;

if (j<R)and(a[j]<a(j+l]) thenj:=j+l;

end;

end;

begin

(*задание искомого массива*) for k:=l to N do begin write('введи элемент a[',k,']=');

readln(a[k]) ;

end;

for k:=l to N do begin write(a[k], ' ');

end;

writeln;

(*алгоритм сортировки с помощью дерева*) (*построение пирамиды*) L:=(n div 2) +1; R:=n; while L>1 do begin L:=L-1; SIFT(L,R);

end;

(*сортировка*) while R>1 do begin x:=a[l]; a[l]:=a[R]; a(R]:=x;

R:=R-1; SIET(1,R);

end;

(*вывод отсортированного массива*) for k:=l to N do begin write(a[k],' ');

end;

readin;

end.

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

Программа 49

 

program 5ortirovka_6;

(*сортировка прямым обменом - пузырьковая сортировка*)

const N=5;

type item= integer; var a: array(l,.n] of item; i, j: integer;

x: item;

begin (*задание искомого массива*)

for i:=l to N do begin write('введи элемент a[',i,']= ');

readln(a(i]);

end;

for i:=l to N do begin write(a[i], ' '); „

end;

writeln;

(*алгоритм пузырьковой сортировки*) for i:=2 to n do for j:=n downto i do begin

if a[j-l]>a[j] then begin x:=a [j-1] ;a [j-1] :=a[j]; a[j]:=x;

1 end;

end;

(*вывод отсортированного массива*) for i:=l to N do begin write(a[i], ' ');

end;

readln;

end.

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

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

Программа 50

program sortirovka_7;

(*сортировка прямым обменом - шейкерная сортировка*) const N=5;

type item= integer;

var a: array[l..n] of item; i, j, k, L, R: integer; x: item;

begin (*задание искомого массива*)

for i:=l to N do begin write('введи элемент a(',i,']=');

readln(a[i]);

end;

for i:=l to N do begin write(a[i],' end;

writeln;

(*алгоритм шейкерной сортировки*) L:=2; R:=n; k:=n;

repeat

for j:=R downto L do begin

if a[j-l]>a[j] then begin x:=a[j-l];a[j-l]:=a[j];

a(j]:=x; k:=j

end;

end;

L:=k+l;

for j:=L to R do begin

if a[j-l]>a[j] then begin x:=a(j-l];

a[j-l]:=a[j]; a[j]:=x; k:=j end;

end;

R:=k-l;

until L>R;

(*вывод отсортированного массива*)

for i:=l to N do

begin write(a[i],' ');

end; readln;

end.

Пузырьковая сортировка является не самой эффективной, особенно для последовательностей, у которых «всплывающие» элементы находятся в крайней правой стороне. В улучшенной (быстрой) пузырьковой сортировке предлагается производить перестановки на большие расстояния, причем двигаться с двух сторон. Идея алгоритма заключается в сравнении элементов, из которых один берется слева (i = 1), другой -справа (j = n). Если a[i] <= a[j] , то устанавливают j = j - 1 и проводят следующее сравнение. Далее уменьшают j до тех пор, пока a[i] > a[j]. В противном случае меняем их местами и устанавливаем i = i + 1. Увеличение i продолжаем до тех пор, пока не получим a[i] > a[j]. После следующего обмена опять уменьшаем j. Чередуя уменьшение j и увеличение i, продолжаем этот процесс с обоих концов до тех пор, пока не станет i= j. После этого этапа возникает ситуация, когда первый элемент занимает ему предназначенное место, слева от него младшие элементы, а справа - старшие.

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

Программа 51

program sortirovka_8;

(*улучшенная сортировка разделением - быстрая сортировка с рекурсией*) const N=8;

type item= integer;

var a: array(l..n] of item; i: integer;

procedure sort(L,R: integer);

var i, j :• integer; x, y: item;

begin

i:=L; j:=R; x:=a[(L+R) div 2];

repeat

while a[i]<x do i:=i+l; while x<a[j] do j:=j-l;

if i<=j then begin y:=a[i]; a[i]:=a[j];

a[j]:=y; i:=i+l; j:=j-1;

end;

until i>j ;

if L<j then SORT(L,j); if i<R then SORT(i.R); ' end;

begin , . (*задание искомого массива*) for i:=l to N do begin write("Bвeди элемент a[',i, ']=');

readln(a[i]);

end;

for i:=l to N do begin write(a[i],' ');

end;

writeln;

(*алгоритм быстрой сортировки*) SORT(l,n); (*рекурсивная процедура*) (*вывод отсортированного массива*) for i:=l to N do begin write(a[i],' ');

end;

readln;

end.

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

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

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

Программа 52

program sortirovka_faila_l;

(сортировка последовательного файла) const N=8;

type item= integer;

var a: array[l..n] of item; i,k: integer; x,y: item;

fl,f2: text; (file of item);

begin

(задание искомого массива} for i:=l to N do begin write('введи элемент а[ ',i,']=');

readin(a[i]);

end;

writein; assign(fl, 'datl.dat'); rewrite(fl);

assign(f2, 'dat2.dat'); rewrite(f2);

(формирование последовательного файла) for i:=l to N do begin writein(fl,a[i]);

end;

(алгоритм сортировки с использованием вспомогательного файла) for k:=l to (n div 2) do

begin (извлечение из исходного файла и запись во вспомогательный) reset(fl); readin(fl,x);

for i:=2 to n do begin readln(fl,y);

if x>y then writein(f2,y) else begin writein(f2,x); x:=y;

end;

end;

writein(f2,x) ;

(извлечение из вспомогательного файла и запись в исходный) rewrite(fl); reset(f2); readin(f2,x);

for i:=2 to n do begin readin(f2,у);

if x>y then writein(fl,y) else begin writein(f1,x); x:=y;

end;

end;

writeln(fl,x); rewrite(f2);

end;

(вывод результата} reset(fl);

for i:=l to N do readin(f1,a[i]);

for i:=l to N do begin write(a[i], ' ');

end;

close(fl); close(f2); readin;

end.

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

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

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

Если объединить эти два массива в один, разумеется двойного размера, то программа упрощается. Пусть индексы i и j фиксируют два входных элемента с концов исходного массива, k и L - два выходных, соответствующих концам вспомогательного массива. Направлением пересылки (сменой ролей массивов) удобно управлять с помощью булевской переменной, которая меняет свое значение после каждого прохода, когда элементы а, ..., а„ движутся на место Оп+ь ..., а^ и наоборот. Необходимо еще учесть изменяющийся на каждом проходе размер объединяемых упорядоченных групп элементов. Перед каждым последующим проходом размер удваивается. Если считать, что количество элементов в исходной последовательности не является степенью двойки (для процедуры разделения это существенно), то необходимо придумать стратегию разбиения на группы, размеры которых q и г могут не совпадать с ведущим размером очередного прохода. В окончательном виде алгоритм сортировки слиянием представлен ниже.

Программа 53

program sortirovka_faila_2;

(сортировка последовательного файла слиянием} const N=8;

type item= integer; var a: arrayd. ,2*n] of item;

i, j, k, L, t, h, m, p, q,^r: integer; f: boolean;

begin

(задание искомого массива}

for i:=l to N do begin write( 'введи элемент а[ ',i,']='}!

readln(a[i]) ;

end;

writein;

(сортировка слиянием) f:=true; p:=l;

repeat

h:=l; т^п; if f then begin

i:=l; j:-n;k:=n+l; L:=2*n end else begin k:=l; L:=n;i:=n+l; j:-2*n

end; . repeat

if m>=p then q:=p else q:»m; m:=m-q;

if m>=p then r:=p else r:=m; m:=in-r;

while (q<>0) and (r00) do begin

if a[i]<a(j] then begin a[k]:=a(i]; k:=k+h; i:=i+l;q:=q-l

end else

begin a[k]:=a[j]; k:=k+h; j:=j-l;r:=r-l end;

end;

while r>0 do begin a[k]:=atj]; k:°k+h; j:=j-l; r:»r-l;

end;

while q>0 do begin

a[k]:=a[i]; k:°k+h; i:=i+l; q:=q-l;

end;

h:=-h; t:=k;k:=L; L:=t;

until m=0;

f:=not(f); p:°2*p;

until p>=n;

if not(f) then for i:=l to n do a[i]:=a[i+n] ;

(вывод результата} . for i:=l to N do begin write(a[i], ' ');

end;

readin;

end.

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

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

Контрольные вопросы и задания

 

1. Как в общем случае формулируется задача поиска? сортировки?

2. Почему внутренняя и внешняя сортировки реализуются разными методами?

3. В чем состоят принципы линейного поиска? поиска делением пополам?

4. Какие вы знаете методы внутренней сортировки?

5. Как соотносятся эффективности различных методов сортировки массивов?

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

7. Разработайте программу упорядочивания списка группы студентов:

а) методом прямого включения;

б) методом выбора;

в) методом обмена.

БЕЙСИК КАК ЯЗЫК ОПЕРАЦИОНАЛЬНО-ПРОБЛЕМНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ

У языка Бейсик (Basic) весьма своеобразная судьба. Будучи созданным для, так называемых, непрофессиональных программистов, многократно… В данном учебнике нет регулярного, «по-порядку». изложения Бейсика. Для… Даже при беглом знакомстве обращает на себя внимание некоторая «недисциплинированность» Бейсика - с точки зрения…

ВВЕДЕНИЕ В БЕЙСИК

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

PRINT "Это команда вывода", 5*5

и нажмите клавишу <Enter> (слово PRINT может заменить знак ?). Немедленно возникает ответ: 25. Команда PRINT выводит на экран результат вычислений или сообщений, заключенных в кавычки: PRINT "Привет!"- на экране появилось «Привет!» (без кавычек).

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

а=5 b=4 ?а*b

Компьютер немедленно выдаст результат: 20. , . ;

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

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

Программа 54

10 а=5 20 Ь=4

30 ? a*b

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

Если теперь ввести команду RUN, то она запустит программу на исполнение. Таким образом, последовательный набор команд с номерами строк является программой на языке Бейсик. Программировать на языке Бейсик означает научиться составлять определенный набор команд для решения поставленной вами задачи. Какие имеются команды у Бейсика и как ими пользоваться - рассмотрим ниже. Режим, при котором команды не выполняются непосредственно, а «копятся», называют косвенным. В этом режиме, основном для Бейсика, он и является языком программирования.

Следует помнить, что существует множество версий языка Бейсик и все они имеют особенности. Описать здесь все версии не представляется возможным, да и нет смысла. В каждой из современных версий Бейсика можно выделить общее подмножество, в котором отражены характерные (стандартные) грамматика, синтаксис и семантика языка. В этой связи в последующих описаниях языка рассматривается лишь выделенное авторами подмножество, справедливое для наиболее популярных в настоящее время версий Бейсика: Basic-MSX, Qbasic, Turbo-Basic. Последние версии приобрели популярность благодаря удобному интерфейсу и предоставлению пользователю ряда сервисных возможностей, присущих современным системам программирования.

 

Контрольные вопросы

1. Чем принципиально различаются прямой и косвенный режимы в Бейсике?

2. Обязательно ли в Бейсике явное описание типов данных?

БАЗОВЫЕ ОПЕРАТОРЫ

 

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

 

INPUT <список объектов ввода> - ввод данных;

PRINT < список объектов вывода> - вывод данных;

LET a= <арифметическое, логическое

или символьное выражение>

(служебное слово LET можно не писать) - присвоение;

IF <условие> THEN <оператор1>

ELSE <оператор2> - условный оператор;

GOTO <номер строки> -безусловный переход;

FOR х= 1 ТО n STEP h <оператор>

NEXTx - циклическая конструкция.

 

Часто используют, так называемый, внутренний ввод данных посредством операторов READ - DATA.

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

 

RUN - команда запуска программы на выполнение;

LIST - команда вывода текста программы на экран дисплея;

SAVE - команда сохранения текста программы в виде файла;

LOAD - загрузка ранее сохраненной программы из существующего файла.

 

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

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

DEF FNA(x,y,z)=x*x+y*y+z*z

Рассмотрим пример программы табуляции функции с целью определения ее максимального значения на заданном отрезке. Суть алгоритма заключается в вычислении значений функции Sin(.x) в 100 точках, определенных на задаваемом отрезке [а,Ь] с шагом h=(b-a)/100 и в выборе среди этих значений максимального.

Программа 55

10 REM максимум функции на отрезке

20 INPUT "введите отрезок a,b"; a, b

30 DEF fna (x) = SIN(x)

40 max = fna (a)

50 h = (b - a) / 100

60 FOR x = a TO b STEP h

70 IF max < fna(x) THEN max = fna(x)

80 NEXT x

85 CLS

90 PRINT "максимальное значение функции на отрезке ["; а;

","; Ь; "]="; max

100 END

Здесь в строке 10 - неисполнимый комментарий (который можно организовать и иначе - см. первые строки последующих программ), в строке 85 - команда очистки экрана, в строке 100 - команда «конец программы» (которую часто можно не писать без каких-либо видимых последствий).

Приведем примеры еще нескольких программ на Бейсике, являющихся аналогами программ из §3.

В следующем примере развилка организована с помощью сочетания операторов IF...THEN и GOTO. В современных версиях Бейсика есть конструкция IF...THEN...ELSE; при ее использовании программа 56 станет еще больше похожей на программу 1 (sqr(x) - корень квадратный).

Программа 56 (см. программу 1)

10 REM Квадратное уравнение

20 CLS

30 INPUT "введите коэффициенты А,В,С"; а, Ь, с

40 d = Ъ*Ь - 4*а*с

50 IF d < 0 THEN GOTO 80

60 xl = (-b + sqr(d)) / (2 * a): x2 = (-b - sqr(d)) / (2 * ay

70 PRINT "корни уравнения xl="; xl; "x2="; х2

80 GOTO 100

90 PRINT "корней нет"

100 END

В следующем примере цикл (с предусловием) организован с помощью операторов IF...THEN и GOTO.

 

Программа 57 (см. программу 5).

10 REM Машины, прибывающие на склад

20 CLS

30 num = 0: sum = О

40 IF sum >= 100 THEN GOTO 110

50 INPUT "Введите вес груза очередной машины"; w

60 sinn = sum + w

70 IF sum >= 100 THEN GOTO 90

80 num = num + 1: GOTO 90

90 PRINT "груз уже не поместится"

100 GOTO 40

110 PRINT "Количество разгруженных машин =", num

120 END

В программе 58 исходная последовательность задается в блоке данных (строка 30), а затем считывается в массив а. Отсутствие в Бейсике логических переменных преодолено с помощью текстовой переменной р. При выдаче результатов используется форматная печать PRINT USING (для дробных чисел форматы могли бы быть, например, ###.## - выдаст результат типа 345.98, ##.##лллл - выдаст результат типа 34.17Е-02). В 20-й строке оператор DIM резервирует память под массив (аналог паскалевского описания array, но без явного указания типа элементов).

 

Программа 58 (см. программу 10).

10 REM bubble (пузырек)

20 DIM a(10)

30 DATA 19, 8, 17, 6, 15, 4, 13, 2, 11, 0

40 CLS

50 PRINT "Исходный массив"

60 FOR i = 1 TO 10 STEP 1

70 READ a(i)

80 PRINT USING "»#»#"; a(i);

90 NEXT i

100 PRINT

110 p$ = "да"

120 FOR i = 10 TO 2 STEP -1

130 IF a(i) >= a(i-l) THEN GOTO 150

140 b = a(i): a(i) = a(i-l): a(i-l) = Ь: р$ = "нет"

150 NEXT i

160 IF p$ = "нет" GOTO 110

170 PRINT "Упорядоченный массив"

180 FOR i = 1 TO 10

190 PRINT USING "####"; a(i);

200 NEXT i

210 END

 

Контрольные вопросы ч задания

1. Назовите основные операторы языка Бейсик и охарактеризуйте их назначение.

2. Поэкспрементируйте в приведенных выше программах с оператором форматной печати.

 

МУЗЫКАЛЬНЫЕ ВОЗМОЖНОСТИ

В ряд версий Бейсика встроен специальный подъязык, который позволяет программировать музыку. Это делается без труда командой PLAY. В команде… Общий формат команды PLAY таков: PLAY AS, B$, CS,

Контрольные вопросы и задания

1. Составьте программу, исполняющую первые такты полонеза Огинского.

2. Разработайте компьютерный вариант популярной игры «Угадай мелодию».

ГРАФИЧЕСКИЕ ВОЗМОЖНОСТИ

Для получения графических образов необходимо задать графический экран (например, SCREEN 9) и масштаб или окно экрана WINDOW (х1,у1) - (х2,у2). Здесь…   10 *********** иыгтый лист *********************

Контрольные вопросы и задания

1. Перечислите основные операторы для построения элементов изображений и

охарактеризуйте их работу.

2. Замените в одном из приведенных выше примеров SCREEN 9 на другой экранный режим (например, 12). Что изменилось в работе программы? Если она перестала исполняться, отладьте ее.

3. Изобразите смешную «рожицу», попеременно моргающую глазами с звуковым эффектом.

4. Постройте орнаменты из геометрических фигур.

 

ОБРАБОТКА СИМВОЛЬНОЙ ИНФОРМАЦИИ

Кроме числовых значений переменные в Бейсике могут принимать значения в виде строки символов. Символьные значения (константы) заключаются в кавычки… Имя символьной (строковой) переменной отличается от обычной числовой… Начнем с примеров программ, аналогичных приведенным ранее на языке Паскаль.

Контрольные вопросы и задания

1. Охарактеризуйте использованные выше строковые функции.

 

ПОДПРОГРАММЫ

Во многих версиях Бейсика предусмотрен переключатель подпрограмм ON k GOSUB 100,200,300. Здесь k может принимать значения 1.2.3, что соответствует… Начнем с примера, аналогичного одному из тех, которые сопровождали рассказ о… Программа 72 (см. программу 17).

Контрольные вопросы

1. В чем подпрограммы Бейсика принципиально отличаются от процедур Паскаля?

РАБОТА С ФАЙЛАМИ

Для осуществления связи с внешними периферийными устройствами и с файловой системой операционной среды в Бейсике предусмотрена работа с файлами. В… 5 ' ********* работа с файлами для записи ********* 10 OPEN "аааЗ.ааГ FOR OUTPUT AS ^3

СРЕДСТВА И МЕТОДЫ ОРГАНИЗАЦИИ ДИАЛОГА

Для осуществления клавиатурного управления программой, помимо уже известных операторов ввода INPUT и вывода PRINT, используют функцию INPUT$(n),… Часто при разработке компьютерных программ необходимо использовать коды клавиш…

Контрольные задания

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

2. Разработайте собственный компьютерный вариант игры «Поле чудес».

3. Придумайте новые варианты программ шифрования и дешифрования текста.

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

5. Разработайте игру «Крестики-нолики».

6. Разработайте компьютерный вариант карточной игры «21».

 

ВЕРСИИ БЕЙСИКА

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

БЕЙСИК И ПАСКАЛЬ

Сопоставим эти популярные языки - не в деталях, а в целом. В Бейсике отсутствуют: • ряд структур данных (множества, записи, перечисляемые и интервальные… • ссылочные типы и динамические переменные (хотя в старших версиях возможно динамическое описание массивов);

ВВЕДЕНИЕ В ЯЗЫК ПРОГРАММИРОВАНИЯ СИ

ОБЩАЯ ХАРАКТЕРИСТИКА ЯЗЫКА И ПРИМЕР ПРОГРАММЫ НА СИ

 

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

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

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

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

Язык Си - компилирующего типа. Текст программы на Си, подготовленный с помощью текстового редактора, для получения объектного модуля обрабатывается компилятором, причем компиляция выполняется в два прохода. При первом проходе (претрансляцни) обрабатываются строки-директивы, начинающиеся со знака #, при втором - транслируется текст программы и создается объектный (машинный) код. Для получения загрузочного (исполняемого) модуля теперь необходимо отредактировать внешние связи объектного модуля - подсоединить к нему соответствующие библиотечные модули.

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

Программа 82

#include<stdio.h>

main() /* Простая программа */ <

int num;

num =1,'

printf ("Это моя 1-я программа на языке Си.n",num);)

 

Результат выполнения программы:

Это моя 1-я программа на языке Си.

Поясним строки этой программы.

#include<stdio.h> - подключение файла stdio.h, который является частью пакета, имеющегося в любом компиляторе языка Си и описывающего функции ввода-вывода (например, средства взаимодействия программы с терминалом). В качестве имени файла используется аббревиатура английских слов: STandard Input/Output header - стандартный заголовок ввода-вывода. Данная строка не является оператором языка Си. Символ # оказывает, что она должна быть обработана «препроцессором» компилятора. Препроцессор осуществляет некоторую предварительную обработку текста программы перед началом компиляции.

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

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

конец */, игнорируется компилятором, поскольку он не в состоянии интерпретировать язык, отличный от Си.

{ } - фигурные скобки отмечают начало и конец тела функции. Фигурные скобки применяются также для того, чтобы объединить несколько операторов программы в сегмент или «блок».

int num; - оператор описания. С помощью такого оператора мы объявляем, что будем использовать в программе переменную num, которая принимает целые (int) значения.

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

Слово int служит «ключевым словом», определяющим один из основных типов данных языка Си. Ключевыми словами называются специальные зарезервированные слова, используемые для построения фраз языка.

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

num=l; - оператор присваивания. Служит для присваивания переменной num значения 1.

printf("этo моя %d-я программа на языке Си.n",num); - вызов функции printf() форматного вывода на печать. Этот оператор выводит на печать значение переменной num в формате, содержащемся в строке в кавычках (в данном случае печатается приведенная в кавычках фраза. Символы %d указывают компилятору, где в выводимой строке и в какой форме необходимо вставить значение переменной num. Символ % сигнализирует программе, что, начиная с этой позиции, необходимо вывести значение переменной, a d указывает, что число надо печатать в десятичном формате.

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

В общем случае обращение к этой функции имеет вид:

printf(<фopмaт>,<выpaжeниel>,<выpaжeниe2>,...,<выpaжeниeN>);

где <выражение1>, <выражение2>, ..., <выражение№» - произвольные выражения, результаты которых надо вывести.

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

Каждая спецификация преобразования начинается с символа % и заканчивается символом преобразования. Между % и символом преобразования могут (не обязательно) находиться

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

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

3) строка цифр с начальным нулем - лишние позиции поля заполняются нулями, а не пробелами:

4) точка, отделяющая размер поля от последующей строки цифр (только для преобразования строк %s) - строка цифр указывает максимальное число символов, выводимых в одной строке.

Символы преобразования:

d - десятичное число со знаком;

u - десятичное число без знака;

О - восьмеричное число без знака (и без ведущего 0);

х - шестнадцатеричное число без знака (и без ведущего 0);

s - символьная строка;

с - одиночный символ;

f- действительное число в представлении с фиксированной точкой;

е-действительное число в экспоненциальном представлении;

g - наиболее короткое представление действительного числа; и др.

Функцией ввода, аналогичной функции вывода printf(), является scanf() - стандартная функция форматного ввода.

Обращение к этой функции имеет вид

sсаnf(<формат>,<&имя1>,<&имя2>,...,<&имяN>);

где <имя1>, <имя2>, ..., <имяN> - имена переменных, значения которых надо ввести. Наличие символа "&" перед каждым именем обязательно (кроме переменных строкового типа), его смысл будет пояснен ниже.

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

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

Программа 83

#include<stdio.h>

main()

(

int data,month,year; char name[15],town[15];

printf("Kaк вас зовут? "); scanf("%s",name); printf("Укажите дату, месяц и год вашего рождения.пДата:");

scanf("%d",%data) ;

printf ("Месяц (числом) :") ; scanf ("%d", Sinonth) ;

printf("Год:"); scant("%d",&year);

printf("А в каком городе? "); scanf("%s",town);

printf("Вот мы и познакомились...n");

printf("Вас зовут %s ",name); printf("Вы родились в городе %s (%d.%d.%d)",town,data, month,year);)

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

Как вас зовут? Иван

Укажите дату, месяц и год вашего рождения.

Дата : 23

Месяц (номером): 02

Год: 1054

А в каком городе? Новгород

Вот мы н познакомились...

Вас зовут Иван

Вы родились в городе Новгород

(23.02.1054)

ЭЛЕМЕНТЫ СИ: АЛФАВИТ, ИДЕНТИФИКАТОРЫ, ЛИТЕРАЛЫ, СЛУЖЕБНЫЕ СЛОВА

Перечислим основные символы языка Си, образующие его алфавит: 1) строчные латинские буквы abcdefghijklmnopqrstuvwxyz

ТИПЫ ДАННЫХ И ОПЕРАЦИИ В ЯЗЫКЕ СИ. ВЫРАЖЕНИЯ

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

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

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

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

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

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

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

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

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

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

int i = 0;

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

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

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

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

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

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

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

Примеры:

12.87 -316.12 -3.345е5 12.345e-15

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

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

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

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

Программа 84

# include<stdio.h> main()

{

char string[31] ;

scanf("%s",string) ;

printf("%s",string);

}

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

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

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

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

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

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

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

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

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

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

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

val = bah;

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

Пример: nurse = 22;

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

val = *ptr;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Программа 85

#include<stdio.h>

main()

(

int s;

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

s = -3 + 4%5 - 6; printf("%dn",s);

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

s= (7 + 6)%5/2; printf("%dn",s);

}

Результат выполнения программы: 11 1 0 1

 

Таблица 3.3 Старшинство и порядок выполнения операций

Приоритет   Операция   Название   Порядок выполнения  
Высший   () [] ++ -- (тип) *   Круглые скобки Квадратные скобки Увеличение Уменьшение Приведение Содержимое   Слева направо Слева направо Справа налево Справа налево Справа налево Справа налево  
  & - ! /~ sizeof *   Адрес Унарный минус Логическое «НЕ» Инверсия битов Размер объекта Умножение   Справа налево Справа налево Справа налево Справа налево Справа налево Слева направо  
  %   Деление Остаток   Слева направо Слева направо  
  + - Сложение Вычитание   Слева направо Слева направо  
  » « >   Сдвиг вправо Сдвиг влево Больше   Слева направо Слева направо Слева направо  
  >= < <=   Больше или равно Меньше Меньше или равно   Слева направо Слева направо Слева направо  
  = = !=   Равно Не равно   Слева направо Слева направо  
  &   Битовое «И»   Слева направо  
  ~   Битовое исключающее «ИЛИ»   Слева направо  
  |   Битовое «ИЛИ»   Слева направо  
  &&   Логическое «И»   Слева направо  
  || = +=   Логическое «ИЛИ» Операция присвания Справа налево   Слева направо Справа налево  
  - = *= /= %= Специальная форма операции присваивания   Справа налево Справа налево Справа налево Справа налево  
           

 

В программировании часто встречаются ситуации, когда надо увеличить или уменьшить значение некоторой переменной на 1. Для этого обычно выполняются оператор присваивания вида: s= s + 1;

В языке Си для этих действий существуют специальные операции:

• увеличение (++),

• уменьшение (--).

Следующие записи на языке Си являются эквивалентными:

i=i+l и i++; j=j-1 и j--;.

Символы "++" или "- -" записывается после имени переменной или перед ним.

Пример:

s + +; /* s увеличить на единицу

*/ t - -; /* t уменьшить на единицу

*/ + + а; /* а увеличить на единицу

*/ --b; /* b уменьшить на единицу */

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

Пример:

inti,j,s;

i = j = 2; /* i и j получают значение 2 */

s = (i++) + (++J);

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

i=3;j=3;s=5.

Операции увеличения ++ и уменьшения - - можно применять топько к переменным, выражения типа s=(i+j)++ являются незаконными. Кроме того, не рекомендуется:

1) применять операции увеличения или уменьшения к переменной, присутствующей в более чем одном аргументе функции,

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

Операции отношения и логические операции

Больше или равно   >=  
Больше   >  
Меньше или равно   <=  
Меньше   <  
Равно   ==  
Неравно   !=  
Логическое «и»   &&  
Логическое «или»   ||  
Отрицание «не»   !  

 

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

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

Старшинство операции && выше, чем у операции ||.

Программа 86

#include<stdio.h>

main()

(

int x, у, z;

x=l; y=l; z=0; x=x&&y||z; printf("%dn",x);

x=x|| !y&&z; printf("%dn",x) ;

x=y=l; z=x++-l; printf("%dn",x);printf("%dn",z) ;

z+=-x++ + ++y; printf("%dn",x) ; printf("%dn",z);

z=x/++x; printf("%dn",x); printf("%dn",z) ;

}

Результат выполнения программы: 1 1 2 0 3 0 4 1

Битовые операции

 

Битовое «и» Битовое «или» Битовое исключающее «или» Сдвиг влево Сдвиг вправо Инверсия битов (унарная операция) & | ~ « » ~  

 

Программа 87

#include<stdio.h>

main()

(

int у, х, z, k;

x=03; y=02; z=01; k=x|y&z; printf("%dn",k) ;

k=x|y&~z; printf("%dn",k) ;

k=x^y&~z; printf("%dn",k) ;

k=x&y&&z; printf("%dn",k) ;

x=l; y=-l;

k=!x|x; printf("%dn",k) ;

k=-x|x; printf("%dn",k) ;

k=x^x; printf("%dn",k) ;

x<<=3; printf("%dn",x);

y<<=3; printf("%dn",y);

y>>=3; printf("%dn",y);

}

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

3 3 1 1 1 -1 0 8 -8 8 1 9 1

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

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

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

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

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

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

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

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

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

 

ОПЕРАТОРЫ. УПРАВЛЯЮЩИЕ КОНСТРУКЦИИ ЯЗЫКА

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

Операторы состоят из выражений. Выражение представляет собой объединение операций и операндов. Операндом называется то, над чем выполняется операция.

Оператор присваивания

Общий вид оператора присваивания <Имя> = <Выражение>;

Пример: int x, у, а;

х=5;

у=х*2+7;

а=у/4;

Переменные получают значения: х=5, у=17, а=4.

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

Пример: а=(у=(х=5)*2+7)/4.

В результате переменная х получает значение 5, причем это значение участвует в дальнейших вычислениях. Затем выполняется умножение (5*2), сложение (10+7) и еще одно присваивание (у=17). Переменная у получает значение 17, после чего производится деление (17/4), результат которого присваивается переменной а.

В языке Си для компактной записи операторов присваивания имеются специальные операции

+=_=*= /= %= Так, следующие две записи на языке Си эквивалентны: i = i+2 и i+=2.

Пример:

int x,y;

х=у=5;

х+=2; /* х увеличить на 2, результат х=7 */ у- =3; /* у уменьшить на 3. результат у=2 "7 х*=у; /* х умножить на у, результат х=14 */ .- х/=++у; /* разделить х на увеличенный у; результат у=3,х= 12/3 */

Операция присваивания сама по себе имеет значение (равное значению выражения, стоящего справа от знака "=") и может входить в выражения.

Оператор if/else

Общий вид оператора:

If(<выражение>) <оператор1>

else <оператор2>;

Здесь часть "else <оператор2>" является необязательной, можно применять и одиночный оператор

If(<выражение>) <оператор1>;

Вначале вычисляется значение выражения. Оператор выполняется, если значение выражения истинно. Если выражение ложно (его значение равно нулю), и если есть часть с else, то выполняется оператор2.

Программа 88 (нахождение наибольшего из двух целых чисел а и b)

#include <stdio.h>

main( )

{

int a,b;

printf("Введите первое число -"); scanf("%d", &a) ;

printf("Введите второе число - "); scanf("%d", &b) ;

if (a==b)

printf("Заданные числа равны.n");

else

if (a>b)

printf("Первое число больше второго.");

else printf("Второе число больше первого.");

}

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

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

Например, в конструкции

if(n>0)

if(a>b) z=a;

else z=b;

else относится к внутреннему if. Если требуется отнести else к внешнему if, то необходимо использовать фигурныескобки:

if(n>0)

{

if(a>b) z=a;

} else z=b;

Часто приходится осуществлять выбор более чем из двух вариантов. Чтобы учесть это, конструкция if/else расширяется конструкцией else/if. Распространенный способ выбора по значению из нескольких вариантов:

 

If (<выражение1>) <оператор1>

else if <выражение2>) <оператор2>

else if (<выражение3>) <оператор3>

else <oпepaтop>;

 

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

В языке Си имеется компактный способ записи одного из видов оператора if/else. Он называется «условным выражением» или «тернарной операцией». Такое выражение выглядит в общем виде так:

 

В1?В2:ВЗ

 

Сначала вычисляется значение выражения В1. Если оно отлично от нуля (истинно), то вычисляется значение выражения В2, которое и становится значением условного выражения. В противном случае вычисляется значение выражения ВЗ, и оно становится значением условного выражения.

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

 

max = (a>b)?a:b;

и нахождение абсолютногозначения числа:

х = (у<0)?-у : у;

 

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

 

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

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

{

case <константа1>: <список операторов1>;

case <константа2>: <список операторов2>;

case <константаN>: <список операторовN>;

default: <список операторов>;

}

Оператор-переключатель выполняется следующим образом. Вычисляется значение выражения в скобках, приведенного после ключевого слова switch, затем программа просматривает список меток, указанных после слов case, до тех пор, пока не находит ту, которая соответствует данному значению. Далее программа переходит к выполнению оператора, расположенного в этой строке. Если подходящей метки не найдется и если существует строка с меткой default:, то будет выполнятся оператор, помеченный этой меткой. В противном случае произойдет переход к оператору, расположенному за оператором switch.

Метки, имеющиеся в операторе switch, должны быть константами или константными выражениями (выражениями, операнды которого константы) целого или символьного типа. Запрещается использовать в качестве метки переменную. Значением выражения в скобках должна быть величина целого или символьного типа. Список операторов варианта может быть либо пустым, либо заканчиваться одним из операторов завершения (break, continue, goto, return). Если у вариантов нет общих частей, то рекомендуется каждый вариант завершать оператором break.

Программа 89

#include<stdio.h>

main ()

{

intc;

printf("Введите цифру от 1 до 7:");

c=getchar() ;

printf("nСоответствующий день недели:");

switch (с)

{

case '1': (printf("nПонедельник!");break;}

case'2': {printf("nВторник!");break;}

case '3': (printf("nСреда!");break;}

case '4': {printf("nЧетверг!");break;}

case '5': (printf("nПятница!");break;)

case '6': {printf("nСуббота!");break;}

default:printf("nBocкpeceньe!") ;

}

}

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

 

Оператор цикла for

Оператор

 

for (<оператор1>;<выражение>;<оператор2>) <оператор3>;

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

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

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

Например, следующая конструкция

 

for (i=l; i<n; i++) <оператор>;

 

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

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

Например,цикл

for (i=l ;;i++) {

}

является бесконечным.

Существуют разнообразные возможности применения цикла for:

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

 

for(n=10;n>0;n-)

printf("%d n",n);

 

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

 

for (n=2;n<60;n+=2)

printf("%dn",n);

 

3) можно вести подсчет при помощи символов, а не только чисел

 

for(ch='a';ch<='z';ch++)

printf("Beличинa кода ASCII для %с равна %d.n",ch,ch);

 

4) можно проверить выполнение некоторого произвольного условия, отличного от условия, налагаемого на число итераций

 

for(num=l;num*num*num<216;num++)

 

5) можно сделать так, чтобы значение некоторой величины возрастало не в арифметической, а в геометрической прогрессии

 

for(n=l;n<1500;n*=3)

printf("-%d n",n);

 

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

 

for(x= I ;у<=75;у=5*(х++)+10)

printf("%d, %dn",x,y);

 

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

ans=2;

for(n=3;ans<=25;)

ans=ans*n;

Тело цикла for(;;)

printfC"*n");

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

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

 

for(printf("3апоминайте введенные числа!n");num = 6;)

scanf('"%d",&num);

printf("ЭTO как раз то, что я хочу!n");

 

в этом фрагменте первое сообщение оказывается выведенным на печать один раз, а затем осуществляется прием вводимых чисел до тех пор, пока не поступит число 6;

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

 

for(n=l;n< l000;n+=delta)

 

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

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

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

1. for(i=l;i<10;i++)

for(j=l;j<10;j++)

<оператор>

2. for(i=l,j=l;i<10,j<10;i++,j++)

<оператор>

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

 

Программа 90

# include<stdio.h>

main()

{

int x,y,z,v,u,zero();

for(x=l,y=l,z=l;x<10;x++,y++,z++)

printf("x=%d y=%d z=%dn", х, y, z);

}

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

x=l y=l z=l

x=2 y=2 z=2

x=3 y=3 z=3

x=4 y=4 z=4

x=5 y=5 z=5

x=6 y=6 z=6

x=7 y=7 z=7

x=8 y=8 z=8

x=9 y=9 z=9

Оператор цикла while

В общем виде цикл while записывается так:

 

while (<выражение>) <оператор>;

 

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

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

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

 

Пример 1. Алгоритм Евклида.

 

Программа 91

#include<stdio.h>

main()

{

int x,y;

scanf("n%d",&x); scanf("n%d",&y) ;

while (x!=y)

{

if (x>y) x=x-y; else y=y-x;

)

printf("n%d",x);

)

Пример 2. Проверить, содержит ли квадрат натурального числа n цифру 3.

 

Программа 92

#include<stdio.h>

main()

{

int i,n,a;

scanf("%d",&n); n=n*n; i=10000;

while(i>=l)

{

a=n/i; /* если результат целочисленного деления n/i

меньше 1,то а=0 */

n=n-a*i;

if(a==3) goto abc; else i=i/10;

)

printf("цифры 3 в числе n^2 нет");

goto cd;

abc: printf("цифра 3 в числе n^2 есть");

cd: ;

}

Оператор цикла do/while

В языке Си имеется также конструкция цикла с постусловием (условие на выходе), где истинность условия проверяется после выполнения каждой итерации цикла. Этот подход реализуется с помощью цикла do/while.

Тело цикла do/while всегда выполняется по крайней мере один раз, поскольку проверка условия осуществляется только после его завершения.

Форма записи:

 

do <оператор>

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

 

Оператор break

Оператор break дает возможность выйти из операторов цикла for, while, do/while, а также из переключателя switch без проверки условия. Оператор break приводит к немедленному выходу из самого внутреннего охватывающего его цикла или из переключателя.

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

Программа 93

# include<stdio.h>

main()

{

int x=l,y,z;

printf("Мы будем вычислять значение функции y=2*x+zn");

printf("Введите значение z:"); scant("%d",&z);

while(x<1000)

(

y=2*x+z;x++; if y=100 ( printf(= 100n"); break; }

} if y=100

printf("Цикл закончен!!!") ;

else printf ("Цикл закопчен!!! Но y<>lOO.");

}

 

Наличие оператора break позволяет использовать «бесконечные циклы». В ряде случаев весьма удобно записать заголовок цикла без всякого условия в виде

for(;;),

 

а выход из цикла оформить с помощью операторов break.

 

Оператор продолжения continue

 

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

Программа 94

#include<stdio.h>

main()

(

int x,y,z;

printf("Мы будем вычислять значение функции y=2*x+zn");

printf("в промежутках [1;6] и [13;18].");

printf("Введите значение z= "}; scant("%d",&z) ;

for(x=l;x<18;x++)

{

if ((x>6) and (x<13))

continue;

y=2*x+z; printf(= %d, у= %d",x,y);

}

}

Оператор безусловного перехода goto

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

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

Форма:

 

goto <метка>;...

<метка>: <оператор>

 

Составные операторы и блоки

 

Символы "{" и "}" используются для объединения описаний и операторов в составной оператор или блок, так что все конструкции, заключенные в фигурные скобки, оказываются синтаксически эквивалентными одному оператору. Точка с запятой никогда не ставится после первой фигурной скобки, которая завершает блок.

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

 

Пример /* I -й вариант */

 

Программа 95

#include<stdio.h>

main()

{

int sam,index=0;

/* В цикл включен только оператор присваивания. Печать данных */ /* будет произведена только один раз - после завершения цикла */

while(index++<10)

sam=10*index+2;

printf("sum= %dn",sam) ;

)

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

 

sam = 102

 

/* II -й вариант */

 

Программа 96

 

#include<stdio.h>

main ()

(

int sam,index=0;

/* Наличие фигурных скобок гарантирует, что оба оператора */

/* являются частью цикла while, и печать результатов будет */

/* производиться на каждом шаге работы цикла. Весь составной*/

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

/* составной частью оператора while. */

while(index++<10)

{

sam=10*index+2; printf("sum = %dn",sam);

}

}

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

 

sam = 12

sam = 22

sam = 32

sam = 42

sam = 52

sam = 62

sam = 72

sam = 82

sam = 92

sam = 102

 

Пустой оператор состоит только из точки с запятой (;) и используется для обозначения пустого тела управляющего оператора.

СТРУКТУРА ПРОГРАММЫ НА СИ. ПОНЯТИЕ О ФУНКЦИЯХ

Программа на языке Си представляет собой набор последовательно описанных функций (процедуры и подпрограммы в языке Си считаются частным случаем…   Тип_функцни Имя (<список аргументов>)

КЛАССЫ ПАМЯТИ

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

ФУНКЦИИ ВВОДA-ВЫВОДА

Средства ввода-вывода не являются составной частью языка Си. Имеется ряд библиотечных функций Си. обеспечивающих стандартною систему ввода-вывода…   #include <stdio.h>.

Некоторые функции буферизованной сисгемы ввода-вывода

  Для работы с файлами в Си используются функции буферизованной системы… Функция fopen() вызывается так:

Значения режимов в Турбо-Си

  Например, для того чтобы открыть файл с именем test для записи, можно…  

ДИРЕКТИВЫ ПРЕПРОЦЕССОРА

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

СИ И ПАСКАЛЬ

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

Контрольные вопросы и задания

 

1. Охарактеризуйте назначение и особенности языка Си.

2. Какие символы образуют алфавит языка Си?

3. Что называется лексемами, идентификаторами, литералами? Приведите примеры.

4. Какие типы данных используются в Си? Приведите примеры описания переменных.

5. Охарактеризуйте арифметические, логические и битовые операции Си.

6. Какие разновидности оператора присваивания имеются в Си?

7. Как на языке Си можно описать ветвление?

8. Охарактеризуйте возможности цикла for. Приведите примеры.

9. Какие логические циклы имеются в Си? Приведите примеры их использования.

10. Какие операторы управления имеются в Си?

11. Какова структура программы на Си? Что такое функция?

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

13. Для чего в качестве аргументов функций используются указатели? Приведите примеры.

14. Для чего в Си существуют классы памяти?

15. Что такое потоки и файлы в Си?

16. Охарактеризуйте стандартные функции ввода и вывода в Си.

17. Что такое препроцессор Си? Приведите примеры директив препроцессора.

 

ОСНОВЫ ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ НА ЯЗЫКЕ ПРОЛОГ

 

ОБЩИЕ СВЕДЕНИЯ

 

Язык Пролог является представителем семейства языков логического программирования и в сравнении с традиционными языками программирования, предназначенными для записи алгоритмов, такими как Бейсик, Фортран, Паскаль, Си, обладает существенными особенностями:

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

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

• Пролог требует особого стиля мышления программиста,что затрудняет изучение его теми, кто уже привык к процедурному программированию, поэтому, так называемые, практические программисты не стремятся переходить на этот язык, что мешает росту популярности Пролога; однако во многих странах (Японии, Англии, Франции, Германии, Израиле и т.д.) расширяется практика применения Пролога в образовании как первого изучаемого языка программирования; переход к процедурным языкам типа Паскаля в этом случае трудностей не вызывает.

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

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

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

1) объявление фактов об объектах и отношениях между ними;

2) определение правил взаимосвязи объектов и отношений между ними;

3) формулировка вопроса об объектах и отношениях между ними.

Имена - это последовательности букв и цифр, начинающиеся с буквы (строчной !). Системы программирования на Прологе для компьютеров допускают использование лишь латинских строчных и прописных букв: а .. z, A .. Z. Использование русских строчных и прописных букв: а .. я, А .. Я не допускается. При практической работе с интерпретатором рекомендуется, чтобы смысл имен оставался понятным, использовать в качестве имен запись русских слов латинскими буквами. В данном параграфе мы будем записывать все именарусскими буквами, чтобы сделать смысл программ наиболее понятным. При запуске этих программ в «англо-язычных» системах программирования нужно заменять русские буквы в именах на латинские.

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

 

Рис.3.1 5. Классификация типов данных Пролога

 

Примеры специальных атомов:

: - ( обозначающая импликацию),

? (вопрос, обозначающий отрицание),

! (предикат отсечения, рассматривается далее).

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

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

Списки представляют собой объединение элементов произвольных видов, разделенных запятыми и заключенных в квадратные скобки. Списки отличаются от структур тем, что количество элементов может меняться при выполнении программы. Примеры списков: [1,3,5,7], [красный,желтый,зеленый].

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

• константа сопоставляется только с равной ей константой;

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

• переменная сопоставляется с константой или с ранее связанной переменной (и становится связанной с соответствующим значением);

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

Примеры: 5 сопоставляется с 5, «имеет» сопоставляется с «имеет», «сергей» не сопоставляется с «юрий», «имеет(сергей,машина)» не сопоставляется с «имеет(сергей, телевизор)», «имеет(сергей,машина)» сопоставляется с «имеет(Х,машина)»,в этом случае переменная Х получает в качестве значения атом «сергей».

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

Пример 1. Факты, описывающие телефонные номера:

 

телефон(иванов,т561532).

телефон(петров,т642645).

телефон(сидоров,т139833).

 

Это означает: телефон Иванова - 56-15-32 и т.п. Заметим, что перед цифрами номера идет буква ''т". Она делает номер телефона литерной константой, так как числа 561532,642645, 139833 слишком велики, чтобы быть числовыми константами.

Пример 2, Факты, описывающие студентов:

 

нравится(сергей,рэп).

нравится(юрий,джаз).

носит(сергей,блейзер).

носит(юрий,пиджак).

 

Это означает: «Сергею нравится рэп», «Юрию нравится джаз» и т.п.

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

 

<голова правила> : - <список подцелей>

 

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

 

крутойпарень(Х):- нравится(Х,рэп),носит(Х,блейзер).

 

Это означает «любой Х - крутой парень, если Х нравится рэп и Х носит блейзер». Еще примеры правил:

 

ест(Х,Y): - пища(Y), любит(Х,Y). («Каждый Х ест любой Y, если Y - пища,

и Х любит Y»)

владелец(А,В) : - купил(А,В). («Любой А есть владелец каждого В, если А купил В»)

 

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

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

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

 

?-телефон(иванов,т123456).

 

и ответ будет «Нет», так как константа т123456 не согласуется ни с одним фактом.

Если к базе знаний (пример 3)

 

нравится(сергей ,рэп).

нравится(юрий,джаз).

носит(сергей,блейзер).

носит(юрий,пиджак).

крутойпарень(Х) : - нравится(Х,рэп),носит(Х,блейзер).

 

задать вопрос

 

?-крутойпарень(юрий).

 

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

 

нравнтся(юрий,рэп), носит(юрий,блейзер).

 

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

 

? - крутойпарень(сергей).

 

будет получен ответ «Да», так как в этом случае противоречий при согласовании вопроса и базы знаний не возникает.

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

 

? - телефон(иванов,Х).

 

к базе знаний примера 1 на экране появится сообщение Х=т561532 и будет дан ответ «Да».

Если к базе знаний примера 3 задать вопрос в форме

 

?- крутойпарень(А).

 

то свободная переменная А в вопросе сопоставляется со свободной переменной Х в правиле и совмещается с ней, т.е. становится одним и тем же. В результате резолюции согласно правилу произойдетзамена

 

крутойпарень(А)

 

на

 

нравится(А,рэп), носит(А,блейзер),

 

а затем предикат «нравнтся(А.рэп)» успешно согласуется с фактом «нравится(сергей,рэп)>>, и при этом переменная А конкретизируется значением «Сергей»; от вопроса теперь остается «носит(сергей,блейзер)», а в базе знаний имеется соответствующий факт. Ответ: «Да» и на экране появится значение присутствовавшей в вопросе переменной А:

 

А=сергей.

 

Отметим, что машина «не понимает» используемых в программе имен: «нравится», «носит», «сергей» и т.д. Мы могли бы вместо них использовать любые другие обозначения. Для интерпретатора Пролога существенны только совпадения и различия имен, а также связи между предикатами, устанавливаемые с помощью конъюнкций и импликаций. Осмысленные имена мы будем использовать только для того, чтобы облегчить чтение и понимание программ самим себе. Однако, в Прологе существуют предопределенные имена (встроенные предикаты), которые позволяют выполнить арифметические операции, сравнения, графические построения, ввод-вывод и другие полезные операции как побочный продукт выполнения программы. Встроенные предикаты Arity-Prolog описаны в справке по системе программирования, вызываемой нажатием клавиши F1.

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

 

АЛГОРИТМ ВЫПОЛНЕНИЯ ПРОГРАММ НА ПРОЛОГЕ

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

К процессу выполнения программы на Прологе

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

РЕКУРСИЯ

Существует целый класс задач, в которых отношения между объектами можно определить, только пользуясь самими определяемыми соотношениями.… Пример: рекурсивное определение натурального числа: 1) 1- натуральное число;

ПРЕДИКАТ ОТСЕЧЕНИЯ И УПРАВЛЕНИЕ ЛОГИЧЕСКИМ ВЫВОДОМ В ПРОГРАММАХ

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

ОБРАБОТКА СПИСКОВ

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

РЕШЕНИЕ ЛОГИЧЕСКИХ ЗАДАЧ НА ПРОЛОГЕ

Целью всего предшествующего изложения была подготовка к данному разделу -решению содержательных логических задач на Прологе, т.е. задач… Рассмотрим пример: нарисовать конверт, не отрывая карандаша от бумаги и не… Введем обозначения, как показано на рис. 3.17. Ребра графа обозначены буквами а, б, в ... (литерные константы),…

Контрольные вопросы и задания

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

2. Каковы этапы программирования на Прологе?

3. Какие типы данных допускает Пролог?

4. В чем существо операции сопоставления?

5. Как реализуются вопросы к программе на Прологе?

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

7. Для чего служит предикат отсечения?

8. Для чего служат списки и как они задаются?

9. Опишите на Прологе:

а) свою родословную, определите бабушек, дедушек, прабабушек, прадедушек и т.д.;

б) телефонную книгу;

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

г) европейские государства ( население, площадь и т.д.);

д) таблицу дат и событий русской истории;

е) небольшой словарь для перевода с русского языка на иностранный язык, который вы изучаете;

ж) ведомость зачета вашей группы;

з) успеваемость вашей группы (дайте определение «отличника»);

и) каталог книг в библиотеке.

10. Запишите на Прологе правила, являющиеся решением следующих заданий:

а) даны два числа а и b, получите их сумму, разность, произведение;

б) дана длина ребра куба, найдите объем куба и площадь его боковой поверхности;

в) дан радиус основания r и высота цилиндра h, найдите его объем и площадь боковой поверхности;

г) даны стороны а и b параллелограмма, а также угол между ними, найдите диагонали параллелограмма и его площадь;

11. Вычислите значения выражений:

а)2х+3у+4

б) (2х+8у+4)/2

в) у-х^2

г) x^2+xy+y^2

д) х/2+5у

е)x^2+3y^2

ж) 5(34х-у)

12. Напишите программы, выполняющие операции над списками:

а) объедините два списка, найдите МАХ и удалите его;

б) удалите из списка элемент, найдите длину оставшегося списка;

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

г) обратите список, найдите последний и предпоследний элементы;

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

найдите длину оставшегося списка;

е) проверьте, имеются ли в списке повторяющиеся элементы, и все их удалите;

ж) удалите из списка все элементы, равные последнему, найдите длину оставшегося списка;

з) объедините два списка, найдите MIN и удалите его;

и) обратите список, найдите МАХ и удалите его;

к) к списку добавьте обращенный второй список, найдите длину результата;

л) отсортируйте список, используя метод пузырька.

13. Напишите программу, решающую задачу о волке, козе и капусте.

14. Напишите программу, решающую задачу, аналогичною задаче 13, о трех туземцах, трех миссионерах и двухместной лодке.

15. Напишите программу, решающею задачу об обходе препятствия.

16. Напишите программу, определяющую положение «шах королю».

17. Напишите программу, определяющую, как шахматному коню попасть с поля

А на поле В.

18. Напишите программу, определяющую, как разлить 10 л молока по 5 л, пользуясь бидонами на 3, 7 и 10 л.

19. Напишите программу, аналитически дифференцирующую элементарную

функцию.

20. Напишите программу, играющую в «крестики и нулики» на бесконечной

плоскости.

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

года, например 7 марта и 9 сентября.

22. Напишите программу, решающую задачу о четырех ферзях на поле размером

4х4 клетки.

 

ВВЕДЕНИЕ В ФУНКЦИОНАЛЬНОЕ ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ЛИСП

НАЗНАЧЕНИЕ И ОБЩАЯ ХАРАКТЕРИСТИКА ЯЗЫКА

Язык Лисп - один из первых языков обработки данных в символьной форме. Его название происходит от английских слов «list processing » - «обработка… Используемый в Лиспе, так называемый, функциональный подход к программированию… Программы строятся из логически расчлененных определений функций. Определения состоят из управляющих структур,…

ОСНОВНЫЕ ЭЛЕМЕНТЫ ПРОГРАММЫ НА ЛИСПЕ. СПИСКИ

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

ФУНКЦИИ

Функции в Лиспе аналогично математическим функциям ставят в соответствие элементам из одного множества - определения (аргументов) - единственный… В языке Лисп принята единообразная префиксная форма записи, при которой как…  

Базовые функции обработки S-выражений

  Отметим, что в программах на Лиспе надо тщательно отличать значения от их… В Лиспе константы обозначают самих себя. Выражения типа (* 2 2) сразу вычисляются. Чтобы избежать нежелательного…

ФОРМЫ. УПРАВЛЯЮЩИЕ КОНСТРУКЦИИ В ЛИСП-ПРОГРАММЕ

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

Работа с контекстом

• QUOTE или блокировка вычисления,

• вызов функции и лямбда-вызов,

• предложения LET и LET*;

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

• предложения PROG1, PROG2 и PROGN;

Разветвление исполнения

• условные предложения COND, IF, WHEN, UNLESS,

• выбирающее предложение CASE;

Итерации

циклические предложения DO, DO*, LOOP, DOTIMES, DOUNTIL;

Передачи управления

• предложения PROG, GO и RETURN;

Динамическое управление вычислением

Эти управляющие формы (кроме QUOTE и лямбда-вызова, а также вызовов функций), в основном, используются в теле лямбда-выражений, определяющих… Предложение LET используется для создания связи переменных внутри формы:  

РЕКУРСИЯ И ЦИКЛ В ПРОГРАММАХ НА ЛИСПЕ

В «чистом» функциональном программировании организация повторяющихся вычислений должна происходить лишь с помощью условных предложений и определения…   (defun ! (n) (if(= п 0) 1 (* п (! (. п 1))))) .

ВВОД-ВЫВОД ДАННЫХ

До сих пор рассматривался ввод и вывод данных в лисповских программах через параметры функций и свободные переменные. Для организации диалога… Для вывода результатов можно использовать функцию PRINT. Это функция с одним… Например:

ПРИМЕР ПРОГРАММИРОВАНИЯ НА ЛИСПЕ

 

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

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

1) за один раз можно перенести только один диск;

2) больший по размеру диск нельзя положить на меньший;

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

1) перенести со стержня А N-1 дисков на вспомогательный стержень С;

5) перенести нижний диск со стержня А на стержень В;

6) перенести со стержня С N-1 дисков на стержень В.

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

Программа 130

(defun ханойские-башни (высота)

(рrоgn (перенос "а "Ь "с высота) "готово))

ХАНОЙСКИЕ-БАШНИ

(defun перенос (из в вспомогательный n)

(cond

((= п 1) ; ветвь 2

(выведи из в) (t (перенос из ; ветвь1 вспомогательный

в

(- n 1))

(выведи из в)

(перенос вспомогательный ; ветвь 3

в

из

(- п 1)))))

ПЕРЕНОС

(defun выведи (из в)

(format t "~S -> ~S~%"из в))

ВЫВЕДИ

 

Вызов функции «ханойские башни» дает такое решение:

(ханойские-башни 3)

А->В

А->С

В->C

А->В

С->А

С->В

А->В

ГОТОВО

 

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

 

СВОЙСТВА СИМВОЛОВ

В Лиспе могут быть определены, так называемые, свойства символов. Список свойств имеет вид:   (имя_свойства1 значение1 имя_свойства2 значение2 . .. имя_свойстваN значениеN).

Контрольные вопросы и задания

1. В чем состоит основная идея функционального программирования?

2. Что называется символом в программировании на Лиспе?

3. Что такое атомы в программах на Лиспе?

4. Что такое список?

5. Охарактеризуйте примитивные функции языка Лисп.

6. Как можно связать с символом некоторое значение? Как поместить значение в ячейку памяти?

7. Приведите примеры 1-выражений в Лиспе.

8. Как можно определить функцию и дать ей имя для последующих вызовов в Лиспе?

9. Охарактеризуйте управляющие формы в Лиспе.

10. Какую роль играет в функциональном программировании рекурсия?

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

 

ВВЕДЕНИЕ В ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ

 

ОСНОВНЫЕ ПОЛОЖЕНИЯ

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

ОСНОВЫ ОБЪЕКТНОГО ПРОГРАММИРОВАНИЯ В СИСТЕМЕ ТУРБО-ПАСКАЛЬ

Объект в ТурбоПаскале - это структура данных, содержащая поля данных различных типов и заголовки методов и обобщающая структуру «Запись» (record). … Синтаксис описания объекта: <ИмяПотомка>=

ОБОЛОЧКА TURBO-VISION

Объектно-ориентированный подход позволяет создавать объектные среды, библиотеки объектов для последующего использования при разработке программ.… Turbo-Vision - это оболочка для создания оконченных интерфейсов программ в… Объектно-ориентированная библиотека Turbo-Vision включает

СРЕДА ОБЪЕКТНОГО ВИЗУАЛЬНОГО ПРОГРАММИРОВАНИЯ DELPHI

  Созданный в 1970 г. Н. Виртом, язык программирования Паскаль не оставался… Позднее были добавлены более сложные конструкции: Н. Вирт предложил структуру программы из модулей unit, для…

СИСТЕМА ОБЪЕКТНОГО ПРОГРАММИРОВАНИЯ SMALLTALK

Система Smalltalk представляет собой совокупность взглядов, методов и средств проектирования и эксплуатации современных систем обработки информации,… Smalltalk принадлежит к классу, так называемых, объектно-ориентированных… При решении задач на объектно-ориентированном языке используется абстрактная модель обработки данных

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

 

Сообщение Описание (Класс)
1+2 Бинарное сообщение   объект-адресат: имя сообщения: объект-параметр: результат:   1 (МалоеЦелое) + 2 (МалоеЦелое) 3 (МалоеЦелое)  
" привет' вПозиции: 5 Ключевое сообщение   объект-адресат: имя сообщения: объект-параметр: результат:   ' привет' (Строка) в Позиции: 5(МалоеЦелое) е (Символ)  
5факториал Унарное сообщение   объект-адресат: имя сообщения: объект-параметр: результат:   5(МалоеЦелое) факториал ------------------------ 120(БольшоеПоложительное Целое)  
5между: 3 и:7 Ключевое сообщение   объект-адресат: имя сообщения: объект-параметр: результат:   5(МалоеЦелое) между: и: 3, 7 (МалоеЦелое) истина    
1+2 Бинарное сообщение   объект-адресат: имя сообщения: объект-параметр: результат:   1 (МалоеЦелое) + 2 (МалоеЦелое) 3 (МалоеЦелое)    
' привет' вПозиции: 5 Ключевое сообщение   объект-адресат: имя сообщения: объект-параметр: результат:   'привет' (Строка) в Позиции: 5(МалоеЦелое) е (Символ)    
5факториал Унарное сообщение   объект-адресат: имя сообщения: объект-параметр; результат.   5(МалоеЦелое) факториал ------------------------- 120(БольшоеПоложнтельноеЦелое)    
5между: 3 и:7 Ключевое сообщение   объект-адресат: имя сообщения: объект-параметр: результат;   5(МалоеЦелое) между: и: 3, 7 (МалоеЦелое) истина    
           

 

Классы объектов и методы. Объект обладает свойствами, поведением и состоянием. Ему можно присвоить имя. Объекты с одинаковыми свойствами и поведением объединены в классы. Каждый объект входит в один класс и называетсяэкземпляром класса.

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

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

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

У каждого класса существует два типа методов:

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

• методы экземпляра (сообщения к экземплярам данного класса).

Один из основных классов языка Smalltalk - класс «Величина». Экземплярами этого класса являются объекты, которые можно измерять, сравнивать, упорядочивать и вычислять. К этому классу , в частности, относятся символы, числа, дата и время. Эта группа классов имеет следующую иерархию.

Символ. Экземпляры класса «Символ» являются расширенным множеством символов во внутреннем коде со значениями от 0 до 255.

Дата. Экземпляры класса «Дата» представляют собой даты, такие как

ЯНВАРЬ 1, 1980.

Время. Экземплярыкласса «Время» представляют собой время, такое как 10 или

12:15.

Число. Система поддерживает три вида числа:

• целое;

• вещественное с плавающей точкой (если есть сопроцессор);

• дробь - рациональные целое.

Символ обозначается с помощью знака $, например,

$a,$9,$M.

В языке Smalltalk имеется 6 типов переменных:

экземплярные переменные, существуют в течение всего жизненного цикла объекта экземпляра класса, в заголовке которого они описаны;

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

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

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

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

псевдопеременные, специально зарезервированные идентификаторы, указывающие на специальные объекты.

Для присвоения значения какой-либо переменной(исключая псевдопеременные)используется операция : : = (присваивание).

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

Класс «Объект» содержит методы сравнения: =, ~=.Все классы, являющиеся подклассами этого класса, наследуют эти методы.Помимо этого, каждый класс может определить для себя другие методы сравнения. Например, классы из группы «Величина» имеют еще несколько методов: > < <= >=. Аналогичные методы определены для класса «Строка».

Результат сравнения объектов - экземпляр класса «Логический». Этот класс имеет два подкласса: Истина и Ложь. Экземплярами этих классов являются псевдопеременные истина и ложь соответственно. Задание новых экземпляров этих классов приводит к ошибке.

Классы «Истина» и «Ложь» имеют следующий набор методов:

и: - истина, если адресат и параметр - «истина», в противном случае -«ложь» (существует аналогичное бинарное сообщение - &)

или: - ложь, если адресат и параметр - «ложь», в противном случае -«истина» (существует аналогичное бинарное сообщение -|).

На основе этих методов реализованы условные конструкции. В общем виде условная конструкция имеет вид:

<условие>

если условие истинно, выполнить <выражение1> если условие ложно, выполнить <выражение2>.

На языке ООП эта конструкция записывается таким образом:

<объект-адресат класса Истина или Ложь>

если Истина:<объект-параметр1>

если Ложь: <объект-параметр2>.

В данном случае <объект-параметр> представляет собойблок сообщений.

Возможна конструкция

<условие> еслиИстина: <объект-параметр>,

а также

<условие> еслиЛожь: <объект-параметр>.

 

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

Блок может иметь аргументы. В этом случае сообщение для его вычисления будет ключевым:

[блок] значение: <значение аргумента>

 

Программирование на SmalTalk. Язык Smalltalk обладает богатым набором циклических конструкций, отраженных в табл. 3.9.

Программирование на SmallTalk состоит не только в использовании предопределенных в языке объектов и их методов, но и в задании новых методов и объектов.

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

1) что будет объектом-адресатом для создаваемого метода;

2) каким будет объект-параметр;

3) что будет результатом, возвращаемым новым методом. Таким образом определяется сообщение, обращающееся к новому методу. Затем можно описать и добавить в соответствующий класс сам создаваемый метод по форме

имя Сообщения

"комментарии"

| локальные переменные сообщения |

^ возвращаемый результат.

 

Таблица 3.9

Циклические конструкции языка Smalltalk

  В качестве примера рассмотрим определение метода поиска максимальногоиздвух… Объектом-адресатом будет целое число, следовательно сам метод будет принадлежать к классу «Целое». Параметром будет…

Контрольные вопросы и задания

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

2. В чем состоит смысл объектно-ориентированной методологии проектирования программ?

3. Каковыосновные шаги разработки программы в объектно-ориентированной методологии?

4. Как описываются объекты в Турбо-Паскале?

5. В чем отличие методов объектов от обычных процедур? Как методы задаются?

6. Что такое инкапсуляция, наследование и полиморфизм? Приведите примеры.

7. Каково назначение и возможности объектно-ориентированной оболочки Turbo-Vision?

8. Охарактеризуйте основные объекты и методы Turbo-Vision.

9. В чем состоят отличия визуального объектного программирования от более традиционного?

10. Каковы концепции, положенные в основу языка SmallTalk?

11. Какие типы сообщении возможны в языке SmallTalk?

12. Охарактеризуйте основные встроенные в SmallTalk классы.

13. Какие управляющие конструкции существуют в языке SmallTalk?

14. Как определяются новые методы? объекты?

15. Как организуется рекурсия в программах на SmallTalk?

 

 

Дополнительная литература к главе 3

 

1. Абрамов С. А. и др. Задачи по программированию. - М.: Наука, 1988.

2. Абрамов В. Г., Трифонов Н.П., Трифонова Г.Н. Введение в язык Паскаль. - М.:

Наука,1988.

3. Алексеев В.Е. и др. Вычислительная техника и программирование. Практикум по программированию. - М.: Высшая школа, 1991.

4. Братка И. Программирование на языке Пролог для искусственного интеллекта.-М: Мир, 1990.

5. Брукс Ф.П. Как проектируются и создаются программные комплексы. /Очерки по системному программированию/. - М.: Наука, 1979.

6. Буч Г. Объектно-ориетированное программирование с примерами применения. - Киев: Диалектика, 1992.

7. Ван Тассел Д. Стиль, разработка, эффективность, отладка и испытание программ.-М.: Мир,1981.

8. Вирт Н. Алгоритмы и структуры данных. - М.: Мир, 1989.

9. Bupт Н. Алгоритмы + структура данных = программы. - М.: Мир, 1985.

10. Герман О. В. Введение в теорию экспертных систем и обработку знаний. -Минск, Дизайн-ПРО, 1995.

11. Гудман С, Хидетниеми С. Ведение в разработку и анализ алгоритмов. - М.:

Мир,1981.

12. Дантеманн Д., Мишел Д., Тейлор Д. Программирование в среде Delphy. -Киев: НИПФ-ДиаСофтЛтд., 1995.

13. Дарахавелидзе П., Марков Е. Delphy - среда визуального программирования. -СПб.: BVH-Санкт-Петербург, 1996.

14. Дайтибегов Д.М., Черноусое Е.А. Основы алгоритмизации и алгоритмические языки. - М.: Финансы и статистика, 1992.

15. ДжонсЖ.,Харроу К. Решение задач в системе Турбо-Паскаль. - М.: Финансы и статистика,1991.

16. Дмитриева М.В., Кубенский А.А. Элементы современного программирования.-С.-Пб.: Изд-во С.-П. университета, 1991.

17. Довгаль С.И., Литейное Б.Ю., Сбитнев A. Персональные ЭВМ: Турбо-Паскаль V 7.0. Объектное программирование. Локальные сети./Уч. пособие. - Киев:

Информсистема сервис, 1993.

18. Зуев Е.А. Программирование на языке TURBO PASCAL 6.0 - 7.0. - М.: Радио и связь,1993.

19. Зуев Е.А. Практическое программирование на языке Турбо-Паскаль о.и, 7.0. -М.: Радио и связь, 1994.

20. Кетков Ю.Л. Диалог на языке бейсик для мини- и микро-ЭВМ. - М.: Наука, 988.

21. Кнут Д. Искусство программирования. Т. 1, 2, 3. - М.: Мир, 1976 - 1978.

22. Липаев В. В. Проектирование программных средств. - М.: Высшая школа, 1990.

23. Ляхович В. Ф. Руководство к решению задач по основам информатики и вы-- делительной техники. - М.: Высшая школа, 1994.

24. Майерс Г. Искусство тестирования программ. - М.: Финансы и статистика, 1982.

25. МалпасДж. Реляционный язык ПРОЛОГ и его применение. - М.: Наука, 1990.

26. Пильщиков В. Н. Сборник упражнений по языку Паскаль. - М.: Наука, 1989.

27. Поляков Д. Б., Круглое И. Ю. Программирование в среде Турбо-Паскаль. - М.:

А/О Росвузнаука, 1992.

28. Роджерс Д. Ф., Адамс Дж.А. Математические основы машинной графики. -М: Машиностроение, 1980.

29. Рубенкинг И. Турбо-Паскаль для Windows. Т.1,2. - М.: Мир-СК Ферлаг Ин-тернешнл, 1994.

30. Семакин И. Г. Лекции по программированию. - Пермь: Изд-во ПГУ, 1996.

31. Сергиевский М. В., Шалашов А. В. Турбо-Паскаль 7.0. - М.: Машиностроение, 1994.

32. Уэйт М., Прата С., Мартин Д. Язык Си. - М.: Мир, 1988.

33. Федоров А., РогаткинД. Borland Pascal в среде Windows. - Киев: Диалектика, 1993.

34. ФоксДж. Программное обеспечение и его разработка. - М.: Мир, 1985.

35. Хендерсон. Функциональное программирование.

36. Хьюз Дж., Мичтом Дж. Структурный подход к программированию. - М.:

Мир,1980.

37. Шикин Е. В. Начала компьютерной графики. - М.: Диалог-МИФИ, 1994.

38. Язык компьютера. SoftWare. Computer languages./Пер. с англ. Под ред. В.М.Курочкина. - М.: Мир, 1989.

 


 

ЧАСТЬ ВТОРАЯ

ГЛАВА 4 ВЫЧИСЛИТЕЛЬНАЯ ТЕХНИКА

«... Ибо это недостойно совершенства Человеческого - подобно рабам тратить часы на вычисления».

Готфрид Вильгельм Лейбниц

ВВЕДЕНИЕ

 

Настоящая глава посвящена принципиальным вопросам устройства и функционирования ЭВМ.

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

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

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

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

 

ИСТОРИЯ РАЗВИТИЯ ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ

НАЧАЛЬНЫЙ ЭТАП РАЗВИТИЯ ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ

Все началось с идеи научить машину считать или хотя бы складывать многоразрядные целые числа. Еще около 1500 г. великий деятель эпохи Просвещения… Рис. 4.1. Блез Паскаль (1623 - 1662) и его счетная машина

НАЧАЛО СОВРЕМЕННОЙ ИСТОРИИ ЭЛЕКТРОННОЙ ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ

Подлинная революция в вычислительной технике произошла в связи с применением электронных устройств. Работа над ними началась в конце 30-х годов… Первой действующей ЭВМ стал ENIAC (США, 1945 - 1946 гг.). Его название по… Практически одновременно велись работы над созданием ЭВМ в Великобритании. С ними связано прежде всего имя Аллана…

ПОКОЛЕНИЯ ЭВМ

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

Поколения ЭВМ

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

ПЕРСОНАЛЬНЫЕ КОМПЬЮТЕРЫ

Небольшие компьютеры, предназначенные для одного пользователя, который в каждый момент решает не более одной задачи, использовались в…   Рис. 4.7. Микропроцессор (сильно увеличенная фотография в…  

И НЕ ТОЛЬКО ПЕРСОНАЛЬНЫЕ КОМПЬЮТЕРЫ...

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

ЧТО ВПЕРЕДИ?

В 90-х годах микроэлектроника подошла к пределу, разрешенному физическими законами. Фантастически высока плотность упаковки компонентов в… В совершенствовании будущих ЭВМ видны два пути. На физическом уровне это… Наконец, уже сегодня огромную роль играют сети ЭВМ, позволяющие разделить решение задачи между несколькими…

Контрольные вопросы

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

2. Какие ключевые события из истории развития вычислительной техники в XVII - XIX веках вам известны из дополнительной литературы?

3. Какие принципы Ч.Бэббидж заложил в основу идеи об автоматических цифровых вычислительных машинах?

4. Почему электронная техника оказаласьболее подходящей для созданияАЦВМ, чем механическая и электромеханическая?

5. Каковы годы создания и названия первых ЭВМ конца 40-х - начала 50-х годов XX века?

6. Что вы знаете об истории развития отечественной вычислительной техники?

7. По каким показателям ЭВМ относят к тому или иному поколению?

8. Каковы совокупные признаки ЭВМ I-, 2-, 3-, 4-го поколений?

9. Что такое интегральная схема? большая интегральная схема?

10. Что имеют в виду, говоря о быстродействии ЭВМ? О каких операциях идет речь?

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

12. В чем главное отличие процедурных языков высокого уровня от непроцедурных?

13. В чем состоит идея параллелизма в исполнении программ и процессов?

14. Как эволюционировало программное обеспечение общего назначения?Чтовходит в него сегодня?

15. В чем состоит принцип унификации линий ЭВМ?

16. В чем причины роста компьютерного паркапосле появления персональных ЭВМ?

17. Какие характеристики позволяют отнести компьютер к категории «персональный»?

18. Какие категории компьютеров существуют в настоящее время?

19. Что может значить термин «рабочая станция»?

 

АРХИТЕКТУРА ЭВМ

  Термин «архитектура» используется в популярной литературе по вычислительной… Начать целесообразно с происхождения термина. Слово «архитектура» в изначальном своем смысле используется в…

КЛАССИЧЕСКАЯ АРХИТЕКТУРА ЭВМ II ПРИНЦИПЫ ФОН НЕЙМАНА

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

СОВЕРШЕНСТВОВАНИЕ И РАЗВИТИЕ ВНУТРЕННЕЙ СТРУКТУРЫ ЭВМ

В предыдущем разделе была описана классическая структура ЭВМ, соответствующая вычислительным машинам первого и второго поколений. Естественно, что в… Как отмечалось выше, появление третьего поколения ЭВМ было обусловлено… Наличие интеллектуальных контроллеров внешних устройств стало важной отличительной чертой машин третьего и четвертого…

ОСНОВНОЙ ЦИКЛ РАБОТЫ ЭВМ

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

СИСТЕМА КОМАНД ЭВМ И СПОСОБЫ ОБРАЩЕНИЯ К ДАННЫМ

Важной составной частью архитектуры ЭВМ является система команд. Несмотря на большое число разновидностей ЭВМ, на самом низком («машинном») уровне… 1. Команды передачи данных (перепись), копирующие информациюиз одного места в… 2. Арифметические операции, которым фактически обязана своим названием вычислительная техника. Конечно, доля…

Контрольные вопросы

1. Что такое архитектура ЭВМ? Сформулируйте определение и расшифруйте его.

2. Проведите аналогию между архитектурой ЭВМ и обыденным понятием архитектуры. Что общего и в чем различие?

3. Что общего и в чем различие между понятиями «внутреннее устройство ЭВМ»

и «архитектура ЭВМ»?

4. Что такое семейство ЭВМ? Приведите примеры.

5. Объясните, в чем состоит принцип программной совместимости. Что такое совместимость снизу вверх (поясните на примере одного из известных вам семейств)?

6. Имеют ли отношение к понятию «архитектура» следующие факты:

а) в компьютере применяются микросхемы динамического (или статического) ОЗУ?

б) компьютер имеет расширенную память?

в) компьютер имеет (не имеет) общую шину, по которой передается информация между его устройствами?

г) в процессоре INTEL 80386 к системе команд добавлено по сравнению с INTEL 80286 несколько новых?

д) объем памяти новой модели ЭВМ увеличен вдвое?

7. Перечислите основные принципы фон-неимановской архитектуры и разъясните их содержание.

8. Чем обусловлено в ЭВМ широкое применение двоичной системы?

9. Можно ли. посмотрев на содержимое отдельно взятой ячейки памяти, определить, какая информация в ней записана: число, команда, символы?

10. Из каких основных рлов состоит ЭВМ?

11. Что такое счетчик команд и какую роль он играет?

12. Что такое магистраль (шина)?

13. Какие преимущества имеет магистральная структура ЭВМ?

14. Что представляет собой контроллер внешнего устройстваи какую роль он играет в процессе обмена информацией?

15. Какую роль играет в компьютере видеопамять?

16. Оцените необходимый объем видеопамяти для следующихрежимов:

а) текстовый режим (24 строки по 80 символов);

б) графический черно-белый режим при размере экрана 640х200 точек;

в) 16- цветный режим при том же размере экрана.

17. Что такое режим прямого доступа к памяти?

18 Как называется элементарная составляющаямашинной команды? От чего может зависеть скорость выполнения команды?

19. Опишите основные этапы выполнения машинной команды. Особое внимание

обратите на роль счетчика команд.

20. Что такое конвейерная обработка команд и какие преимущества она имеет?

21. Какие основные операции входят в состав системы команд любой ЭВМ?

Кратко охарактеризуйте каждою из названных групп.

22. Объясните, почему возможно создать компьютер с уменьшенным (неполным)

набором команд и что это дает.

23. Из каких частей состоит команда ЭВМ? Кратко охарактеризуйте их назначение.

24. Чем различаются одно-, двух- и трехадресные команды?

25. Что такое адрес ОЗУ?

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

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

27. Укажите отличия в устройстве памяти ЭВМ третьего поколения по сравнению с двумя предыдущими.

 

АРХИТЕКТУРА МИКРОПРОЦЕССОРОВ

 

ИСТОРИЯ РАЗВИТИЯ МИКРОПРОЦЕССОРОВ

В 1959 г. инженеры фирмы «Texas Instruments» разработали способ, как разместить внутри одного полупроводникового кристалла несколько транзисторов и… Таким образом, оказывается, что первые микропроцессоры (МП) появились совсем… История создания первого в мире микропроцессора достаточно поучительна. Летом 1969 г. японская компания «Busicom»,…

ВНУТРЕННЯЯ ОРГАНИЗАЦИЯ МИКРОПРОЦЕССОРА

Перечислим основные функции микропроцессора: • выборка команд из ОЗУ; •декодирование команд (т.е. определение назначения команды, способа ее исполнения и адресов операндов);

РАБОТА МИКРОПРОЦЕССОРА С ПАМЯТЬЮ. МЕТОДЫ АДРЕСАЦИИ

Адресное пространство МП состоит из множества ячеек памяти ОЗУ, из которых он может брать информацию или засылать ее. Как говорилось выше, начиная с… 00000 00001 ... FFFFF (как принято, записываем их в шестнадцатеричнои системе; адрес последнего байта есть 1024*1024 -1=1 048 576 - 1 =…

ФОРМАТЫ ДАННЫХ

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

ОБРАБОТКА ПРЕРЫВАНИЙ

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

РАБОТА МИКРОПРОЦЕССОРА С ВНЕШНИМИ УСТРОЙСТВАМИ

Выше было описано, как процессор обменивается информацией с ее наиболее важным и оперативным источником - памятью. Рассмотрим теперь, как МП может… 1) устройства ввода-вывода включаются в общее адресное пространство; 2) устройства ввода-вывода имеют собственное адресное пространство.

ПРИМЕР: СИСТЕМА КОМАНД ПРОЦЕССОРОВ СЕМЕЙСТВА PDP

 

В качестве примера реально существующего процессора, удобного для более детального изучения, возьмем процессор серии машин, созданных фирмой DEC (США) и известных под названием PDP-11 (в нашей стране аналогичные процессоры использовались в семействах 16-разрядных мини- и микро-ЭВМ «Электроника», ДВК, БК, а также в школьном компьютерном классе УКНЦ; всего таких машин было выпущено в СССР до 1,3 млн. штук и примерно столько же в США). Это семейство мини- и микро-компьютеров - одно из самых долгоживущих: первая машина этой серии была выпущена в 1970 г., а прекращение выпуска было запланировано фирмой DEC на 1997 г.

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

Процессор машин серии PDP и его отечественные аналоги (при дальнейшем изложении будем все это обширное семейство для краткости называть «процессор PDP») с точки зрения программиста устроен довольно просто. Он состоит из восьми регистров общего назначения (РОН) и особого регистра, в котором отображается текущее состояние процессора (в иностранной литературе его принято обозначать PSW - Processor Status Word). Любой из регистров общего назначения может быть использован в командах на равных основаниях. Вместе с тем имеются два выделенных регистра, содержимое которых процессор использует для собственных нужд. Прежде всего следует назвать регистр R7, выполняющий роль счетчика команд, в котором хранится адрес следующей инструкции программы. Другим выделенным регистром является указатель стека R6, используемый при запоминании информации в момент вызова подпрограмм и при переходе к обработке прерывания.

Остальные 6 регистров, обозначаемые RO, Rl. R2, R3, R4, R5, программист может полностью использовать по своему усмотрению. Имеется только одно (непринципиальное) исключение: в обширной системе команд PDP существует лишь единственная, и то достаточно экзотическая, команда (MARK), работающая с регистром R5.

Следует отметить, что и выделенные регистры процессора R6 и R7 могут быть использованы в любой команде наряду с обычными РОН RO-R5. Например, допускается переписать информацию из R7 в R3 и тем самым сообщить программе адрес памяти, в котором находится следующая команда программы. Такой прием очень часто используется программистами для автоматической «самонастройки» на те адреса ОЗУ, в которых оказалась загруженной программа. Интересно, что такого простого доступа к содержимому программного счетчика многие процессоры не имеют.

Рис. 4.14. Схема регистра состояния процессора PDP

 

Регистр состояния процессора PSW, как и все РОН, является 16-битным. Его особенностью является то, что каждый его бит имеет самостоятельное значение и может использоваться процессором отдельно от других. В управляющих битах регистра постоянно отображается информация о выполняемых результатах (отрицательность, равенство нулю и т.п.), а также о состоянии процессора в данный момент (например, один из битов позволяет разрешать или запрещать обработку прерывании). Из всех используемых битов (не все 16 бит регистра состояния задействованы!) наиболее используемы два; их принято обозначать N и Z. Управляющий признак N (Negative) отражает знак результата операций: если число отрицательное, то N = 1, неотрицательное - N = 0. Бит Z (Zero) говорит о равенстве или неравенстве нулю результата: в первом случае Z = 1, во втором - Z = 0. Путем несложных рассуждений можно убедиться в том, что из шести известных математических соотношений

=, < , > , ≤ , ≥ , ≠

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

Другие управляющие биты, изображенные на рисунке, используются следующим образом. Бит Р - задание маскировки прерываний от внешних устройств (Р = 0 -прерывание состоится. Р = 1 - замаскировано). Бит Т - «признак ловушки»; при Т = 1 после прерывания запускается специальная системная программа, позволяющая на этапе отладки текущей программы осуществлять режим трассировки. Бит V -признак переполнения разрядной сетки при арифметической операции (если это произошло, устанавливается V = 1); бит С - аналогично при переполнении разрядной сетки при логической операции, сопровождаемой сдвигом кода. Описанные управляющие признаки широко используются для реализации разветвлений программы в зависимости от полученных результатов, анализа причин прерываний и других действий.

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

 

КОП КМА N POH
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
КОП KMA1 N POH1 KMA2 N POH2
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
         

Рис.4.15. Формат одноадресной команды (вверху) и двухадресной (внизу). КОП - код операции. КМА - код метода адресации, N РОН - номер регистра общего назначения (код адреса)

 

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

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

 

Таблица 4.2

Наиболее важные команды процессора PDP

  Во-вторых, переходы делятся на безусловные и условные. Безусловные, как.… В таблице у команд перехода для наглядности указаны адреса или величина смещения в словах. Именно таким образом и…

Некоторые способы указания операндов в командах

  В качестве иллюстрации разберем выполнение команды MOV(R1)+,RO По этой команде сначала считывается информация из памяти по адресу, находящемуся в R1. После чтения значение R1…

Контрольные вопросы и задания

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

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

3. Что такое разрядность МП? Чем она определялась и как изменялась? Какую максимальную разрядность имеют современные процессоры?

4. Вспомните, что вы читали о новых моделях микропроцессоров.

5. Какие микропроцессоры вы знаете? Известен ли вам тип процессора в компьютерах, с которыми вы имеете дело?

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

7. Что представляет собой микропроцессор с точки зрения программиста?

8. Каковы функции микропроцессора в целом?

9. Какие функции могут выполнять регистры процессора?

10. Вспомните основной цикл работы процессора ЭВМ. Какую роль в нем играет счетчик адреса команд?

11. От чего зависит объем контролируемого 32-разрядной ЭВМ адресного пространства?

12. Что такое методы адресации? Какие методы адресации ОЗУ вы знаете?

13. Объясните, как работает метод косвенной адресации.

14. Приведите 3-4 варианта сегментных адресов, указывающихна одну и ту жеячейку памяти.

15. Охарактеризуйте наиболее употребимые форматы данных.

16. Каким образом процессор может адресоваться к устройствам ввода-вывода? Что такое порт ввода- вывода?

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

18. Что такое прерывание и как оно работает?Проанализируйте приведенные в тексте аналогии и попробуйте придумать собственные.

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

20. Каковы функции регистра слова состояния процессора?

21. Какие способы адресации используются в процессоре PDP?

22. В чем особенности реализации условных и безусловного переходов в процессоре PDP?

23. Как организована работа с операндами?

 

УЧЕБНАЯ МОДЕЛЬ МИКРОКОМПЬЮТЕРА

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

СТРУКТУРА УЧЕБНОГО МИКРОКОМПЬЮТЕРА

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

СИСТЕМА КОМАНД

Перейдем к самому важному - системе команд, которые умеет выполнять учебный процессор. Как мы уже знаем, машинная команда состоит из операционной и… Итак, рассмотрим структуру команды «Е97» (рис. 4.20). В зависимости от… Наиболее простой формат команд из всех возможных, имеют две -нет операции (ее код 0) и останов (код F). Как видно из…

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

Кстати, так обстоит дело и в языках высокого уровня.

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

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

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

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

9C0D

Исполнять эту команду процессор будет так. Прежде всего, он уменьшит SP на 2 и запомнит по полученному адресу текущее содержимое PC (вспомните, что счетчик к этому времени уже будет показывать на следующую команду). Затем последует переход по адресу 30, считанному ранее из второго слова команды. Таким способом мы попадем в подпрограмму, надежно спрятав в стеке адрес основной программы, куда нужно вернуться. Обсудим теперь, как произойдет возврат.

В конце любой подпрограммы должна стоять команда 0С00 или 0D00. Встретив ее. процессор извлечет из стека занесенное туда ранее значение и поместит его в PC. При этом он увеличит SP на два, освободив ненужную более ячейку памяти в стеке. Таким образом, прерванноена время выполнение основной программы продолжится с нужного места.

Примечание. Команды с кодами 0С и 0D тождественныи их младшие 8 бит неиспользуются.

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

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

Команда с кодом Е1 выполняет над единственным операндом ОП1 логическую операцию НЕ, т.е. заменяет нулевые биты единицами и наоборот (инверсия).

Команды с кодами Е2 - Е9 обеспечивают работу со стеком. Так, при коде операции Е2 ОП1 заносится в стек, а при ЕЗ - считывается оттуда. Например, вот как можно поменять местами содержимое регистров R1 и R2 с использованием стека:

 

0000 0Е21 записать R1 в стек

0002 0Е22 записать R2 в стек

0004 0Е31 считать значение из стекав R1

0006 0Е32 считать значение из стека в R2

0008 0F00 останов

 

Команды Е4 и Е5 позволяют изменять значение SP на величину ОП1, что часто бывает полезно при работе со стеком, например, при освобождении в нем сразу нескольких «этажей». По кодам Е6 и Е7 можно задать новое значение SP и прочитать его текущее значение в ОП1. Наконец, наиболее экзотические из этой группы команды Е8 и Е9 сохраняют в стеке и восстанавливают для последующего анализа регистр состояния процессора PS. Эти команды замечательны тем, что обрабатывают вполне определенный операнд, поэтому содержимое ОП1 в команде значения не имеет; договоримся заполнять его нулем.

Осталось рассмотреть последнюю группу команд - сдвиги. Их коды ЕА - ЕС. Все они осуществляют сдвиг кода в ОП1 на один разряд влево или вправо в зависимости от значения ДКОП. Полезно помнить, что сдвиг влево эквивалентен умножению, а вправо - делению на два.

Команда ЕС, называемая арифметическим сдвигом, отличается от обычного сдвига ЕВ тем, что старший знаковый разряд при арифметическом сдвиге сохраняет свое значение, например:

Исходное значение ОП 1: 1111 0000 1111 0000

Результат команды ЕВ: 0111 1000 0111 1000

Результат команды ЕС: 1111 1000 0111 1000.

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

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

 

АДРЕСАЦИЯ ДАННЫХ

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

РАБОТА С ВНЕШНИМИ УСТРОЙСТВАМИ

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

ПРИМЕРЫ ПРОГРАММ

Пример 1. Вычислить полную поверхность параллелепипеда со сторонами А, В и С. Считать, что исходные значения находятся в ячейках ОЗУ. Результат также поместить в ячейку памяти.

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

S=2*(A*B+A*C+B*C)

Для упрощения программы выражение удобно представить в виде S = 2 * [А * (В + С) + В * С]

 

Программа 134

 

0000 01ЕО (22) => R0 В => R0

0002 0022

0004 0101 R0 => Rl В => Rl

0006 02Е0 R0 + (24) => R0 В + С

0008 0024

000А 05Е0 R0 * (20) => R0 A * (В + С)

000С 0020

000Е 05Е1 Rl * (24) => Rl В * С

0010 0024

0012 0210 R0 + Rl => R0 A * (В + С) + В * С

0014 0200 R0 + R0 => R0 2 * [A * (В + С) + В * С]

0016 010Е R0 => (26) результат => S

0018 0026

001A 0F00 останов

……….

0020 0002 А

0022 0003 В

0024 0004 С

0026 0034 S

 

Примечание. Не забывайте, что ответ 34 в памятиЭВМ представленв шестнадцатеричной системе. В десятичной, как и положено, получится 52.

Пример 2. Организовать ввод латинских букв таким образом: программа принимает латинскую букву и обрабатывает ее так, чтобы она всегда была заглавной.

Решение. Главная «хитрость» решения состоит в том, чтобы понять, чем отличаются заглавные буквы от строчных. Для этого из таблицы ASCII, приведенной в главе 1, выберем наугад одну из букв и выпишем в двоичном виде коды заглавного и строчного символов. Например, для буквы R получим

R 0101 0010

r 0111 0010

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

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

1101 1111 =DF,

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

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

 

Программа 135

0000 0E6D 26 => SP установка указателя стека

0002 0026

0004 9C0D вызов п/п 40FE ввод символа (без эхо-печати!)

0006 40FE

0008 0101 R0 => Rl сохранить введенный символ

000A 07D0 DF and R0 => R0 сделать букву заглавной

000C 00DF

000E 9C0D вызов п/п 4088 вывести результат

0010 4088

0012 0F00 останов

Пример 3. Найти максимум из трех чисел, находящихся в регистрах Rl, R2 и R3. Переписать наибольшее из них в R0.

Решение. Сначала максимальное из чисел в Rl и R2 занесем в R0. После этого, если R3 окажется больше R0, «исправим положение», переписав в качестве ответа R3.

 

Программа 136

0000 0412 сравнить R2 с Rl

0002 3D04 если < 0, то РС=РС+4 к записи Rl (к 0008)

0004 0120 R2 => R0 запомнить R2

0006 1D02 РС=РС+2 обход второй ветви (к 000A)

0008 0110 Rl => R0 запомнить Rl

000A 0403 сравнить R3 с R0

000C 3D02 если < 0, то РC=РС+2 к выходу (к 0010)

000E 0130 R3 => R0 запомнить R3

0010 0F00 останов

 

Пример 4. Найти сумму первых 100 натуральных чисел.

Говорят, такую задачу некогда решил в уме юный Гаусс, когда учился в школе. Мы будем решать задачу «в лоб», т.е. честно суммировть с помощью компьютера. Решение. Поместим в R3 обрабатываемое в данный момент число N (меняется от 1 до 100), а в R0 - результирующую сумму S. Зададим им начальные значения и будем циклически добавлять к S текущее значение N. Признаком окончания цикла будет ситуация, когда N >100.

Программа 137

 

0000 2113 1 => R3 1 => N

0002 2100 0 => R0 0 => S

0С04 0230 R0 + R3 => R0 S = S + N

0006 2213 R3 + 1 => R3 N=N+1

0008 04D3 сравнить R3 с 100 сравнить N и 100

000A 0064

000C 6DF6 если ≤0, то PC=PC+F6 если N≤100,

к повторению (000E + FFF6 = 0004)

000E 0F00 останов

 

Пример 5. Вывести на экран весь латинский алфавит от А до Z. Решение. Разместим в RO выводимый латинский символ, первоначальное значение которого будет «А» (код 65 = 41h). Вывод будем осуществлять обращением к соответствующей подпрограмме ПЗУ. Для перехода к следующему символу алфавита достаточно прибавить 1 к коду текущего символа (очень похоже на переход к следующему числу в предыдущем примере). Остается только проверить, не выходит ли вновь полученный символ за латинский алфавит, т.е. не превышает ли его код 5Ah («Z»), и, если ответ будет «да» (превышает), то закончить процедуру.

Программа 138

0000 0E6D 26 => SP установка указателя стека

0002 0026

0004 01D0 41 => R0 код первого символа

0006 0041 («А»)

0008 9C0D вызов п/п 4088 вывод символа

000А 4088

000С 2210 R0 + 1 => R0 следующий символ

000Е 04D0 сравнитьR0 с 5А его код ≤ «Z»?

0010 005А («Z»)

0012 6DF4 если ≤0, то PC=PC+F4 к повторению (0008)

0014 0F00 останов

 

Пример 6. В памяти, начиная с адреса 001А, хранится некоторый текст, длина которого равна 15 (Fh) байтам Определить номер первого, совпадающего с образцом, символа в тексте. При отсутствии требуемого символа результат равен 0 (это практически полный аналог функции POS в Паскале).

Решение Поместим в R1 счетчик символов, в R2 - адрес текущего символа. Затем будем сравнивать каждый символ текста с образцом в R0 и в случае совпадения прервем выполнение цикла. При несовпадении будем продолжать цикл до теx пор, пока счетчик не превысит Fh, т.е. не станет равным 10h Если цикл завершится по выполнении этого условия, то символ-образец найти не удалось и в качестве ответа в R1 следует занести 0.

Программа 139

 

0000 2111 1 => R1 номер символа

0002 01D2 1А => R2 адрес начала текста

0004 001А

0006 С460 сравнить R0b с (R2)b сравнить символ с образцом

0008 5D0C если = 0, то РC=РС+2 выход при совпадении (к 0016)

000А 2211 R1 + 1 => R1 увеличить номер символа

000С 2212 R2 + 1 => R2 вычислить следующий адрес

000Е 04D1 сравнить R1 с 10 текст не закончился?

0010 0010

0012 4DF2 если ≠ 0, то PC=PC+F4 нет - к повторению (к 0006)

0014 2101 0 => R1 при отсутствии символа - 0

0016 0F00 останов

0018 0000

001А 4854 «ТН» текст

001С 5349 «IS» «THIS IS MY TEXT»

001E 4920 «I»

0020 2053 «S »

0022 594D «MY»

0024 5420 «Т»

0026 5845 «EX»

0028 0054 «Т»

 

НЕКОТОРЫЕ СПРАВОЧНЫЕ ДАННЫЕ ПО Е-97

МОД   коп   ОП1   ОП 2   Пояснения   х   …   МОД коп ОП1 Пояснения х …  

Б. Двоичные коды модификатора МОД для переходов

0000 - возврат из подпрограммы 0001 - безусловный переход 0010 - N=0 (>=0)

Г. Кодирование операндов

 

Контрольные вопросы и задания

1. Назовите основные функциональные устройства учебного компьютера «Е97» и охарактеризуйте их назначение.

2. Какие виды памяти существуют в «Е97» и как они адресуются?

3. Сопоставьте адресацию к байтам и к словам. Какие вам удалось заметить различия?

4. В ОЗУ, начиная с адреса 300, хранятся следующие байты: 00, 01, 02, 03. Какое слово будет прочитано по адресу 302?

5. В ОЗУ начиная с адреса 300 хранятся слова 0102 и 5301. Совпадают ли находящиеся в адресах 301 и 302 байты?

6. Что такое BIOS и какова его роль в современном компьютере? Знаете ли вы название фирмы, написавшей BIOS для вашего компьютера?

7. Какие значения получат управляющие признаки, если результат операции получится равным 1?0?

8. Какие внутренние регистры содержит учебный процессор «Е97» и каково их назначение?

9. Из каких частей состоит полная команда «Е97»?

10. Какие форматы может иметь команда «Е97»? Приведите примеры команд на каждый из форматов.

11. Напишите программы вычисления нескольких арифметическихвыражений.

12. Чем различаются переходы с кодами С и D и как они работают?

13. Если рассмотренную в одном из примеров команду 1D06 поместить в ячейку с адресом не 42, а 4Е, то какая команда будет выполняться следующей?

14. Каково должно быть смещение в команде перехода к адресу56, если сама команда имеет адрес 4Е? 5Е?

15. Какие значения можетпринимать модификатор в командах перехода и что они обозначают?

16. Напишите программу, которая переписывает в R3 наименьшее из чисел, хранящихся в регистрах R1 и R2.

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

18. Как процессор обращается к подпрограмме и выходитиз нее обратно?

19. Какие операции можно делать с указателем стека?

20. Чем отличаются сдвиги с кодами операций ЕВ и ЕС? Приведите пример, когда эти различия незаметны.

21. Какие методы адресации реализованы в «Е97»? Приведите по два-три примера на каждый из них.

22. Как кодируются следующие операнды: R2? (R3)? константа 345? ячейка 66?

23. Объясните, как будет выполняться команда 0572 и какие значения требуется знать, чтобы предсказать ее результат.

24. Чем различается выполнение команд 0301 и 0345?

25. Изменится ли значение регистра R0 при выполнении команды 0Е14?

26. Сколько слов занимает команда (40) - (50) Ю (40) и как она кодируется?

27. Как записывается команда, умножающая на 3 содержимое ячейки 50?

28. Какой командой можно присвоить регистру R2 некоторое значение?-

29. Что такое «короткая константа» и когда она бывает полезна?

30. Для команд 25АЗ и 3653 напишите эквивалентные, используя метод адресации констант по счетчику команд.

31. Почему среди списка полезных команд с «короткой константой» нет умножения на 2?

32. Подробно объясните с точностью до бита кодировку команды С470. ,,

33. Что такое порт ввода-вывода?

34. Как называются порты, имеющиеся у каждогоиз внешних устройств «Е97»?

35. Перечислите все известные вам порты ввода-вывода, реализованные в учебном компьютере «Е97». и их номера.

36. Каков стандартный алгоритм обмена процессора с внешним устройством? Какую роль играет в нем бит готовности?

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

 

ВНЕШНИЕ УСТРОЙСТВА ЭВМ: ФИЗИЧЕСКИЕ ПРИНЦИПЫ И ХАРАКТЕРИСТИКИ

Внешние (или, по другому, периферийные) устройства ЭВМ прошли огромный путь в своем развитии. Существуй машина времени, инженеры-конструкторы и…  

ВНЕШНИЕ ЗАПОМИНАЮЩИЕ УСТРОЙСТВА

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

УСТРОЙСТВА ВВОДА ИНФОРМАЦИИ

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

УСТРОЙСТВА ВЫВОДА ИНФОРМАЦИИ

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

Характеристики SVGA-монитора

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

Контрольные вопросы и задания

1. Перечислите основные устройства ввода и вывода информации.

2. На каких физических принципах работают различные устройства ввода/вывода?

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

 

ЛОГИЧЕСКИЕ ОСНОВЫ ФУНКЦИОНИРОВАНИЯ ЭВМ

 

ЛОГИКА ВЫСКАЗЫВАНИЙ. ЭЛЕМЕНТАРНЫЕ ЛОГИЧЕСКИЕ ФУНКЦИИ

Люди, далекие от техники, часто смотрят на ЭВМ и другие цифровые электронные устройства как на нечто таинственное и непостижимое. Тем не менее, все… Для иллюстрации рассмотрим пример, описанный в одной из указанных ниже книг.… Главной причиной возникшего курьеза послужило незнание трех основных логических операций, лежащих в основе всех…

Основные логические операции

 

Х   NOT X       X   V   X AND Y   X OR Y  
           
           
           
    , 1    

 

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

Операция И имеет результат «истина» только в том случае, если оба ее операнда истинны. Например, рассмотрим высказывание «Для остановки ОС «Windows'95» требуется процессор не ниже 80386 и не менее 4 Мбайт оперативной памяти». Из него следует, что установка будет успешной только при одновременном выполнении обоих условий: даже если у вас в машине Pentium, но мало ОЗУ (равно как и при 8 Мбайт ОЗУ процессор 80286), «Windows'95» работать откажется.

Операция ИЛИ «менее привередлива» к исходным данным. Она дает «истину», если значение «истина» имеет хотя бы один из операндов. Разумеется, в случае, когда справедливы оба аргумента одновременно, результат по-прежнему истинный. Действительно, когда студентка просит друга подарить ей на день рождения букет цветов или пригласить в кафе. можно без опасении сделать и то, и другое одновременно (впрочем, на практике в таком случае можно ограничиться чем-то одним).

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

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

В вычислительной технике также часто используется операцияисключающееИЛИ(XOR), которая отличается от обыкновенного ИЛИ только при Х=1 и Y=l.

Как видно из табл. 4.6, операция XOR фактически сравнивает на совпадение два двоичных разряда. Хотя теоретически основными базовыми логическими операциями всегда называют именно И, ИЛИ, НЕ, на практике по технологическим причинам в качестве основного логического элемента используется элемент И-НЕ (последняя колонка в табл. 4.6).

 

Таблица 4.6

Дополнительные логические операции

Х   Y   X XOR Y   NOT(X AND Y)  
       
       
       
       

 

Можно проверить, что на базе элементов И-НЕ могут быть скомпонованы все базовые логические элементы (И, ИЛИ, НЕ), а значит и любые другие, более сложные.

 

СХЕМНАЯ РЕАЛИЗАЦИЯ ЭЛЕМЕНТАРНЫХ ЛОГИЧЕСКИХ ОПЕРАЦИЙ. ТИПОВЫЕ ЛОГИЧЕСКИЕ УЗЛЫ

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

Таблица истинности RS-тригтера

 

S   R       Q     Примечания  
      X (1   X 1)   Хранение     Запрещено  

 

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

Проведите аналогичные рассуждения для «симметричного» случая R =0 и S = 1. Вы увидите, что на прямом выходе получится логическая 1, а на инверсном - 0. Триггер перейдет в единичное состояние - «установится» (установка по-английски - «Set»).

Теперь рассмотрим наиболее распространенную и интересную ситуацию R = 0 и S = 0 - входных сигналов нет. Тогда на входы элементов D3 и D4. связанные с R и S будет подана и их выходной сигнал будет зависеть от сигналов на противопо-ложных входах. Нетрудно убедится, что такое состояние будет устойчивым. Пусть, например, на прямом выходе 1. Тогда наличие единиц на обоих входах элемента D4 «подтверждает» нулевой сигнал на его выходе. В свою очередь, наличие 0 на инверсном выходе передается на D3 и поддерживает его выходное единичное состояние. Аналогично доказывается устойчивость картины и для противоположного состояния триггера, когда Q = 0.

Таким образом, при отсутствии входных сигналов триггер сохраняет свое «предыдущее» состояние. Иными словами, если на вход R подать 1, а затем убрать, триггер установится в нулевое состояние и будет его сохранять, пока не поступит сигнал на другой вход S. В последнем случае он перебросится в единичное состояние и после прекращения действия входного сигнала будет сохранять на прямом выходе 1. Мы видим, что триггер обладает замечательным свойством: после снятия входных сигналов он сохраняет свое состояние, а значит может служить устройством для хранения одного бита информации.

В заключение проанализируем последнюю комбинацию входных сигналов: R = 1 и S = 1. Нетрудно убедиться (проделайте необходимые рассуждения самостоятельно), что в этом случае на обоих выходах триггера установится I! Такое состояние помимо своей логической абсурдности еще и является неустойчивым: после снятия входных сигналов триггер случайным образом перейдет в одно из своих устойчивых состояний. Вследствие этого, комбинация R = 1 и S = 1 никогда не используется на практике и является запрещенной.

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

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

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

Для простоты начнем с изучения логической структуры простейшего возможного устройства, являющегося звеном сумматора. Это устройство - полусумматор - реализует сложение двух одноразрядных двоичных, чисел, которые обозначим А и В. В результате получается, вообще говоря, двухразрядное двоичное число. Его младшую цифру обозначим S, а старшую, которая при сложении многоразрядных чисел будет перенесена в старший разряд, через Со (от английских слов «Carry out»- «выходной перенос»). Для лучшего понимания происходящего вспомните правило типа «ноль пишем, один в уме».

Обе цифры можно получить по следующим логическим формулам:

(черта над символом обозначает операцию NOT, знак ^ - конъюнкцию, знак v -дизъюнкцию). Это легко проверить перебором всех четырех возможных случаев сочетания значений А и В, пользуясь табл. 4.5 и табл. 4.8.

 

Таблица 4.8

Таблица истинности для полусумматора

 

А   В   S   Со  
       
       
       
       

 

Мысленно объединим в табл. 4.8 столбцы А, В и Со. Полученная таблица напоминает базовый логический элемент И. Аналогично, сравнив первые три столбца А.В и S с имеющимися в предыдущем разделе таблицами истинности для распространенных логических элементов, обнаружим подходящий для наших целей элемент «исключающее ИЛИ». Таким образом, для реализации полусумматора достаточно соединить параллельно входы двух логических элементов (рис. 4.23).

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

Рис. 4.23. Логическая схема полусумматора (два варианта)

 

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

 

Таблица 4.9

Таблица истинности для полусумматора

 

Входы   Выходы  
А   В   Ci   S   Со  
         
         
         
         
     
         
         
       
           

 

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

Заметим, что для суммирования младших разрядов чисел полусумматора уже достаточно, так как в этом случае отсутствует сигнал входного переноса.

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

Рис. 4.24. Сумматор, составленный из двух полусумматоров

 

Рис. 4.25. Логическая схема суммирования двух трехразрядных двоичных чисел

 

Перейти к многоразрядным числам можно путем последовательного соединения соответствующего количества сумматоров. На рис. 4.25 представлена схема суммировання двух трехразрядных двоичных чисел А + В = S; в поразрядной записи эта-операция имеет следующие обозначения:

 

(a3a2a1) + (b3b2b1) = (S4S3S2S1)

 

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

ПРИМЕР ЭЛЕКТРОННОЙ РЕАЛИЗАЦИИ ЛОГИЧЕСКОГО ЭЛЕМЕНТА

 

Наконец, приведем обещанную выше электронную схему одного из элементарных логических устройств. Эта схема реализует логическую операцию И-НЕ.

Основа схемы - два nрn-транзистора. Для ее понимания достаточно вспомнить, как работают транзисторы. Через такой транзистор может протекать ток от коллектора к эмиттеру (на рис. 4.26 это соответствует «от плюса к минусу») при наличии положительного напряжения на базе (т.е. в точках А и В). Отсутствие напряжения на базе запирает этот ток.

Схема 4.26 имеет два входа А и В, через которые подается информация в виде электрического напряжения: есть напряжение - логическое «да», нет его - «нет». Выход - точка Y, наличие разности потенциалов между которой и точкой Z рассматривается как «да», отсутствие - как «нет». Питающее напряжение для схемы подается на левые входы («+» и «-»). Резистор R, при наличии тока, создает падение напряжения.

Puc. 4.26. Электронная реализация логического элемента И-НЕ (схема на nрn-транзисторах)

 

Допустим, на входах А и В нет напряжения («нет» и «нет»). В последней колонке табл. 4.6 этому соответствует А = 0, В = 0. Тогда оба транзистора «заперты», ток по цепи не протекает и между точками Y и Z есть разность потенциалов - т.е. результат операции «да», что в логических обозначениях соответствует 1 (именнокак втабл. 4.6). Если заперт один из транзисторов, то результат все равно такой же (сравните с табл. 4.6). Лишь если оба транзистора открыты, ток в цепи идет и между точками Y и Z разности потенциалов нет (падение напряжения на самих транзисторах ничтожно мало по сравнению с его падением на резисторе).

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

 

Контрольные вопросы и задания

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

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

3. Вспомните, что вам известно об операциях И, ИЛИ, НЕ в языках программирования. Сопоставьте эти знания с только что построенными вами таблицами.

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

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

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

Дополнительная литература к главе 4

 

1. Александриди Т.М. и др. Работа на микро-ЭВМ. - М.: Финансы и статистика, 1989.

2. Anoкин И. А., Майстров Л.Е. История вычислительной техники. - М.: Наука, 1980.

3. Богумирский Б. С. Руководство пользователя ПЭВМ. Часть 1. Санкт-Петербург: Печатный Двор, 1994.

4. Брусенцов Н П. Микрокомпьютеры. - М.: Наука, 1985.

5. Василевский А. М., Кропоткин М.А.. Тихонов В. В, Оптическая электроника. -Л.: Энергоатомиздат, 1993.

6. Васильев Б.М., Частиков А.П Микропроцессоры (история, применение, технология) //Информатика и образование. - 1993. -N 5. -С. 71-83.

7. Гершензон Е. М., Полянина Г. Д., Соина Н. В. Радиотехника. -М.: Просвещение, 1989.

8. Гутер Р. С., Полунов Ю. Л. От абака до компьютера. - М.: Знание, 1975.

9.Джордейн Р. Справочник программиста персональных компьютеров типа IBM PC, XT и AT. - М.: Финансы и статистика, 1992.

10. Еремин Е.А. Компилятор? Это очень просто. Компьютер УКНЦ. - М.: Компьютика, 1995.-N3.-С. 25-33.

11. Еремин Е.А., Пономарева Л. В. Методические рекомендации по изучению основных принципов работы ПК. - Пермь: ПГПУ, 1989.

12. Еремин Е.А. Как работает современный компьютер. - Пермь: из-во ПРИПИТ, 1997.

13. Зальцман Ю.А. Архитектура и программированиена языке ассемблера БК-0010.//Информатика и образование. 1990.-N4-6: 1991.-N1-5.

14. Крук Б. И., Попов Г.Н. ...И мир загадочный за занавесом цифр... цифровая связь. - М.: Радио и связь, 1992.

15. Лин В. PDP-11 и VAX-11. Архитектура ЭВМ и программирование на языке ассемблера. - М.: Радио и связь, 1989.

16. Майоров С.А., Кириллов В.В., Приблуда А.А. Введение в микро-ЭВМ. - Л.:

Машиностроение, 1988.

17. Манаев Е.И. Основы радиоэлектроники. - М.: Радио и связь, 1990.

18. Мнеян М.Г. Физические принципы работы ЭВМ. - М.: Просвещение, 1987.

19. Нортон П.. Соухэ Д. Язык ассемблера для IBM PC. - М.: Финансы и статистика, 1992.

20. Нортон П. Персональный компьютер фирмы IBM и операционная система MS DOS. М.: Радио и связь, 1992.

21. Перегудов М.А., Халамайзер А. Я. Бок о бок с компьютером. - М.: Высшая школа,1987.

22. Поляков В. Т. Посвящение в радиоэлектронику. - М.: Радиои связь, 1990.

23. Смит Б.Э., Джонсон М.Т. Архитектура и программирование процессора INTEL 80386. - М.: Конкорд. 1992.

24. Токхейм Р. Основы цифровой электроники. - М.: Мир, 1988.

25. Толковый словарь по вычислительным системам / Под ред. В.Иллингуорта и др. - М.: Машиностроение, 1989.

26. Частиков А. П. История компьютера. - М.: Журнал «Информатика и образование», 1996.

27. Эндерлайн Р. Микроэлектроника для всех. - М.: Мир, 1979.

28. Ямпольский В. С. Основы автоматики и электронно-вычислительной техники. -М.: Просвещение, 1991.

 

ГЛАВА 5 КОМПЬЮТЕРНЫЕ СЕТИ И ТЕЛЕКОММУНИКАЦИИ

ВВЕДЕНИЕ

 

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

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

Вот примеры других, очень разнородных, ситуации, в которых объединение нескольких ЭВМ необходимо.

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

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

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

Сети ЭВМ врываются в жизнь людей - как в профессиональную деятельность, так и в быт - самым неожиданным и массовым образом. Знания о сетях и навыки работы в них становятся необходимыми множеству людей.

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

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

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

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

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

• формирование запросов к серверу, причем не обязательно информируя об этом пользователя; в идеале пользователь вообще не вникает в технологию общения ЭВМ, за которой он работает, с сервером;

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

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

 

ЛОКАЛЬНЫЕ СЕТИ

АППАРАТНЫЕ СРЕДСТВА

Локальные сети (ЛС ЭВМ) объединяют относительно небольшое число компьютеров (обычно от 10 до 100, хотя изредка встречаются и гораздо большие) в… Большое влияние на развитие ЛС оказало создание автоматизированных систем… Благодаря относительно небольшим длинам линий связи (как правило, не более 300 метров), по ЛС можно передавать…

КОНФИГУРАЦИИ ЛОКАЛЬНЫХ СЕТЕЙ И ОРГАНИЗАЦИЯ ОБМЕНА ИНФОРМАЦИЕЙ

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

ЛОКАЛЬНЫЕ СЕТИ УЧЕБНОГО НАЗНАЧЕНИЯ

ЛС КУВТ - совокупность аппаратных и программных средств, ориентированных на использование в учебном процессе. В нашей стране в конце 80-х годов… В состав каждого КУВТ входят: • рабочее место преподавателя(РМП);

Контрольные вопросы

1. Что такое компьютерная сеть?

2. Для чего создаются локальные сети ЭВМ?

3. Что такое сервер? рабочая станция ?

4. Какие сетевые технологии называются клиент-серверными?

5. Что такое сетевой адаптер? Какие типы сетевых адаптеров существуют ?

6. Какие виды линий (каналов) используются для связи компьютеров в локальных сетях ?

7. Какие методыдоступа от компьютера к компьютеру используются в локальных сетях?

8. Какие бывают конфигурации ЛС?

9. Какие конфигурации ЛС используются в компьютерных классах Вашего вуза?

10. Какая сетевая ОС используется в ЛС, в которой вы работаете?

11. Чем отличается набор команд этой ОС от описанного выше?

12. Каковы специфические функции локальной сети учебного назначения?

 

ОПЕРАЦИОННЫЕ СИСТЕМЫ ЛОКАЛЬНЫХ СЕТЕЙ

Появление компьютерных сетей привело к развитию операционных систем для персональных компьютеров, позволяющих работать в сетях. Такие операционные… Существует много операционных систем локальных сетей. Наиболее широкое… Фирма «Novell Inc.», в компьютерном мире не менее известная чем фирмы IBM и «Microsoft», специализируется на создании…

Некоторые виды доступа к каталогам и файлам

  Определение групп и их прав доступа выполняется с помощью утилиты… Операционная система обладает развитым командным языком для написания файлов загрузки Login Script, большим набором…

Некоторые параметры команды LOGIN

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

Форматы команды MAP

  MENU. Если, находясь в каталоге SYS:PUBLIC, вы запустите программу тепи.ехе с… NCOPY - копирование файлов (табл. 5.5). В отличие от средств копирования файлов, предоставляемых MS DOS, утилита псору…

Меню для запуска сетевых утилит

  Таблица 5.5

Параметры процедуры NCOPY

  Для восстановления файлов необходимо выбрать в главном меню строку Salvage… SEND - посылка с одной рабочей станции на другие короткого (длиной не более 44 символов) сообщения.

MONITOR - отображение текущего состояния сети. С помощью этой команды можно заблокировать клавиатуру консоли файл-сервера паролем. Программа запускается командойload monitor.

VREPAIR - исправление небольших разрушений в логическойструктуре данных на сетевых томах. Загружается при помощи команды load.

Перед восстановлением тома его необходимо размонтировать при помощи командыdismount.

 

Контрольные вопросы ч задания

1. Каково назначение и возможности сетевой ОС Novell NetWare?.

2. Охарактеризуйте основные команды NetWare.

3. Охарактеризуйте основные утилиты NetWare.

 

ГЛОБАЛЬНЫЕ СЕТИ

ОБЩИЕ ПРИНЦИПЫ ОРГАНИЗАЦИИ

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

АППАРАТНЫЕ СРЕДСТВА И ПРОТОКОЛЫ ОБМЕНА ИНФОРМАЦИЕЙ

Транспортной основой глобальных сетей выступают коммутируемые и выделенные телефонные линии и каналы (как обычные, медные, так и оптоволоконные и… Непременным оборудованием абонентского пункта является модем - устройство… Основные характеристики модемов:

ЭЛЕКТРОННАЯ ПОЧТА

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

ON-LINE INTERNET

 

Адресация и виды информации в Internet

По данным на 1995 г. через Internet связано более 5 млн. компьютеров, и число их очень быстро растет. Internet поддерживает все существующие виды… ОсновойInternet является система так называемых IP-адресов. Каждый компьютер,… IP-адрес состоит из двух частей: адреса сети и номера хоста. Под хостом следует понимать не только компьютер в сети,…

Классы IP-адресов

  Протокол IP описывает три основные компоненты IP-технологии: форматIP-пакета,… В настоящее время используется четвертая версия протокола, следовательно, поле версия принимает значение «4». Сам…

Доступ к информации в Internet

Главный режим доступа к информационным ресурсам Internet-on-line, однако получать информацию из этих ресурсов можно и в режиме off-line с помощью… Система файловых архивов FTP - это огромное распределенное хранилище… Практически любой архив строится как иерархия директорий. Многие архивы дублируют информацию из других архивов (так…

Язык разметки гипертекстов html

Документы, хранящиеся на WWW, подготавливаются на специальном языке HTML (Hypertext Markup Language - «Язык разметки гипертекстов»). В HTML текст… Любой гипертекст похож на книгу и может быть разбит на отдельные структурные… • собственно текст;

Программа-оболочка Internet Explorer

Одним из самых популярных в настоящее время броузеров - программ для просмотра документов WWW-серверов - является Internet Explorer, программа,… Опишем кратко работу с указанной программой, широко используемой в настоящее… В окне Internet Explorer отображается HTML-документ, полученный изInternet или загруженный из файла. Навигация…

Другие информационные системы в Internet

Gopher-это еще одна распределенная информационная система Internet. В основу ее интерфейсов положена идея иерархических каталогов. Внешне Gopher…   gopher://gopher.kiae.su/

Контрольные вопросы и задания

 

1. В чем признак глобальности сети?

2. Что такое «модем» и каковы его функции?

3. Какие модемы используются в Вашем вузе и какие протоколы коррекции ошибок они поддерживают?

4. В какой глобальной сети участвует ваш вуз? К каким сетям есть выход из этой сети?

5. Назовите характеристики одной - двух локальных сетей.

6. Какие виды обмена информацией приняты в электронной почте?

7. Какова структура электронного письма?

8. Каков электронный адрес вашего вуза и что означают его составляющие?

9. В чем состоят возможности одной из программ-оболочек электронной почты?

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

11. Приходилось ли вам лично работать с удаленной базой данных или наблюдать за такой работой? Если да, то опишите ее в деталях.

12. Какие виды работ поддерживает сеть Internet?

13. Что такое гипертекст? С какой гипертекстовой программой вы работали и как в ней отражены принципы гипертекста?

14. Как ведется поиск информации в сети Internet?

 

ПРЕДСТАВЛЕНИЕ ОБ ОПЕРАЦИОННОЙ СИСТЕМЕ UNIX

ОС UNIX - одно из высших достижений в мире системного программного обеспечения. Многие специалисты считают, что по сравнению с ней MS DOS является… Хотя в специальных руководствах по UNIX подчеркивается ее простота и ясность,… Для глобальных сетей UNIX и UNIX-подобные системы (например, LINUX) являются основными. Здесь важно подчеркнуть, что…

Контрольные вопросы и задания

 

1. Охарактеризуйте основные особенности и команды ОС UNIX.

2. Опишите основные команды ОС UNIX.

3. Какова роль операционной системы UNIX в обеспечении сервиса Internet?

 

ИСПОЛЬЗОВАНИЕ КОМПЬЮТЕРНЫХ СЕТЕЙ В ОБРАЗОВАНИИ

 

ТЕЛЕКОММУНИКАЦИИ КАК СРЕДСТВО ОБРАЗОВАТЕЛЬНЫХ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

Компьютерные телекоммуникации все настойчивее проникают в различные сферы жизни современного общества: бизнес, финансы, средства массовой… Несмотря на то что Россия занимает сейчас 37-е место в мире по уровню… На общем фоне развития телекоммуникаций в нашей стране постепенно проявляется и становится заметным процесс внедрения…

ПЕРСОНАЛЬНЫЙ ОБМЕН СООБЩЕНИЯМИ

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

ИНФОРМАЦИОННОЕ ОБЕСПЕЧЕНИЕ

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

СОВМЕСТНОЕ РЕШЕНИЕ ЗАДАЧ

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

Контрольные вопросы и задания

 

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

2. В чем состоит учебное значение электронной почты?

3. Что называется учебным телекоммуникационным проектом?

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

5. С какими проблемами сталкивается учебное применение телекоммуникаций в России?

6. Предложите идею своего собственного телекоммуникационного проекта.

 

Дополнительная литература к главе 5

 

1. ВеттигД. Novell Netware.-Киев: BHV, М., Бином, 1994. -

2. Вычислительные комплексы, системы и сети. /А.М.Ларионов , С.А.Майоров., Г.И. Новиков: Учеб. для вузов.-Л.: Энергоатомиздат, 1987.

3. Глобальные сети: информация и средства доступа. - Пермь: ПГТУ, 1994.

4. Гольц Г. Рабочие станции и информационные сети. - М.: Машиностроение, 1990.

5.Дансмур М., Дейвис Г. Операционная система UNIX и программирование на языке Си. М.: - Радио и связь, 1989.

6. Интернет. Всемирная компьютерная сеть. Практическое пособие и путеводитель. - М.: Синтез, 1995.

7. Каракозов С. Д. Введение в компьютерные сети. - Барнаул, БГПУ, 1996.

8. Компьютерные сети. Учебный курс Microsoft Corporation/ Пер. с англ. - М.: Издательский отдел «Русская Редакция» ТОО «Channel Trading Ltd.». - 1997.

9. Kpoл Эд. Все об INTERNET. Руководство и каталог. - Киев: BHV, 1995.

10.Ларионов A.M.. Майоров С. А.. Новиков Г. И. Вычислительные комплексы, системы, сети. - М.: Энергоатомиздат, 1987.

11. Морозов В. К, Долганов А. В. Основы теории информационных сетей. - М.: Высшая школа, 1987.

12. Нанс Бэрри. Компьютерные сети. - М.: БИНОМ, 1996.

13. Рассохин Д., Лебедев A. World Wide Web - всемирная информационная паутина в сети Internet. - М.: МГУ, 1997.

14. Самойленко С. И. Сети ЭВМ. - М.: Наука, 1986.

15. Свириденко С. С. Современные информационные технологии. - М.: Радио и связь, 1989.

16. Сетевые средства Windows NT. - С.-Пб.: BHV-Санкт-Петербург, 1996.

17. Стандарты по локальным вычислительным сетям. Справочник / Под ред. С.И.Самойленко. - М.: Радио и связь, 1990.

18. Телекоммуникационная сеть в системе образования Пермской области. Информационно-справочное пособие. Часть 1. - Пермь: ОЦПИ, 1995.

19. Телекоммуникация и информатизация общества. Серия «Информация. Наука. Общество». - М.: ИНИОН, J990.

20. Уваров А. Ю. Организация и проведение учебных телекоммуникационных проектов. - Барнаул, БГПУ, 1996.

21. Уваров А.Ю. Учебные телекоммуникационные проекты в классе. - Барнаул, БГПУ, 1996.

22. Хромцов П. Лабиринты Internet. - М.: Электронинформ. 1996

23. Электронная почта в системе MS-DOS. Официальное руководство компании Редком. 1995г.

24. Журнал «Компьютеруик-Москва», с 1995 г.

 

ГЛАВА 6 ИНФОРМАЦИОННЫЕ СИСТЕМЫ

 

ВВЕДЕНИЕ

 

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

Сама идея информационных систем и некоторые принципы их организации возникли задолго до появления ЭВМ. Библиотеки, архивы, адресные бюро, телефонные справочники, словари - все это информационные системы.

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

К информационным системам относят, в частности,

• информационно-справочные и информационно-поисковые системы;

• системы, обеспечивающие автоматизациюдокументооборота и учета, в томчисле бухгалтерского;

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

• экспертные системы;

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

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

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

• интерфейс с информационной системой на естественном языке (речевой ввод и вывод информации, формирование запросов на естественном языке);

• поддержка принятия решений, решения задач на основе информации, имеющейся в информационной системе.

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

 

БАНКИ ИНФОРМАЦИИ

 

БАНКИ ДАННЫХ

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

БАНКИ ДОКУМЕНТОВ

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

БАНК ПЕДАГОГИЧЕСКОЙ ИНФОРМАЦИИ

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

Контрольные вопросы

 

1. Какие виды информационных систем существуют?

2. Какие типы банков информации различают?

3. Каковы основные компоненты документально-поисковой системы?

4. Что называется индексированием документов? Зачем оно производится?

5. Охарактеризуйте основные типы информационно-поисковых языков.

6. Каково предназначение банков педагогической информации?

7. Какие основные разделы области знаний «Образование» отражены в БПИ?

8. Что представляет собой информационно-педагогический модуль и каков его формат?

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

10. Какие способы поиска информации реализованы в БПИ?

11. Каковы функции администратора БПИ?

 

БАЗЫ ДАННЫХ В СТРУКТУРЕ ИНФОРМАЦИОННЫХ СИСТЕМ

 

ОСНОВНЫЕ ПОНЯТИЯ

 

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

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

Для файловой организации данных свойственна высокая зависимость данныхотпрограмм, так что информация о форме хранения данных скрыта в сочетании «файл - программа».

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

Основой СУБД являются два языка - язык описания данных (ЯОД) и язык манипулирования данными (ЯМД). С помощью языка описания данных администратор базы данных и программисты описывают структуру и содержимое базы данных. Язык манипулирования данными является средством, которое применяется пользователями или прикладным программистом для выполнения операций над данными, хранящимися в базе: добавления новых данных, изменения или удаления устаревших, упорядочения данных по тем или иным признакам, поиска данных в соответствии с запросами.

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

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

• установление единообразного понимания данных пользователями БД;

• эффективное управление элементами данных при модификации описания данных в системе;

• уменьшение избыточности;

• устранение противоречивости;

• упрощение проектирования БД и ее сопровождения, расширения и т.д.

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

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

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

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

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

Системные программисты обеспечивают работоспособность операционной системы, систем программирования и СУБД, разрабатывают сервисные программы.

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

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

• интегрированность данных;

• независимость данных;

• минимальная избыточность хранимых данных;

• целостность базы данных;

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

• гибкость и адаптивность структуры базы данных;

•динамичность данных и способность к расширению;

• возможность поиска по многим ключам.

 

ПРОЕКТИРОВАНИЕ БАЗ ДАННЫХ

Рассмотрим вопрос о проектировании баз данных. К любой базе данных возможен подход на каждом из следующих трех уровней (рис. 6.6): • на уровне представлений данных конечного пользователя или прикладного… • на уровне концептуального представления данных (представления администратора);

ПРЕДСТАВЛЕНИЕ ОБ ЯЗЫКАХ УПРАВЛЕНИЯ РЕЛЯЦИОННЫМИ БАЗАМИ ДАННЫХ ТИПА dBASE

 

Основные элементы СУБД типа dBASE

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

Типы файлов и их расширения

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

Создание структуры файлов базы данных

После того как введено описание для всех полей файла БД, созданную структуру следует сохранить на диске. Для этого надо сначала клавишей F10 вызвать… Ввод новых и обновление существующих записей выполняется в одних и тех же… Кроме того, ввод данных в стандартные экранные формы можно выполнитьизУЦ. Для этого после установки курсора на имя…

Командный язык СУБД

Операции СУБД реализованы в виде команд, которые, как правило, можно использовать независимо, вводя их с помощью клавиатуры - это, так называемый,… В состав элементов командного языка входят команды, SET-команды, функции,… Команда записывается в виде строки слов, в которую входит глагол - основное слово, определяющее содержание операции,…

Некоторые функции СУБД типа dBASE

  В языке dBASE IV используются также функции, которые (наряду с командами)… Кроме системных функций в dBASE IV можно использовать функции, созданные самим пользователем.

Ввод данных в базу и редактирование

После того как создана структура файла БД, можно вводить данные. Существуют две стандартные экранные формы ввода (и вывода) информации в файлы БД:… BROWSE [NOINIT] [NOFOLLOW] [NOAPPEND] [NOMENU] [NOEDIT] [NODELETE] [NOCLEAR] [COMPRESS]

Дополнительные операции

 

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

 

LIST/DISPLAY STRUCTURE [IN <алиас>] [ТО PRINTER/TO FILE <имя файла>]

 

которая выводит информацию о файле БД.

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

Для перемещения по файлу используется команда

 

GO/GOTO BOTTOM/TOP [IN <алиас>]

 

или

 

GO/GOTO [RECORD] <номер записи> [IN <алиас>]

 

или

 

<номер записи>

 

Эти команды осуществляют переход на указанную запись в активном файле БД.

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

 

SKIP [<Bыp.N>] [IN <алиас>]

 

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

 

INSERT [BEFORE] [BLANK]

 

которая позволяет ввести новую запись (или пустую запись, если указана опция BLANK) после текущей или перед ней (если задана опция BEFORE). Пометить одну или несколько записей для их последующего удаления можно командой

 

DELETE [<диапазон>] [FOR <условие>] [WHILE <условие>]

 

Опции <диапазон>, FOR и WHILE позволяют помечать записи, отобранные в соответствии с заданным диапазоном и условиями.

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

 

RECALL [<диапазон>] [FOR <условие>] [WHILE <условие>]

 

Физическое удаление помеченных записей активного файла БД выполняет команда PACK. Команда

 

APPEND [BLANK]

 

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

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

 

SORT TO <имя файла> ON <поле 1 > [/А] [/С] [/D]

[ ,<поле 2> [/А] [/С] [/D]...] [ASCENDING]/[DESCENDING]

[<границы>] [WHILE <условие>] [FOR <условие>]

 

которая создает новый файл БД с записями, отсортированными в алфавитном, хронологическом или числовом порядке по заданным полям. Сортировка выполняется в порядке возрастания (/А) или убывания (ID) значений полей. Допускается сортировка максимум по десяти полям. Опция /С определяет сортировку независимо от прописных и строчных букв. Команда

 

• COPY FILE <имя файла 1> ТО <имя файла 2>

 

делает копию файла любого типа.

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

Для этого используется команда

 

RENAME <имя файла> ТО <новое имя файла>

 

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

 

LOCATE [FOR] <условие> [<диапазон>] [WHILE <условие>]

 

Эта команда выполняет в активном файле БД поиск первой записи, удовлетворяющей условию, заданному опцией FOR. Опции <диапазон> и WHILE определяют диапазон и условие начала и конца просмотра записей.

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

 

SEEK и FIND.

 

Команда

 

SEEK <выражение>

 

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

 

FIND <литеральная строка>

 

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

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

 

@<строка>,<колонка>

[SAY <выр.>

[PICTURE <выр.С>]

[FUNCTION <списокфункций>]]

[GET <переменная>

[[OPEN] WINDOW <имя окна>] [PICTURE <выр.С>]

[FUNCTION <список функций>]

[RANGE [<нижний>] [<верхний>]]

[VALID <условие> [ERROR <выр.С>]]

[WHEN <условие>] [DEFAULT <выражение>]

[MESSAGE <выр.С>]]

[COLOR [<стандартная область экрана>] [<нестандартная область

экрана>]]

 

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

 

SET DEVICE TO SCREEN/printer/file <имя файла>

 

Опция GET выводит и позволяет обновлять и редактировать данные, содержащиеся в полях, переменных или массивах.

Собственно обновление данных в переменных GET (здесь и нижепод словом «переменная» подразумеваются также поля файла БД и элементы массива) выполняется командой READ. которую следует поместить после данной команды. Эта команда активизирует переменные и выводит в них значения, находящиеся на экране.

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

 

WAIT [<сообщение>] [ТО <переменная>]

 

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

С целью улучшения восприятия информациина экране можно использовать команду

 

@ <строка 1>,<колонка 1> ТО <строка 2>,<колонка 2> [DOUBLE/PANEL/<cимволы определения рамки>]

[COLOR <код цвета>]

 

которая рисует на экране прямоугольную рамку, определяемую координатами верхнего левого - <строка 1>,<колонка 1> - и правого нижнего - <строка 2>, <колонка 2> - углов рамки Опция DOUBLE позволяет рисовать двойную линию рамки (по умолчанию рисуется одинарная линия), опция PANEL - рамку в виде сплошной полосы. Кроме того, имеется возможность рисовать линию рамки заданными символами. Для этого задается список символов для определения рамки. Можно задать различные символы для сторон и углов рамки. В этом случае символы разделяются запятыми и располагаются в следующем порядке: f, b, 1, r, fl, fr, bl, br, где f - верх; b - низ; 1 - левая сторона; г - правая сторона; fl -левый верхний угол; fr - правый верхний угол; bl - левый нижний угол; br -правый нижний угол.

Пример.

 

@ 5,13 ТО 10,40 DOUBLE COLOR R/BG Д

 

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

 

CLEAR [ALL/FIELDS/GETS/MEMORY/MENUS/

POPUPS/TYPEAHEAD/WINDOWS]

 

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

Команда @... SAY. ..GET является универсальной для организации ввода и вывода информации на экране. В программах нередко требуется вводить с клавиатуры данные для обеспечения процесса обработки информации, например имя файла БД, данные для ветвления программы, поисковые значения и т.д. Для этого предусмотрена специальная команда

 

ACCEPT [<сообщение>] ТО <переменная>

 

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

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

 

INPUT [<сообщение>] ТО <переменная>

 

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

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

 

?/?? [<выр.1> [PICTURE <выр.С>]

[FUNCTION <список функций>] [AT <выр.N>]

[STYLE <номер шрифта>]] [,<выр.2>...] [,]

 

которая выводит значение одного или более заданных символьных выражений. Если установлено состояние SET PRINT ON. то выполняется вывод на принтер, если SET PRINT OFF, то на экран. Эта команда в форме ? выводит каждое выражение на следующей строке, а в форме ?? все выражения на одной строке.

Для печати отчета используется команда

 

REPORT FORM <имя файла отчета>/?

[<границы>] [WHILE <условие>]

[FOR <условие>] [PLAIN]

[HEADING <выр С>] [NOEJECT]

[ТО PRINTER/TO FILE <имя файла>] [SUMMARY]

 

которая запускает программу печати отчета (файл отчета), созданную командой CREATE/MODIFY REPORT.

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

 

MODIFY COMMAND/FILE <имя файла> [WINDOW <имя окна>]

 

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

 

<команды> && Начало главной процедуры

DO Proс1

DO Proc2

DO Ргос3

RETURN && Конец главной процедуры

PROCEDURE Proс1 && Начало Proс1

<команды>

RETURN && Конец Proс1

PROCEDURE Proс2 && Начало Proc2

<команды>

RETURN && Конец Proc2

PROCEDURE Ргос3 && Начало Ргос3

<команды>

RETURN && Конец Рrос3

 

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

 

DO <имя программы>/<имя процедуры> [WITH <список параметров>]

 

Опция WITH передает в вызываемую процедуру параметры (до 64).

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

 

PROCEDURE <имя процедуры>

 

и завершаться командой

 

RETURN [<выражение>/ТО MASTER/TO <имя процедуры>]

 

Команда RETURN удаляет все переменные, которые были определены в процедуре как PRIVATE (переменные, определенные как PUBLIC, остаются без изменения).

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

 

PARAMETERS <список параметров>

 

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

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

 

PRIVATE <список переменных> / [ALL [LIKE/EXCEPT <шаблон>]]

 

Глобальные переменные можно использовать повсюду а программе и в вызываемых ею процедурах. Для объявления переменных и элементов массива глобальными используется команда

 

PUBLIC <список переменных>/ [ARRAY <список элементов массива>]

 

Организация системы меню

Чтобы организовать в dBASE систему меню, сначала надо определитьего отдельные компоненты - меню вертикального и горизонтального типа. Для этого…   DEFINE MENU <имя меню> [MESSAGE <выр.С>]

Пример создания информационной системы с помощью СУБД типа dBASE

 

Рассмотрим пример создания информационной системы обработки школьной информации «Всеобуч» с помощью СУБД типа dBASE. Проследим основные этапы работы.

1. Постановочная часть.

1. 1. Цель функционирования ИС.

1.2. Структурирование общей задачи.

1.3. Анализ входной информации.

1.4. Анализ переработки информации.

1.5. Анализ выходной информации (структура БД, формат экрана для выходных данных, выходные формы информации, стандартные запросы, командные файлы и т.д.)

2. Создание БД.

2.1. Проектирование структуры БД.

2.2. Создание файла БД.

2.3. Заполнение файла БД записями.

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

3.1. Файл формата экрана.

3.2. Файлы выходных форм документов.

3.3. Индексированные файлы.

3.4. Файлы стандартных запросов.

3.5. Комплекс командных файлов.

4. Эксплуатация созданной ИС.

4.1. Поддержка информации в БД.

4.2. Получение необходимой информации через файлы запросов.

Согласно этим этапам разработаем прикладную программу, которая иллюстрирует возможности СУБД в автоматизации управления школой.

Постановка задачи. Цель разработки этого программного средства-автоматизация работы завуча средней школы по одной из форм отчета всеобуча.

Предполагается получение информации в виде табл. 6.3 и табл.6.4.

 

Таблица 6.3

Информация для отчета завуча школы

  Таблица 6.4   Класс Многодетные семьи и опекаемые дети Горячее питание Медицинское…

Структуры создаваемых баз данных

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

Контрольные вопросы и задания

 

1. Как сформировалось понятие «база данных»? Какое место базы данных занимают в структуре информационных систем?

2. В чем состоит концепция ANSI/SPARC трехуровневого представления данных?

3. Что означает «концептуальное представление данных»?

4. Из каких этапов слагается проектирование баз данных?

5. Какие принципы системного анализа используются при проектировании баз данных?

6. Охарактеризуйте основные параметры СУБД типа dBASE.

7. Каковы основные компоненты СУБД dBASE IV?

8. Каковы назначение и основные функции управляющегоцентра?

9. Файлы каких типов используются в системе dBASE?

10. Как происходит создание файла БД?

11. Охарактеризуйте возможности ввода информации в файл БД.

12. Как формируются запросы к БД?

13. Как формируются экранные формы?

14. Как происходит разработка отчетов?

15. Каков синтаксис команд командного языка dBASE?

16. Запишите команды и поясните назначение опций:

а) создания файла БД;

б) открытия файла БД;

в) создания индексного файла;

г) открытия индексного файла;

д) вызова экранных форм, редактирования и ввода данных;

е) просмотра информации;

ж) перемещения по файлу;

з) вставки и удаления записей;

и)сортировки и поиска;

к) создания экранных форм ввода-вывода;

л) оформления экранного интерфейса.

17. Запишите дополнительные команды ввода-вывода.

18. Какие команды используются для создания форм отчетов и печати отчетов?

19. Какие команды используются при создании программных файлов dBASE?

20. Как оформляются и вызываются программные процедуры?

21. Какие возможности описания и начального присвоения переменных имеются в языке dBASE?

22. Какие команды позволяют организовать диалоговые меню программ?

23. Какой вид имеют управляющие конструкции ветвления, выбора и цикла в языке dBASE?

 

АВТОМАТИЗИРОВАННЫЕ ИНФОРМАЦИОННЫЕ СИСТЕМЫ

 

АВТОМАТИЗИРОВАННЫЕ СИСТЕМЫ УПРАВЛЕНИЯ

Во второй половине 60-х и в 70-х годах получили развитие, так называемые, автоматизированные системы управления сложными объектами хозяйственной… Автоматизированная система управления (АСУ) - это комплекс технических и.… Цель разработки и внедрения АСУ - улучшениекачества управления системами различных видов, которое достигается

ИНФОРМАЦИОННЫЕ СИСТЕМЫ УПРАВЛЕНИЯ

Общие принципы

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

Информационные системы управления в образовании

В отечественной системе образования первые информационные системы управления создавались еще в 60-е годы. Можно выделить следующие уровни управленческой деятельности с использованием… 1) управление обучением и развитием отдельного учащегося;

АВТОМАТИЗИРОВАННЫЕ СИСТЕМЫ НАУЧНЫХ ИССЛЕДОВАНИЙ

Автоматизированные системы для научных исследовании (АСНИ) представляют собой программно-аппаратные комплексы, обрабатывающие данные, поступающие от…  

СИСТЕМЫ АВТОМАТИЗИРОВАННОГО ПРОЕКТИРОВАНИЯ

Близкими по своей структуре и функциям к системам автоматизации научных исследований оказываются системы автоматизированного проектирования (САПР),… Проектирование новых изделий - основная задача изобретателей и конструкторов -…

ГЕОИНФОРМАЦИОННЫЕ СИСТЕМЫ

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

Контрольные вопросы

1. Каково назначение и основные структурные элементы АСУ?

2. В чем состоят недостатки концепции АСУ 70-х годов?

3. В чем состоят основные положения современной концепции информационной системы управления?

4. Каковы перспективы развития информационно-управляющихсистем в образовании?

5. Каково назначение и основные структурные элементы АСНИ?

6. Каково назначение и основные структурные элементы САПР?

7. Каково назначение и основные структурные элементы ГИС?

 

ЭКСПЕРТНЫЕ СИСТЕМЫ

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

Типичные категории способов применения экспертных систем

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

Список некоторых экспертных систем

 

Контрольные вопросы и задания

 

1. Что отличает экспертные системы от других программ?

2. Какие категории различных типичных проблем, решаемых экспертными системами, можно выделить?

3. Охарактеризуйте экспертную систему MYCIN.

4. Охарактеризуйте экспертную систему DENDRAL.

5. Охарактеризуйте экспертную систему PROSPECTOR.

6. Какие виды инструментальных программных средств для создания экспертных систем существуют?

7. Какие еще экспертные системы вы знаете?

 

КОМПЬЮТЕРНЫЕ ОБУЧАЮЩИЕ СИСТЕМЫ

ОСНОВНЫЕ ПРИНЦИПЫ НОВЫХ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ ОБУЧЕНИЯ

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

ТИПЫ ОБУЧАЮЩИХ ПРОГРАММ

Основанием для классификации служат обычно особенности учебной деятельности обучаемых при работе с программами. Многие авторы выделяют четыре типа… • тренировочные и контролирующие; • наставнические;

КОМПЬЮТЕРНОЕ ТЕСТИРОВАНИЕ

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

Российский тест по информатике N 01

01. кбайт-это 1) 1000 символов, 2) 1024 байт, 3) 8 бит, 4) 1000 байт 02. Достоверность - это свойство

Ответы на тестовые задания

 

1.-2); 2.-3); 3.-3); 4.-3); 5.-2); 6.-2); 7.-3); 8.-4); 9.-2);

10.-4); 11.-4); 12.-2); 13.-4); 14.-1); 15.-3); 16.-3); 17.-4); 18.-3);

19.-2); 20.-1); 21.-3); 22.-3); 23.-2); 24.-1); 25.-4); 26.-2); 27.-2);

28.-4); 29.-1); 30.-1); 31.-2); 32.-4); 33.-3); 34.-4); 35.-1); 36.-1).

 

ПЕРСПЕКТИВНЫЕ ИССЛЕДОВАНИЯ В ОБЛАСТИ КОМПЬЮТЕРНОГО ОБУЧЕНИЯ

Современные исследования в области применения компьютеров в обучении развиваются, в основном, в рамках нескольких основных направлений, которые… 1) интеллектуальные обучающие системы; 2) учебные мультимедиа и гипермедиа;

Контрольные вопросы и задания

 

1. Разработайте модель знания по школьному разделу «действия с дробями», используя модульный принцип.

2. Разработайте тест на знание таблицы умножения чисел от 0 до 100.

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

 

Дополнительная литература к главе 6

 

1. Балыко Г. Г., Пугач В. И., Фиишан Л. И. Управление школой и базы данных. -Самара: СГПИ, 1992.

2. Берещанский Д. Г. Практическое программирование на dBASE. - М.: Финансы

и статистика.1989.

3.Герман О. В. Введение в теорию экспертных систем и обработку знаний: -Минск: «Дизайн-ПРО», 1995.

3. Глушков В М. Основы безбумажной информатики / Изд. 2-е. - М.: Наука, 1987.

4. А.Каратыгин С., Тихонов А , Долголаптев В. Базы данных: простейшие средства обработки информации, электронные таблицы, системы управления базами данных. В 2-х томах. - М.: ABF.1995.

5. Коновалова Н. В., Капралов Е.Г. Введение в ГИС. - Петрозаводск: Петрозаводский госуниверситет, 1995.

6. Крамм Р. Системы управления базами данных dBASE II и dBASE III для персональных компьютеров. - М.: Финансы и статистика, 1988.

7. САПР. Системы автоматизированного проектирования / Под ред. И.П.Норенкова. - Минск: Высшая школа, 1987.

8. Свириденко С. С. Современные информационные технологии. - М.: Радио и связь, 1989.

9. Советов Б Я. АСУ. Введение в специальность. - М.: Высшая школа, 1989.

10. Советов Б.Я. Информационная технология. - М.: Высшая школа, 1992.

11. Фурунжиев P.M., Гугля В. А. САПР, или как ЭВМ помогает конструктору. -Минск: Высшая школа, 1987.

12. Электронная почта в системе MS-DOS. Официальное руководство компании Редком.-М., 1995.

13. Журнал «Информатика и образование», с 1992 г.

14. Журнал «Педагогическая информатика», с 1994 г.

ГЛАВА 7 КОМПЬЮТЕРНОЕ МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ

 

ВВЕДЕНИЕ

 

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

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

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

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

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

В данной главе предполагается знание основ математики:

• теории дифференциальных уравнений;

• аппроксимации функций (включая интерполяцию и среднеквадратичные приближения);

• аналитической геометрии на плоскости и в пространстве;

• математической статистики;

• численных методов:

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

б) решения систем линейных алгебраических уравнений;

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

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

 

О РАЗНОВИДНОСТЯХ МОДЕЛИРОВАНИЯ

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

ПОНЯТИЕ О КОМПЬЮТЕРНОМ МАТЕМАТИЧЕСКОМ МОДЕЛИРОВАНИИ

 

МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ И КОМПЬЮТЕРЫ

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

ЭТАПЫ И ЦЕЛИ КОМПЬЮТЕРНОГО МАТЕМАТИЧЕСКОГО МОДЕЛИРОВАНИЯ

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

КЛАССИФИКАЦИЯ МАТЕМАТИЧЕСКИХ МОДЕЛЕЙ

К классификации математических моделей разные авторы подходят по-своему, положив в основу классификации различные принципы. Можно классифицировать… • дескриптивные (описательные) модели; • оптимизационные модели;

НЕКОТОРЫЕ ПРИЕМЫ ПРОГРАММИРОВАНИЯ

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

МОДЕЛИРОВАНИЕ ФИЗИЧЕСКИХ ПРОЦЕССОВ

ФИЗИКА И МОДЕЛИРОВАНИЕ

Физика - наука, в которой математическое моделирование является чрезвычайно важным методом исследования. Наряду с традиционным делением физики на…   Таблица 7.1

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

  Численное моделирование (как и лабораторные эксперименты) чаще всего является…  

СВОБОДНОЕ ПАДЕНИЕ ТЕЛА С УЧЕТОМ СОПРОТИВЛЕНИЯ СРЕДЫ

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

Результаты вычислений, выполненных в табличном процессоре

  Следует заметить, что для хранения результатов расчетов в данном случае…  

ДВИЖЕНИЕ ТЕЛА, БРОШЕННОГО ПОД УГЛОМ К ГОРИЗОНТУ.

ЗАКОНЫ ПОДОБИЯ

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

ДВИЖЕНИЕ ТЕЛА С ПЕРЕМЕННОЙ МАССОЙ: ВЗЛЕТ РАКЕТЫ

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

ДВИЖЕНИЕ НЕБЕСНЫХ ТЕЛ

Как движется Земля и другие планеты в пространстве? Что ждет комету, залетевшую из глубин космоса в Солнечную систему? Многовековая история поиска… По закону всемирного тяготения сила притяжения, действующая между двумя…  

ДВИЖЕНИЕ ЗАРЯЖЕННЫХ ЧАСТИЦ

Закон Кулона, описывающий взаимодействие точечных зарядов, так похож на закон всемирного тяготения, что очевидна близость подходов к моделированию… Напомним закон Кулона: между двумя зарядамиQ и q разных (одинаковых)знаков…  

КОЛЕБАНИЯ МАТЕМАТИЧЕСКОГО МАЯТНИКА

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

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

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

МОДЕЛИРОВАНИЕ ЯВЛЕНИЙ

И ПРОЦЕССОВ В ПРИБЛИЖЕНИИ СПЛОШНОЙ СРЕДЫ

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

МОДЕЛИРОВАНИЕ ПРОЦЕССА ТЕПЛОПРОВОДНОСТИ

То, что тела могут проводить тепло, общеизвестно. Если один из концов длинного стержня поместить в костер, то, если стержень сделан не из горючего… Хотя каждый изтаких процессов имеет собственные закономерности, междуними… Ограничимся одной из самых простых задач данного класса - переносом тепла в однородном стержне. Рассмотрим линейный…

Значение коэффициента теплопроводности для некоторых материалов

  Имеем, ограничиваясь первым порядком приращения Δx,

Контрольные вопросы и задания

1 Какие причины обусловливают особую значимость компьютерного моделирования в физике?

2. Какие аналогии проводятся между реальным и компьютерным экспериментами?

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

4. Как зависит сила сопротивления от скорости движущегося тела?

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

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

7. Как надо преобразовать формулировку содержательной задачи, прежде чем приступать к ее решению?

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

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

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

Решите с помощью этой программы одну из следующих задач:

а) с высоты Н падает предмет, через время t он оказывается на земле, требуется определить, с какой скоростью приземлится предмет;

б) металлический шарик падает в воде и в глицерине,провести сравнение результатов моделирования;

в) определить момент встречи (высоту и время) тела массы т1 свободно падающего с высоты Н0, и тела массы т2, брошенного вертикально вверх с достаточно большой начальной скоростью.

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

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

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

14. Разработайте программы решения задач:

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

б) произведите моделирование полета тела, брошенного под углом к горизонту на Луне, проведите сравнение с результатами моделирования для Земли при аналогичных начальных условиях;

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

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

16. Насколько в действительности хороша аппроксимация, принятая для зависимости силы сопротивления от скорости, при очень больших скоростях?

17. Найдите в специальной литературе данные о характере зависимости силы сопротивления от скорости движения при скоростях порядка скорости звука и больших и внесите усовершенствования в модель.

18. Запишите математическую модель для движения двухступенчатой ракеты.

19. Проведите исследование на тему: с каким минимальным запасом топлива некоторая ракета может вывести на орбиту спутник? Все необходимые параметры задайте правдоподобными самостоятельно.

20. Какой может быть траектория космического аппарата, запускаемого сЗемли,относительно нее, если пренебречь влиянием других небесных тел? Чем определяется эта траектория?

21. Как будут выглядеть уравнения движения в системеЗемля - Луна - малоенебесное тело, если пренебречь влиянием Солнца-и других планет?

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

23. Проверьте в ходе моделирования второй закон Кеплера дляэллиптическихорбит.

24. Проверьте в ходе моделирования третий закон Кеплера для эллиптических орбит.

25. Уточните модель, учитывая действие на спутник, движущийся вокруг Земли, помимо силы притяжения Земли, слабой постояннойсилы W, обусловленной «солнечным ветром».

26. Есть ли качественные различия в задачах о взаимном движении двух небесных тел и двух заряженных частиц, и чем они обусловлены?

27. Произведите моделирование движения тела массы т, несущего зарядq, поддействием электростатических сил, создаваемых произвольно расположенной группой тел с зарядами Q1, Q2,..., Qn (все они - в одной плоскости).

28. Как выглядит первая нелинейная поправка при переходе от полного уравнения свободных колебаний к уравнению малых колебаний?

29. Какое периодическое движение называют гармоническим?

30. Как выглядит в общем случае формула гармонического разложения периодической функции (разложения в ряд Фурье)?

31. Какие качественные изменения вносит учет трения при анализе движения маятника?

32. С какой частотой происходят вынужденные колебания при наличии гармонической вынуждающей силы?

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

34. Изучите в ходе компьютерного моделирования зависимость периода колебаний математического маятника от их амплитуды. Изобразите эту зависимость графически в диапазоне амплитуд 0 < θ < π. Выполните спектральное разложение колебаний для амплитуд , 0,9π, выделив 3-5 гармоник.

35. Изучите с помощью компьютерного моделирования колебания пружинного маятника, движущегося под влиянием упругой силы F = -ах-bх3, где х - смещение из положения равновесия.

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

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

37. Относительно каких процессов атмосферу можно рассматривать как сплошную газовую среду и относительно каких - нельзя?

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

39. Как в общем случае связаны потенциал и напряженность электростатического поля?

40. Что такое эквипотенциальная поверхность? силовая линия?

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

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

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

а) поля в плоском конденсаторе;

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

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

45. Как выглядит уравнение теплопроводности в двумерномслучае?

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

47. Как выглядит конечно-разностная аппроксимация первой производнойповремени? по пространству? В чем различие этих аппроксимаций для внутренних и граничных узлов сетки?

48. В чем заключаются устойчивость и эффективность численного метода решения краевых задач?

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

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

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

52. Какими величинами можно обезразмерить переменные в рассмотренных выше примерах моделирования процесса теплопроводности? Проведите обезразмеривание в одном из них для явной и неявной схем.

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

где х* - некоторая точка стержня.

 

КОМПЬЮТЕРНОЕ МОДЕЛИРОВАНИЕ В ЭКОЛОГИИ

 

ЭКОЛОГИЯ И МОДЕЛИРОВАНИЕ

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

МОДЕЛИ ВНУТРИВИДОВОЙ КОНКУРЕНЦИИ

Рассмотрим простейшую из указанных моделей для вида с дискретными периодами размножения, в которой численность популяции в момент времени t равна N,… (7.60) решение которого имеетвид

ЛОГИСТИЧЕСКАЯ МОДЕЛЬ МЕЖВИДОВОЙ КОНКУРЕНЦИИ

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

ДИНАМИКА ЧИСЛЕННОСТИ ПОПУЛЯЦИЙ ХИЩНИКА И ЖЕРТВЫ

Рассматривая динамику численности популяций хищника и жертвы, экологи прежде всего стремятся понять ее закономерности и разъяснить различия между… Модель состоит из двух компонентов: С - численность популяции хищника и N… Предполагается, что в отсутствие хищника популяция жертвы растет экспоненциально. Чем больше численность той и другой…

ИМИТАЦИОННОЕ МОДЕЛИРОВАНИЕ ДИНАМИКИ ПОПУЛЯЦИЙ

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

Контрольные вопросы и задания

 

1. В чем отличие классической экологии от современной?

2. Какие проблемы рассматриваются в классической экологии?

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

4. Какие цели преследуются при составлении математических моделей в экологии?

5. В чем выражается специфика биологических систем в отличие от рассмотренных ранее физических и механических систем?

6. Что понимают под конкуренцией в биологии? внутривидовой конкуренцией? межвидовой конкуренцией? Каковы источники конкуренции, и как конкуренция учитывается в приведенных моделях?

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

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

9. Составьте программу, позволяющую получить все четыре способа изменения численности популяции в модели (7.63).

10. Составьте программу, помогающую построить фазовую диаграмму в модели (7.63).

11. Как выводится логистическое уравнение? Каково аналитическоерешениеэтого уравнения? Как в нем учитывается внутривидовая конкуренция?

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

13. Какие результаты могут быть получены с помощью модели межвидовой конкуренции?

14. Какие факторы необходимо учесть при разработке модели системы «хищник -жертва»?

15. Какие результаты могут быть получены с помощью модели «хищник-жертва»?

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

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

18. Разработайте модель межвидовой конкуренции длятрех популяций. Исследуйте ее с помощью компьютерного моделирования.

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

20. Имеется популяция с непрерывным размножением. В течение некоторого времени через равные промежутки часть особей изымается из популяции (собирается «урожай»). При последнем сборе все особи изымаются. Составьте такой план сбора урожая, чтобы суммарный урожай был максимальным. После очередного сбора популяция не должна вымирать. Разработайте соответствующую моделирующую программу.

 

ГЛОБАЛЬНЫЕ МОДЕЛИ РАЗВИТИЯ ЧЕЛОВЕЧЕСТВА

Л. Н. Толстой. Война и мир, т.4, ч,2.   Рассмотренные выше модели представляли собой математические образы отдельных процессов и явлений. Каждая из них…

МОДЕЛИРОВАНИЕ СЛУЧАЙНЫХ ПРОЦЕССОВ

 

ТЕХНИКА СТОХАСТИЧЕСКОГО МОДЕЛИРОВАНИЯ

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

X = a + (b - a)∙r.

 

Более сложные распределения часто строятся с помощью распределения равномерного. Упомянем здесь лишь один достаточно универсальный метод Неймана (часто называемый также методом отбора-отказа), в основе которого лежит простое геометрическое соображение. Допустим, что необходимо генерировать случайные числа с некоторой нормированной функцией распределения f(x) на интервале [а, b]. Введем положительно определенную функцию сравнения w(x) такую, что w(x) = const и w(x) > f(x) на [а, b] (обычно w(x) равно максимальному значению f(x) на [а, b]). Поскольку площадь под кривой f(x) равна для интервала [х, х + dx] вероятности попадания х в этот интервал, можно следовать процедуре проб и ошибок. Генерируем два случайных числа, определяющих равновероятные координаты в прямоугольнике A BCD с помощью датчика равномерно распределенных случайных чисел:

X = a + (b - a)∙r, y = w∙r

и если точка М(х, у) не попадает под кривую f(x), мы ее отбрасываем, а если попадает - оставляем (рис. 7.55). При этом множество координат х оставленных точек оказывается распределенным в соответствии с плотностью вероятности f(x).

Рис. 7.55. Метод отбора-отказа. Функция w(x) = fmax

 

Этот метод для ряда распределений не самый эффективный, но он универсален, прост и понятен. Эффективен он тогда, когда функция сравнения w(x) близка к f(х). Заметим, что никто не заставляет нас брать w(x)= const на всем промежутке [а, b]. Если f(x) имеет быстро спадающие «крылья», то разумнее взять w(x) в виде ступенчатой функции.

 

МОДЕЛИРОВАНИЕ СЛУЧАЙНЫХ ПРОЦЕССОВ В СИСТЕМАХ МАССОВОГО ОБСЛУЖИВАНИЯ

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

Моделирование очереди

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

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

  Количество цифр выписано таким образом, чтобы отразить значимую разницу между… Оценим доверительный интервал математических ожиданий величин g и h при с достоверности 0,99 по формуле < тх < ;…

РАЗЛИЧНЫЕ ПРИМЕРЫ МОДЕЛИРОВАНИЯ СЛУЧАЙНЫХ ПРОЦЕССОВ

 

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

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

 

Программа 154. Вычисление числа π методом Монте-Карло

Program Chislo_Pi;

Uses Crt; Var I, N : Longint; X, Y : Real;

Begin

Randomize; N := 0;

For I := 1 To 100000 Do

Begin

X := Random; Y := Random;

If Sqr(X - 0.5) + Sqr(Y - 0.5) < 0.25 Then N := N + 1

End;

WriteLn ('pi=', (N / 100000 / Sqr(0.5)) : 8 : 5) ;

Repeat Until KeyPressed End.

 

2. Задача Бюффона. На поле, разграфленное параллельными прямыми, расстояние между которыми L, бросается наугад игла длиной l (рис. 7.60). Какова вероятность того, что игла, упав, пересечег хотя бы одну прямую?

Рис. 7.60. К. задаче Бюффона

 

Ж.Бюффон (XVIII в.) подсчитал: р = . Таким образом, если L = 2l, то р = . Кроме того, р = , где N - число бросаний, N1 - число пересечений иглы с линиями.

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

Имитационное моделирование проведем следующим образом. Примем L = 1 и l = . «Иглу» будем «бросать» в квадрат размером, скажем, 20х20, левый нижний угол которого имеет координаты (0, 0). Положение концов иглы будем задавать с помощью датчика равномерно распределенные, случайных чисел в диапазоне от 0 до 20. Точнее говоря, эти числа определят направление отрезка, вдоль которого находится очередная игла; для того, чтобы ее длина была равна , вторую из случайных точек - концов отрезка - подвинем вдоль него до достижения указанной длины иглы. В математическом отношении это сводится к следующей несложной процедуре;

• генерация координат точек А(х1, y1), B(x2, у2);

определение координат точки В11 + α(х2 – х1), у1 + α(у2 – у1)), где

Поскольку расстояние между горизонтальными линиями взято равным единице, а сами линии имеют целочисленные координаты по у, то определить, пересекает ли игла прямую, очень просто - да, если целые части ординат тoчeк A и В1 различны.

 

Программа 155 Решение задачи Бюффона.

Program Buffon;

Uses Crt; Var I, J, K, M, N : Integer; XI, X2, Y1, Y2, Al : Real;

Begin

Randomize; M := 30000; N := 1;

For I := 1 To M Do

Begin

X1 := Random * 20; Yl := Random * 20; X2 := Random * 20;

Y2 := Random * 20;

A1 := 0.5 / Sqrt(Sqr(X2 – X1) + Sqr(Y2 - Yl) ) ;

J := Round(Yl); К := Round(Yl + A1 * (Y2 – Y1));

If J <> К Then N := H + 1

End;

WriteLn('pi=', W / N) : 8 : 5); Repeat Until KeyPressed

End.

 

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

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

3. Нефтяное месторождение. Дано нефтяное месторождение, в котором область залегания нефти G ограничивается кривой С. Дебит скважины, т.е. количество получаемой из нее нефти в единицу времени, зависит от пластового давления нефти U в точке скважины. Поэтом) для прогнозирования нефтедобычи важно знать распределение пластового давления на всем месторождении при условии, что оно экспериментально измерено лишь на его границе. В математическом плане функция U(r) удовлетворяет уравнению Лапласа = 0; задача нахождения его решения внутри области при заданном значении U(r) на границе - так называемая, краевая задача Дирихле; в данной задаче это решение, которое часто совсем не просто найти аналитически, позволило бы правильно определить точку для скважины.

Рис. 7.61. Наложение сетки на заданную область

 

Покроем область G мелкой сеткой. Отметим узлы, наиболее близкие к границе С, и будем считать, что значения функции U в этих узлах приблизительно равны значениям этой функции в ближайших к ним точках границы. Будем искать значение функции U(A) в некотором внутреннем узле A (рис. 7.61).

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

Другими словами, среднее значение приближенно равно решению задачи Дирихле в точке А.

4. Модель «пьяницы» (модель случайного блуждания). Зададим блуждание точки (объекта) по горизонтальной линии по правилу: если случайное число из интервала [0, 1] меньше 0,5, то точка делает шаг вправо x = х + h, в противном случае x = х - h.

 

Программа 156. Модель случайного блуждания

Program Tochka;

Uses Crt, Graph; Var I, J : Integer; Z, P, X, H, Y : Integer;

Begin

X := 320; Y := 240; H := 10; P := 4; DetectGraph(I, J) ;

InitGraphd, J, ");

SetColor(15); Line(10, 312, 630, 312); Randomize;

Repeat

Z := Random(8); If Z >= P Then X := X + H Else X := X - H;

SetColor(Green); Circle(X, Y, 10); Delay(200);

SetColor(0); Circle(X, Y, 10)

Until KeyPressed Or (X >= 640) Or (X <= 0); CloseGraph

End.

 

В программе шаг является постоянным, но никто не мешает нам сделать его переменным, выбирая из интервала [0, hmax] случайным образом. Для этого зададим максимально возможный шаг НМах и в цикле определимH := Random(HMax).

Если задать аналогичным образом вероятности движения точки вверх – вниз, вправо - влево (0 < рх < 1, 0 < рy < 1), получим хаотическое блуждание точки на плоскости. Для моделирования блуждания точки в замкнутом прямоугольном объеме примем абсолютно упругое (зеркальное) отражение от стенок.

 

Программа 157. Хаотическое блуждание точки

Program Broun;

Uses Crt, Graph;

Var I, J, X, Y, HxMax, HyMax, Hx, Ну : Integer; PI, P2, Z1, Z2 : Real;

Begin

X := 320; Y :== 240; HxMax := 30; PI := 0.5; P2 := 0.5; HyMax := 30;

DetectGraph (I, J) ; InitGraph (1, J, ''); SetColor(15);

Randomize; RectAngle(100, 100, 540, 380);

SetColor(Green); Circle(X, Y, 10); Delay(200); SetColor(0);

Circle(X, У, 10);

Repeat

Zl := Random; Z2 := Random; Hx := Random(HxMax);

Ну := Random(HyMax) ;

If (Zl < PI) Then X := X + Hx Else X := X - Hx;

If (Z2 < P2) Then Y := Y + Ну Else Y :" У - Ну;

If X <= 110 Then X := X + 2 * (110 - X) ;

If X >= 530 Then X := X - 2 * (-530 + X) ;

If Y <= 110 Then Y := Y + 2 * (110 - Y) ;

If Y >= 370 Then Y := Y - 2 * (Y - 370);

SetColor(Green); Circle(X, Y, 10); Delay(100);

SetColor(0); Circle(X, Y, 10)

Until Keypressed; CloseGraph

End.

 

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

 

Программа 158. Броуновское движение

Program Gaz;

Uses Crt, Graph;

Var I, J, HxMax, HyMax, Hx, Ну, N, I : Integer;

X, Y : Array[0..500] Of Integer; PI, P2, Z1, Z2 : Real;

Begin N := 100;

For I := 1 To N Do Begin X[I] := 320; Y[I] := 240 End;

HxMax := 10; PI := 0.5; P2 := 0.5; HyMax := 10;

DetectGraph (1, J) ; InitGraphd, J, ' '); SetColor(15);

Randomize; RectAngle(100, 100, 540, 380);

For I := 1 To N Do PutPixel(X[I], Y[I], White); Delay(200);

For I := 1 To N Do PutPixel(X(I], Y[I], 0) ;

Repeat

For I := 1 To N Do

Begin

Zl := Random; Z2 := Random;

Hx := Random(HxMax); Ну := Random(HyMax);

If Zl < PI Then X[I] := X[I] + Hx Else X[I] := X[I]— Hx;

If Z2 < P2 Then Y[I] := Y[I] + Ну Else Y[I] := Y[I] - Ну;

If X[I] <= 110 Then X[I] := X[I] + 2 * (110 - X[I]);

If X(I] >= 530 Then X[I] := X[I] - 2 * (-530 + Х[I];

If Y[I] <= 110 Then Y(I] := Y[I] + 2 * (110 - Y[I]);

If Y[I] >= 370 Then Y[I] := Y[I] - 2 * (Y[I] - 370);

PutPixel (X[I], Y[I], 15)

End; Delay(100);

For I := 1 To N Do PutPixel(X[I], Y[I], 0)

Until KeyPressed; CloseGraph

End.

 

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

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

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

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

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

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

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

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

 

Контрольные вопросы и задания

 

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

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

2. Дайте классическое определение вероятности случайного события.

3. В чем заключаются теоремы сложения и умножения вероятностей?

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

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

6. Что такое случайная величина дискретная? непрерывная?

7. Дайте определение функции распределения непрерывной случайной величины и плотности распределения.

8. Что такое математическое ожидание и дисперсия случайной величины (при дискретном и при непрерывном распределениях)?

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

10. Что такое независимая повторная выборка? Как находятся выборочные средние? выборочные дисперсии? В каких связях они с математическим ожиданием и дисперсией случайной величины?

11. Как построить гистограмму выборочного распределенияслучайной величины? Как по ней судить о функции распределения?

12. Какими свойствами должна обладать точечная оценка параметров функции распределения?

13. Как оценить отклонение выборочного среднего от математического ожидания при малом числе испытаний? при большом числе испытаний? Что такое доверительный интервал?

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

15. Что такое «случайноечисло»? Сформулируйте метод компьютерной генерации последовательности равномерно распределенных псевдослучайных чисел.

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

17. Как формулируются задачи теории массового обслуживания?

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

19. Какие случайные процессы являются объектомисследования (выходнымипроцессами) для обсуждаемой в тексте задачи?

20. Как промоделировать пуассоновский процесс - входной поток клиентов в очередь?

21. Что такое «марковские» случайные процессы и являются ли исследуемые в данном параграфе процессы «марковскими»?

22. С чем связано в первой из приведенных выше программ ограничение на объем выборки? Можно ли его преодолеть и какими способами?

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

24. Изучите распределения длительности ожидания в очереди и длительности простоя «продавца» и соответственно средние времена ожидания в системе с одним «прилавком» при различных комбинациях распределений промежутков времен между приходами «покупателей» и времен обслуживания, используя следующие распределения: а) равновероятное; б) пуассоновское; в) нормальное.

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

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

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

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

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

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

31 Разработайте модель истечения газа из трубы.

32. Создайте модель «пчелиного роя».

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

34. Предложите модель формирования очереди на стоянке такси.

35. Рассчитайте модель автобусного маршрута с h остановками.

36. Смоделируйте работу продовольственного магазина.

37. Опишите модель автозаправочной станции.

 

КОМПЬЮТЕРНОЕ МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ В ЭКОНОМИКЕ

ПОСТАНОВКА ЗAДAЧИ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ

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

X + y ≤ 100.

Еще одно условие - ограниченная емкость склада:

 

x + y ≤ 70

Обозначим цену мотоцикла а1 (руб.), цену велосипеда – а2 (руб.). По условию а1 = 2a2. Общая цена дневной продукции

 

S = а1 ∙ х + a2 ∙ у = 2a2 ∙ х + а2 ∙ у = а2 ∙ (2х + у).

 

Поскольку a2 - заданная положительная константа, то наибольшего значения следует добиваться отвеличины f = + у.

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

 

(7.71)

 

найти такое, которое соответствует максимуму линейной функции

 

(7.72)

 

Проще всего решить эту задачу чисто геометрически. Построим на плоскости (х, у) область, соответствующую неравенствам (7.71) и условию неотрицательности x и у. Эта область выделена на рис. 7.62 жирной линией. Всякая ее точка удовлетворяет неравенствам (7.71) и неотрицательности переменных. Пунктирные линии на рисунке - семейство прямых, удовлетворяющих уравнению f = 2х + у = с (с разными значениями константы с). Вполне очевидно, что наибольшему возможному значению f, совместному с предыдущими условиями, соответствует жирная пунктирная линия, соприкасающаяся с областью М в точке Р.

Рис. 7.62. Графическое решение задачи об оптимальном плане производства (к примеру 1)

 

Этой линии соответствует значение f = 80. Пунктирная линия правее хоть и соответствует большему значению f, но не имеет общих точек с М, левее - меньшим значениям f. Координаты точки Р(10, 60) - искомый оптимальный план производства.

Отметим, что нам «повезло» - решение (х, у) оказалось целочисленным. Если бы прямые

 
 


4x + y = 100

х + у = 70

пересеклись в точке с нецелочисленными координатами, мы бы столкнулись со значительными проблемами. Еще больше их было бы, если бы наш завод выпускал три и более видов продукции.

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

Пример 2. Транспортная задача. Некий продукт (например, сталь) вырабатывается на т заводах P1, P2, ..., Рm, причем ежемесячная выработка составляетдь а1, a2, …, аm тонн, соответственно. Пусть эту сталь надо доставить на предприятия Q1, Q2,..., Qk (всего k), причем b1, b2, ..., bk - ежемесячная потребность этих предприятий. Наконец, пусть задана стоимость cij перевозки одной тонны стали с завода Рi на предприятие Qj,. Естественно считать, что общее производство стали равно суммарной потребности вней:

a1 + a2 +…+am = b1 + b2 +…+bk (7.73)

 

Необходимо составить план перевозок, при котором

1) была бы точно удовлетворена потребность в стали предприятийQ1, Q2,..., Qk,

2) была бы вывезена вся сталь с заводов Р1, Р2,....,Pm;

3) общая стоимость перевозок была бы наименьшей.

Обозначим через xij количество стали (в тоннах), предназначенной к отправке с завода Рi на предприятие Qj. План перевозок состоит из (m∙k) неотрицательных чисел xij (i= 1, 2,..., m;j = 1,2,..., k).

Таблица 7.10

Схема перевозок стали

 

  в Q1 в Q2 в Q3 в Qk Отправлено
из P1 x11 x12 x13 x1k a1
из Р2 x21 x22 x23 x2k a2
из Pm xm1 xm2 xm3 xmk am
Привезено b1 b2 b3 bk

 

Первое условие примет вид

(7.74)

Второе условие примет вид

(7.75)

 

Раз стоимость перевозки одной тонны из Рi в Qj равна cij, то общая стоимость S всех перевозок равна

 

(7.76)

 

Таким образом, мы приходим к следующей чисто математической задаче: дана система m+k линейных алгебраических уравнений (7.74) и (7.75) c m∙k неизвестными (обычно т∙k >> m+k) и линейная функция S. Требуется среди всех неотрицательных решений данной системы найти такое, при котором функция S достигает наименьшего значения (минимизируется).

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

Пример 3. Задача о диете. Пусть у врача-диетолога имеется n различных продуктов F1, F2, ..., Fn, из которых надо составить диету с учетом их питательности. Пусть для нормального питания человеку необходимо т веществ N1, N2, ..., Nm. Предположим, что за месяц каждому человеку необходимо γ1 кг вещества N1, γ2 кг вещества N2, ..., γm кг вещества Nm. Для составления диеты необходимо знать содержание питательных веществ в каждом продукте. Обозначим через αij количество i-го питательного вещества, содержащегося в одном килограмме j-го продукта. Всю эту информацию представляют в виде, так называемой, матрицы питательности (табл. 7.11).

 

Таблица 7.11

Матрица питательности

  Предположим, что диетолог уже выбрал диету, т.е. определил, что человек должен…

СИМПЛЕКС-МЕТОД

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

F = c0 + c'r+1xr+1 + c'хr+2 +…+ с'nxn.

Положим все свободные неизвестные равными нулю:

 

Полученное таким образом допустимое решение

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

Пример 1. Дана система ограничений

 
 


x13x2 + 5x3 – x4 = 2

x1 + x2 + x3 + x4 = 4

 

Требуется минимизировать линейную функцию f = х2 – x3. В качестве свободных переменных выберем х2 и х3. Тогда данная система ограничений преобразуется к виду

 

Таким образом, базисное решение (3, 0, 0, 1). Так как линейная функция уже записана в свободных неизвестных, то ее значение для данного базисного решения f = 0. Для уменьшения этого значения можно уменьшить x2 или увеличить x3. Но x2 в данном базисе равно нулю и потому его уменьшать нельзя. Попробуем увеличить x3. Первое из уравнений имеет ограничение x3 = 1 (из условия x1 ≥ 0), второе - не дает ограничений. Далее, берем x3 = 1, х2 не меняем и получаем новое допустимое решение (0, 0, 1, 3), для которого f = -1 - уменьшилось. Найдем базис, которому соответствует это решение (он состоит, очевидно, из переменных x3, x4). От предыдущей системы ограничений переходим к новой:

а форма в новых свободных переменных имеет вид

Теперь попробуем повторить предыдущую процедуру. Для уменьшения f надо уменьшить либо x1, либо x2, но это невозможно, так как в этом базисе x1 = 0, x2 = 0.

Таким образом, данное базисное решение является оптимальным, и minf= -1 при x1 = 0, x2 = 0, x3 = 1, x4 = 3.

Приведем алгоритм симплекс-метода в общем виде. Обычно все вычисления по симплекс-методу сводят в стандартные таблицы.

Запишем систему ограничений в виде

(7.90)

а функцию f

(7.91)

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

Данные о коэффициентах уравнений и линейной функции занесем в табл. 7.12.

 

Таблица 7.12

Симплекс-таблица

Сформулируем алгоритм симплекс-метода применительно к данным, внесенным в табл. 7.12.

1. Выяснить, имеются ли в последней строке таблицы положительные числа 0 не принимается во внимание). Если все числа отрицательны, то процесс закончен; базисное решение (b1, b2, .... br, 0, ..., 0) является оптимальным; соответствующее значение целевой функции f = γ0. Если в последней строке имеются положительные числа, перейти к п.2.

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

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

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

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

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

Ранее мы предполагали, что если система ограничений задана в виде (7.85),топеред первым шагом она уже приведена к виду (7.86), где bi0 (i = 1, 2, ..., r). Последнее условие необходимо для использования симплекс-метода. Рассмотрим вопрос об отыскании начального базиса.

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

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

1) умножить уравнения, содержащие отрицательные свободные члены, на-1;

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

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

Пример 2. Найти исходное неотрицательное базисное решение системы ограничений

Так как условие неотрицательности свободных членов соблюдается, приступим к преобразованиям исходной системы, записывая результаты в таблицу. Согласно алгоритму просматриваем первый столбец. В этом столбце имеется единственный положительный элемент a31. Делим на 8,654 все коэффициенты и свободный член третьей строки, после чего умножаем каждый коэффициент на 8,704 и складываем с соответствующими коэффициентами второй строки. Первая строка преобразований не требует, так как коэффициент при неизвестном x1 равен нулю. В результате получаем

 

0,00000 0,00000 1,00000   -5,87100 0,68512 -0,77756   6,54300 17,46384 0,97677   -9,99600 8,57990 0,89808   7,61800 -3,19062 0,62769   0,86400 9,79929 1,11584  

 

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

 

0,00000 0,00000 1,00000   0,00000 1,00000 0,00000   156,19554 25,49013 20,79687   63,52761 12,52318 10,63560   -19,72328 -4,65701 -2,99341   84,83688 14,30299 12,24727  

 

И, наконец, на третьем шаге находим исходный базис. Его образуют неизвестные x1, x2, x3. Неизвестные x4, х5 являются свободными:

 

0,00000 0,00000 1,00000   0,00000 1,00000 0,00000   1,00000 0,00000 0,00000   0,40672 2,15588 2,17713   -0,12627 -1,43829 -0,36733   0,54315 0,45815 0,95155  

 

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

Контрольные вопросы и задания

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

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

3. Сколько решений может иметь задача линейного программирования?

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

5. Каким образом неравенства из системы ограничений можно заменить уравнениями? Как задачу отыскания максимума линейной формы свести к задаче отыскания минимума?

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

7. Как найти начальный базис?

8. Сформулируйте алгоритм симплекс-метода.

9. Сформулируйте теорему о конечности алгоритма симплекс-метода.

10. Найдите максимум функции z = 4x1 +3x2 (xi0) при условии

11. Для откорма крупного рогатого скота используется два вида кормов b1 и b2, в которые входят питательные вещества а1, a2, a3 и а4. Содержание количеств единиц питательных веществ в одном килограмме каждого корма, стоимость одного килограмма корма и норма содержания питательных веществ в дневном рационе животного представлены в таблице. Составьте рацион при условии минимальной стоимости.

 

Питательные вещества   Вид кормов   Норма содержания питательного вещества  
    b1   b2      
a1        
a2        
a3        
a4        
Стоимость 1 кг корма, руб.          

 

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

 

Вид сырья в пряже   Затраты пряжи на 10 шт., кг  
Свитер   Кофточка  
Шерсть      
Силон      
Нитрон      
Прибыть, руб.      

 

13. При подкормке посевов необходимо внести на 1 га почвы не менее 8 единиц химического вещества A, не менее 21 единиц химического вещества В и не менее 16 единиц химического вещества С. Фермер закупает комбинированные удобрения двух видов I и II. В таблице указано содержание количества единиц химического вещества в 1 кг каждого вида удобрений и цена 1 кг удобрений. Определите потребность фермера в удобрениях I и II вида на 1 га посевной площади при минимальных затратах на их приобретение.

 

Химические вещества   Содержание химических веществ в 1 кг удобрения  
I   II  
А      
В      
С      
Цена 1 кг удобрения, руб      

 

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

 

Вид корма   Количество единиц корма, которое ежедневно должны получать   Общее количество корма  
Лисица   Песец  
       
       
III        
Прибыль от реализации одной шкурки, руб          

 

Дополнительная литература к главе 7

 

1. Араманович И. Г., Левин В. И. Уравнения математической физики. - М.: Наука, 1969.

2. Акулич И. Л. Математическое программирование в примерах и задачах. - М.: Высшая школа, 1993.

3. Беллман Р. Математические методы в медицине: Пер. с англ. - М.: Мир, 1987.

4. Белошапка В К Информационное моделирование в примерах и задачах. -Омск: Из-во ОГПИ, 1992.

5. Бигон М., Харпер Дж., Таунсенд К. Экология. Особи, популяции и сообщества: Пер. с англ. В двух книгах. Кн. 1. - М.: Мир, 1989.

6. Воеводин В. В. Численные методы алгебры. - М.: Наука, 1966.

7. Гнеденко Б. В. Курс теории вероятностей. - М.: Наука, 1965.

8. Гнеденко Б. В., Коваленко И. Н. Введение в теорию массового обслуживания. -М.: Наука, 1966.

9. Горстко А. Б. Познакомьтесь с математическим моделированием. - М.: Знание, 1991.

10. Горстко А. Б., Угольницкий Г. А. Введение в моделирование эколого-зкономических систем. - Ростов: Из-во РГУ, 1990.

11.Гулд X., Тобочник Я. Компьютерное моделирование в физике: Пер. с англ. Т. 1, 2.-М.: Мир, 1990.

12. Демидович Б. П., Марон И. А.Основы вычислительной математики. - М.: Наука,1970.

13. Заварыкин В.М., Житомирский В. Г,. Лапчик М.П. Численные методы. - М.: Просвещение,1990.

14. Зайденберг А. П., Павлович Е.С. Законы распределения случайных величин. -Омск: Изд-во ОГПИ, 1971.

15. Зуховицкий СИ., Авдеева Л. И. Линейное и выпуклое программирование. - М.:

Наука,1967.

16. Кондаков В.М. Математическое программирование. Элементы линейной алгебры и линейного программирования - Пермь: Из-во ПГУ, 1992.

17. Марчук Г.И. Математическое моделирование в иммунологии. - М.: Наука, 1991.

18. Математическое моделирование: Пер. с англ. / Под ред. Дж. Эндрюса, Р. Мак-Лоуна. - М.: Мир, 1979.

19. Матюшкин-Герке А. Учебно-прикладные задачи в курсе информатики. Информатика и образование, № 3-4, 5-6, 1992.

20. Мигулин В. В., Медведев В. И., Мустель Е.Р., Парыгин В.Н. Основы теории колебаний. - М.: Наука, 1988.

21. Риклефс Р. Основы общей экологии: Пер. с англ. - М.: Мир, 1979.

22. Саати Т. Элементы теории массового обслуживания и ее приложения: Пер. с англ. - М.: Сов. радио, 1971.

23. Сайдашев А. А., Хеннер Е.К. Компьютер на уроке математики. - Пермь: Из-во ПГУ.1991.

24. Самарский А. А., Гулин А.В. Численные методы. - М.: Наука, 1989.

25. Стрелков С П. Введение в теорию колебаний. - М.: Наука, 1964.

26. Шеннон Р. Имитационное моделирование систем - искусство и наука: Пер. с англ. - М.: Мир, 1978.

27. Электронные вычислительные машины. / Под ред. АЯ.Соловьева. В 8 книгах. Книга 8. Решение прикладных задач. - М.: Высшая школа, 1987.

 


Содержание

 

ПРЕДИСЛОВИЕ................................................................................................................................... 1

ВВЕДЕНИЕ........................................................................................................................................... 2

ЧАСТЬ ПЕРВАЯ.................................................................................................................. 5

ГЛАВА 1 ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ИНФОРМАТИКИ.......................................................... 5

ВВЕДЕНИЕ.................................................................................................................................... 5

§ 1. ИНФОРМАТИКА КАК НАУКА И КАК ВИД ПРАКТИЧЕСКОЙ ДЕЯТЕЛЬНОСТИ........... 5

1.1. ИСТОРИЯ РАЗВИТИЯ ИНФОРМАТИКИ............................................................................ 5

1.2. ИНФОРМАТИКА КАК ЕДИНСТВО НАУКИ И ТЕХНОЛОГИИ........................................ 7

1.3. СТРУКТУРА СОВРЕМЕННОЙ ИНФОРМАТИКИ............................................................... 8

1.4. МЕСТО ИНФОРМАТИКИ В СИСТЕМЕ НАУК................................................................... 9

1.5. СОЦИАЛЬНЫЕ АСПЕКТЫ ИНФОРМАТИКИ.................................................................... 9

1.6. ПРАВОВЫЕ АСПЕКТЫ ИНФОРМАТИКИ........................................................................ 12

1.7. ЭТИЧЕСКИЕ АСПЕКТЫ ИНФОРМАТИКИ...................................................................... 14

Контрольные вопросы................................................................................................................ 15

§ 2. ИНФОРМАЦИЯ, ЕЕ ВИДЫ И СВОЙСТВА........................................................................... 15

2.1. РАЗЛИЧНЫЕ УРОВНИ ПРЕДСТАВЛЕНИЙ ОБ ИНФОРМАЦИИ................................... 15

2.2. НЕПРЕРЫВНАЯ И ДИСКРЕТНАЯ ИНФОРМАЦИЯ......................................................... 16

2.3. ЕДИНИЦЫ КОЛИЧЕСТВА ИНФОРМАЦИИ: ВЕРОЯТНОСТНЫЙ И ОБЪЕМНЫЙ ПОДХОДЫ ………………………………………………………………………………………………….18

2.4. ИНФОРМАЦИЯ: БОЛЕЕ ШИРОКИЙ ВЗГЛЯД.................................................................. 21

2.5. ИНФОРМАЦИЯ И ФИЗИЧЕСКИЙ МИР............................................................................ 22

§ 3. СИСТЕМЫ СЧИСЛЕНИЯ....................................................................................................... 23

3.1. ПОЗИЦИОННЫЕ СИСТЕМЫ СЧИСЛЕНИЯ..................................................................... 23

3.2. ДВОИЧНАЯ СИСТЕМА СЧИСЛЕНИЯ.............................................................................. 25

3.3. ВОСЬМЕРИЧНАЯ И ШЕСТНАДЦАТИРИЧНАЯ СИСТЕМЫ СЧИСЛЕНИЯ.................. 26

§ 4. КОДИРОВАНИЕ ИНФОРМАЦИИ......................................................................................... 28

4.1. АБСТРАКТНЫЙ АЛФАВИТ............................................................................................... 28

4.2. КОДИРОВАНИЕ И ДЕКОДИРОВАНИЕ............................................................................ 29

4.3. ПОНЯТИЕ О ТЕОРЕМАХ ШЕННОНА............................................................................... 30

4.4. МЕЖДУНАРОДНЫЕ СИСТЕМЫ БАЙТОВОГО КОДИРОВАНИЯ.................................. 32

§ 5. ЭЛЕМЕНТЫ ТЕОРИИ ГРАФОВ............................................................................................. 34

5.1. ОСНОВНЫЕ ПОНЯТИЯ...................................................................................................... 34

5.2. ПРЕДСТАВЛЕНИЕ ГРАФОВ.............................................................................................. 35

§ 6. АЛГОРИТМ И ЕГО СВОЙСТВА............................................................................................ 36

6.1. РАЗЛИЧНЫЕ ПОДХОДЫ К ПОНЯТИЮ «АЛГОРИТМ».................................................. 36

6.2. ПОНЯТИЕ ИСПОЛНИТЕЛЯ АЛГОРИТМА....................................................................... 36

6.3. ГРАФИЧЕСКОЕ ПРЕДСТАВЛЕНИЕ АЛГОРИТМОВ....................................................... 37

6.4. СВОЙСТВА АЛГОРИТМОВ............................................................................................... 39

6.5. ПОНЯТИЕ АЛГОРИТМИЧЕСКОГО ЯЗЫКА..................................................................... 40

Контрольные вопросы................................................................................................................ 42

§7. ФОРМАЛИЗАЦИЯ ПОНЯТИЯ «АЛГОРИТМ»....................................................................... 42

7.1. ПОСТАНОВКА ПРОБЛЕМЫ.............................................................................................. 42

7.2. МАШИНА ПОСТА.............................................................................................................. 43

73. МАШИНА ТЬЮРИНГА........................................................................................................ 47

7.4. НОРМАЛЬНЫЕ АЛГОРИТМЫ МАРКОВА........................................................................ 50

7.5. РЕКУРСИВНЫЕ ФУНКЦИИ............................................................................................... 53

Контрольные вопросы и задания............................................................................................... 55

§ 8. ПРИНЦИПЫ РАЗРАБОТКИ АЛГОРИТМОВ И ПРОГРАММ ДЛЯ РЕШЕНИЯ ПРИКЛАДНЫХ ЗАДАЧ...................................................................................................................................................... 55

8.1. ОПЕРАЦИОНАЛЬНЫЙ ПОДХОД...................................................................................... 55

8.2. СТРУКТУРНЫЙ ПОДХОД.................................................................................................. 58

8.3. НОВЕЙШИЕ МЕТОДОЛОГИИ РАЗРАБОТКИ ПРОГРАММ ДЛЯ ЭВМ.......................... 63

Контрольные вопросы и задания............................................................................................... 64

§ 9. СТРУКТУРЫ ДАННЫХ.......................................................................................................... 64

9.1. ДАННЫЕ И ИХ ОБРАБОТКА............................................................................................. 64

9.2. ПРОСТЫЕ (НЕСТРУКТУРИРОВАННЫЕ) ТИПЫ ДАННЫХ............................................ 65

9.3. СТРУКТУРИРОВАННЫЕ ТИПЫ ДАННЫХ...................................................................... 66

Контрольные вопросы и задания............................................................................................... 72

§ 10. ПОНЯТИЕ ОБ ИНФОРМАЦИОННОМ МОДЕЛИРОВАНИИ............................................. 73

10.1. МОДЕЛИРОВАНИЕ КАК МЕТОД РЕШЕНИЯ ПРИКЛАДНЫХ ЗАДАЧ........................ 73

10.2. ОСНОВНЫЕ ПОНЯТИЯ ИНФОРМАЦИОННОГО МОДЕЛИРОВАНИЯ....................... 74

10.3. СВЯЗИ МЕЖДУ ОБЪЕКТАМИ......................................................................................... 76

Контрольные вопросы и задания............................................................................................... 78

§ 11. НЕКОТОРЫЕ КИБЕРНЕТИЧЕСКИЕ АСПЕКТЫ ИНФОРМАТИКИ.................................. 78

11.1. ПРЕДМЕТ КИБЕРНЕТИКИ............................................................................................... 78

11.2. УПРАВЛЯЕМЫЕ СИСТЕМЫ............................................................................................ 79

11.3. ФУНКЦИИ ЧЕЛОВЕКА И МАШИНЫ В СИСТЕМАХ УПРАВЛЕНИЯ......................... 81

Контрольные вопросы и задания............................................................................................... 82

§ 12. ПОНЯТИЕ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА................................................................ 82

12.1. НАПРАВЛЕНИЯ ИССЛЕДОВАНИЙ И РАЗРАБОТОК В ОБЛАСТИ СИСТЕМ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА................................................................................................. 82

12.2. ПРЕДСТАВЛЕНИЕ ЗНАНИЙ В СИСТЕМАХ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА... 84

12.3. МОДЕЛИРОВАНИЕ РАССУЖДЕНИЙ............................................................................. 86

12.4. ИНТЕЛЛЕКТУАЛЬНЫЙ ИНТЕРФЕЙС ИНФОРМАЦИОННОЙ СИСТЕМЫ................. 89

12.5. СТРУКТУРА СОВРЕМЕННОЙ СИСТЕМЫ РЕШЕНИЯ ПРИКЛАДНЫХ ЗАДАЧ......... 90

Контрольные вопросы и задания............................................................................................... 91

Дополнительная литература к главе 1....................................................................................... 93

ГЛАВА 2 ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ЭВМ...................................................................... 95

ВВЕДЕНИЕ.................................................................................................................................. 95

§ 1. ОПЕРАЦИОННЫЕ СИСТЕМЫ............................................................................................... 95

1.1. НАЗНАЧЕНИЕ И ОСНОВНЫЕ ФУНКЦИИ ОПЕРАЦИОННЫХ СИСТЕМ..................... 95

1.2. ПОНЯТИЕ ФАЙЛОВОЙ СИСТЕМЫ.................................................................................. 98

1.3. ОПЕРАЦИОННЫЕ СИСТЕМЫ ДЛЯ КОМПЬЮТЕРОВ ТИПА IBM PC......................... 101

1.4. ОБОЛОЧКИ ОПЕРАЦИОННЫХ СИСТЕМ...................................................................... 107

Контрольные вопросы и задания............................................................................................. 117

§ 2. ПОНЯТИЕ О СИСТЕМЕ ПРОГРАММИРОВАНИЯ............................................................. 117

2.1. ОСНОВНЫЕ ФУНКЦИИ И КОМПОНЕНТЫ................................................................... 117

2.2. ТРАНСЛЯЦИЯ ПРОГРАММ И СОПУТСТВУЮЩИЕ ПРОЦЕССЫ............................... 120

Контрольные вопросы.............................................................................................................. 122

§3. ПРИКЛАДНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ОБЩЕГО НАЗНАЧЕНИЯ................. 122

3.1. КЛАССИФИКАЦИЯ.............................................................................................................. 122

3.2. ИНСТРУМЕНТАЛЬНЫЕ ПРОГРАММНЫЕ СРЕДСТВА ОБЩЕГО НАЗНАЧЕНИЯ.... 123

3.3. ИНСТРУМЕНТАЛЬНЫЕ ПРОГРАММНЫЕ СРЕДСТВА СПЕЦИАЛЬНОГО НАЗНАЧЕНИЯ 124

3.4. ПРОГРАММНЫЕ СРЕДСТВА ПРОФЕССИОНАЛЬНОГО УРОВНЯ.............................. 125

3.5. ОРГАНИЗАЦИЯ «МЕНЮ» В ПРОГРАММНЫХ СИСТЕМАХ....................................... 125

Контрольные вопросы ч задания............................................................................................. 128

§ 4. СИСТЕМЫ ОБРАБОТКИ ТЕКСТОВ.................................................................................... 128

4.1. ЭЛЕМЕНТЫ ИЗДАТЕЛЬСКОГО ДЕЛА........................................................................... 128

4.2. ТЕКСТОВЫЕ РЕДАКТОРЫ............................................................................................... 129

4.3. ИЗДАТЕЛЬСКИЕ СИСТЕМЫ........................................................................................... 131

§ 5. СИСТЕМЫ КОМПЬЮТЕРНОЙ ГРАФИКИ......................................................................... 138

5.1. ПРИНЦИПЫ ФОРМИРОВАНИЯ ИЗОБРАЖЕНИЙ НА ЭКРАНЕ.................................. 138

5.2. ИЗОБРАЗИТЕЛЬНАЯ ГРАФИКА..................................................................................... 139

5.3. ГРАФИЧЕСКИЕ РЕДАКТОРЫ.......................................................................................... 144

5.4. ДЕЛОВАЯ ГРАФИКА........................................................................................................ 146

5.5. ИНЖЕНЕРНАЯ ГРАФИКА............................................................................................... 147

5.6. НАУЧНАЯ ГРАФИКА....................................................................................................... 149

Контрольные вопросы и упражнения...................................................................................... 150

§ 6. БАЗЫ ДАННЫХ И СИСТЕМЫ УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ................................ 150

6.1. ПОНЯТИЕ ИНФОРМАЦИОННОЙ СИСТЕМЫ............................................................... 150

6.2. ВИДЫ СТРУКТУР ДАННЫХ............................................................................................ 151

6.3. ВИДЫ БАЗ ДАННЫХ........................................................................................................ 152

6.4. СОСТАВ И ФУНКЦИИ СИСТЕМ УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ........................ 154

6.5. ПРИМЕРЫ СИСГЕ-М УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ........................................... 157

Контрольные вопросы и задания............................................................................................. 163

§ 7. ЭЛЕКТРОННЫЕ ТАБЛИЦЫ................................................................................................. 163

7.1. НАЗНАЧЕНИЕ И ОСНОВНЫЕ ФУНКЦИИ ТАБЛИЧНЫХ ПРОЦЕССОРОВ............... 163

7.2. ЭЛЕКТРОННЫЕ ТАБЛИЦЫ SUPERCALC....................................................................... 164

7.3. ЭЛЕКТРОННЫЕ ТАБЛИЦЫ EXCEL................................................................................ 172

§8. ИНТЕГРИРОВАННЫЕ ПРОГРАММНЫЕ СРЕДСТВА......................................................... 173

8.1. ПРИНЦИПЫ ПОСТРОЕНИЯ ИНТЕГРИРОВАННЫХ ПРОГРАММНЫХ СИСТЕМ..... 173

8.2. ИНТЕГРИРОВАННЫЙ ПАКЕТ MS-WORKS................................................................... 174

§ 9. ЭКСПЕРТНЫЕ СИСТЕМЫ................................................................................................... 178

Контрольные вопросы и задания............................................................................................. 183

§ 10. ИНСТРУМЕНТАЛЬНЫЕ ПРОГРАММНЫЕ СРЕДСТВА ДЛЯ РЕШЕНИЯ ПРИКЛАДНЫХ МАТЕМАТИЧЕСКИХ ЗАДАЧ.............................................................................................................. 183

10.1. НАЗНАЧЕНИЕ ПРОГРАММ........................................................................................... 183

10.2. ПАКЕТ MATHCAD.......................................................................................................... 183

10.3. СИСТЕМА АНАЛИТИЧЕСКИХ ПРЕОБРАЗОВАНИЙ REDUCE................................. 187

§ 11. КОМПЬЮТЕРНОЕ ТЕСТИРОВАНИЕ................................................................................ 190

11.1. ТЕХНОЛОГИЯ ПРОЕКТИРОВАНИЯ КОМПЬЮТЕРНЫХ ТЕСТОВ ПРЕДМЕТНОЙ ОБЛАСТИ ………………………………………………………………………………………………...190

11.2. ТИПЫ КОМПЬЮТЕРНЫХ ТЕСТОВ.............................................................................. 192

11.3. ИНСТРУМЕНТАЛЬНЫЕ ТЕСТОВЫЕ ОБОЛОЧКИ...................................................... 193

11.4. ПРИМЕР ТЕСТА ПО ШКОЛЬНОМУ КУРСУ ИНФОРМАТИКИ.................................. 194

§12. КОМПЬЮТЕРНЫЕ ВИРУСЫ.............................................................................................. 197

12.1. ЧТО ТАКОЕ КОМПЬЮТЕРНЫЙ ВИРУС...................................................................... 197

12.2. РАЗНОВИДНОСТИ КОМПЬЮТЕРНЫХ ВИРУСОВ..................................................... 198

12.3. АНТИВИРУСНЫЕ СРЕДСТВА....................................................................................... 199

Контрольные вопросы и задания............................................................................................. 200

§ 13. КОМПЬЮТЕРНЫЕ ИГРЫ................................................................................................... 200

13.1. ВИДЫ И НАЗНАЧЕНИЕ КОМПЬЮТЕРНЫХ ИГР........................................................ 200

13.1. ОБЗОР КОМПЬЮТЕРНЫХ ИГР..................................................................................... 202

Контрольные вопросы.............................................................................................................. 203

ГЛАВА 3 ЯЗЫКИ И МЕТОДЫ ПРОГРАММИРОВАНИЯ........................................................ 207

ВВЕДЕНИЕ................................................................................................................................ 207

§ 1. ИСТОРИЯ РАЗВИТИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ............................................... 207

§2. ЯЗЫКИ ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ................................................... 211

2.1. ПОНЯТИЕ О ЯЗЫКАХ ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ..................... 211

2.2. МЕТАЯЗЫКИ ОПИСАНИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ................................... 212

23. ГРАММАТИКА ЯЗЫКОВ ПРОГРАММИРОВАНИЯ........................................................ 213

§3. ПАСКАЛЬ КАК ЯЗЫК СТРУКТУРНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ 216

3.1. ВВЕДЕНИЕ......................................................................................................................... 216

Контрольные вопросы.............................................................................................................. 220

3.2. ОСНОВНЫЕ КОНСТРУКЦИИ ЯЗЫКА............................................................................ 220

Контрольные вопросы.............................................................................................................. 223

3.3. СТРУКТУРЫ ДАННЫХ.................................................................................................... 223

3.4. ПРОЦВДУРЫ И ФУНКЦИИ............................................................................................. 234

3.5. РАБОТА С ФАЙЛАМИ..................................................................................................... 238

3.6. ДИНАМИЧЕСКИЕ ИНФОРМАЦИОННЫЕ СТРУКТУРЫ.............................................. 243

Контрольные вопросы.............................................................................................................. 247

3.7. РАБОТА С ГРАФИКОЙ.................................................................................................... 247

Контрольные вопросы и задания............................................................................................. 253

3.8. ТУРБО-ОБОЛОЧКИ. ВЕРСИИ ПАСКАЛЯ...................................................................... 253

Контрольные вопросы.............................................................................................................. 256

3.9. РУКОВОДСТВО ПОЛЬЗОВАТЕЛЮ ТУРБО-ПАСКАЛЯ................................................ 256

§4. МЕТОДЫ II ИСКУССТВО ПРОГРАМ11РОВАНИЯ............................................................. 260

4.1. ПРОЕКТИРОВАНИЕ ПРОГРАММ................................................................................... 260

Контрольные вопросы и задания............................................................................................. 265

4.2. ОСНОВНЫЕ ПРИНЦИПЫ РАЗРАБОТКИ И АНАЛИЗА АЛГОРИТМОВ..................... 265

Задания...................................................................................................................................... 270

4.3. МЕТОДЫ ПОСТРОЕНИЯ АЛГОРИТМОВ, ОРИЕНТИРОВАННЫЕ НА СТРУКТУРЫ ДАННЫХ ………………………………………………………………………………………………...270

Контрольные задания............................................................................................................... 273

4.4. РЕКУРСИВНЫЕ АЛГОРИТМЫ........................................................................................ 273

Контрольные задания............................................................................................................... 277

4.5. ВАЖНЕЙШИЕ НЕВЫЧИСЛИТЕЛЬНЫЕ АЛГОРИТМЫ (ПОИСК И СОРТИРОВКА). 277

Контрольные вопросы и задания............................................................................................. 288

§ 5. БЕЙСИК КАК ЯЗЫК ОПЕРАЦИОНАЛЬНО-ПРОБЛЕМНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ....................................................................................................................... 288

5.1. ВВЕДЕНИЕ В БЕЙСИК..................................................................................................... 289

Контрольные вопросы.............................................................................................................. 290

5.2. БАЗОВЫЕ ОПЕРАТОРЫ................................................................................................... 290

Контрольные вопросы ч задания............................................................................................. 292

5.3. МУЗЫКАЛЬНЫЕ ВОЗМОЖНОСТИ................................................................................ 292

Контрольные вопросы и задания............................................................................................. 293

5.4. ГРАФИЧЕСКИЕ ВОЗМОЖНОСТИ.................................................................................. 293

Контрольные вопросы и задания............................................................................................. 297

5.5. ОБРАБОТКА СИМВОЛЬНОЙ ИНФОРМАЦИИ.............................................................. 297

Контрольные вопросы и задания............................................................................................. 299

5.6. ПОДПРОГРАММЫ............................................................................................................ 299

Контрольные вопросы.............................................................................................................. 300

5.7. РАБОТА С ФАЙЛАМИ..................................................................................................... 300

5.8. СРЕДСТВА И МЕТОДЫ ОРГАНИЗАЦИИ ДИАЛОГА.................................................... 302

Контрольные задания............................................................................................................... 303

5.9. ВЕРСИИ БЕЙСИКА........................................................................................................... 303

5.10. БЕЙСИК И ПАСКАЛЬ..................................................................................................... 304

§ 6. ВВЕДЕНИЕ В ЯЗЫК ПРОГРАММИРОВАНИЯ СИ............................................................. 304

6.1. ОБЩАЯ ХАРАКТЕРИСТИКА ЯЗЫКА И ПРИМЕР ПРОГРАММЫ НА СИ................... 304

6.2. ЭЛЕМЕНТЫ СИ: АЛФАВИТ, ИДЕНТИФИКАТОРЫ, ЛИТЕРАЛЫ, СЛУЖЕБНЫЕ СЛОВА 307

6.3. ТИПЫ ДАННЫХ И ОПЕРАЦИИ В ЯЗЫКЕ СИ. ВЫРАЖЕНИЯ..................................... 310

6.4. ОПЕРАТОРЫ. УПРАВЛЯЮЩИЕ КОНСТРУКЦИИ ЯЗЫКА.......................................... 315

6.5. СТРУКТУРА ПРОГРАММЫ НА СИ. ПОНЯТИЕ О ФУНКЦИЯХ.................................. 324

6.6. КЛАССЫ ПАМЯТИ........................................................................................................... 328

6.7. ФУНКЦИИ ВВОД-ВЫВОДА........................................................................................... 332

6.8. ДИРЕКТИВЫ ПРЕПРОЦЕССОРА..................................................................................... 336

6.9. СИ И ПАСКАЛЬ................................................................................................................ 338

§ 7. ОСНОВЫ ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ НА ЯЗЫКЕ ПРОЛОГ.................... 339

7.1. ОБЩИЕ СВЕДЕНИЯ............................................................................................................. 339

7.2. АЛГОРИТМ ВЫПОЛНЕНИЯ ПРОГРАММ НА ПРОЛОГЕ............................................. 343

7.3. РЕКУРСИЯ......................................................................................................................... 346

7.4. ПРЕДИКАТ ОТСЕЧЕНИЯ И УПРАВЛЕНИЕ ЛОГИЧЕСКИМ ВЫВОДОМ В ПРОГРАММАХ 348

7.5. ОБРАБОТКА СПИСКОВ................................................................................................... 349

7.6. РЕШЕНИЕ ЛОГИЧЕСКИХ ЗАДАЧ НА ПРОЛОГЕ.......................................................... 352

Контрольные вопросы и задания............................................................................................. 354

§ 8. ВВЕДЕНИЕ В ФУ НКЦПОНАЛЬНОЕ ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ЛИСП........ 355

8.1. НАЗНАЧЕНИЕ 11 ОБЩАЯ ХАРАКТЕРИСТИКА ЯЗЫКА............................................. 355

8.2. ОСНОВНЫЕ ЭЛЕМЕНТЫ ПРОГРАММЫ НА ЛИСПЕ. СПИСКИ.................................. 356

8.3. ФУНКЦИИ......................................................................................................................... 357

8.4. ФОРМЫ. УПРАВЛЯЮЩИЕ КОНСТРУКЦИИ В ЛИСП-ПРОГРАММЕ......................... 359

8.5. РЕКУРСИЯ И ЦИКЛ В ПРОГРАММАХ НА ЛИСПЕ....................................................... 361

8.6. ВВОД-ВЫВОД ДАННЫХ.................................................................................................. 362

8.7. ПРИМЕР ПРОГРАММИРОВАНИЯ НА ЛИСПЕ.............................................................. 363

8.8. СВОЙСТВА СИМВОЛОВ................................................................................................. 364

Контрольные вопросы и задания............................................................................................. 364

§9. ВВЕДЕНИЕ В ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ.................. 364

9.1. ОСНОВНЫЕ ПОЛОЖЕНИЯ.............................................................................................. 364

9.2. ОСНОВЫ ОБЪЕКТНОГО ПРОГРАММИРОВАНИЯ В СИСТЕМЕ ТУРБО-ПАСКАЛЬ 365

9.3. ОБОЛОЧКА TURBO-VISION............................................................................................ 369

9.4. СРЕДА ОБЪЕКТНОГО ВИЗУАЛЬНОГО ПРОГРАММИРОВАНИЯ DELPHI................ 371

9.8. СИСТЕМА ОБЪЕКТНОГО ПРОГРАММИРОВАНИЯ SMALLTALK.............................. 374

Контрольные вопросы и задания............................................................................................. 383

Дополнительная литература к главе 3..................................................................................... 384

ЧАСТЬ ВТОРАЯ.............................................................................................................. 387

ГЛАВА 4 ВЫЧИСЛИТЕЛЬНАЯ ТЕХНИКА.......................................................................... 387

ВВЕДЕНИЕ................................................................................................................................... 387

§ 1. ИСТОРИЯ РАЗВИТИЯ ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ.................................................. 387

1.1. НАЧАЛЬНЫЙ ЭТАП РАЗВИТИЯ ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ....................... 387

1.2. НАЧАЛО СОВРЕМЕННОЙ ИСТОРИИ ЭЛЕКТРОННОЙ ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ ………………………………………………………………………………………………...389

1.3. ПОКОЛЕНИЯ ЭВМ...................................................................................................... 391

1.4. ПЕРСОНАЛЬНЫЕ КОМПЬЮТЕРЫ.................................................................................. 393

1.5. И НЕ ТОЛЬКО ПЕРСОНАЛЬНЫЕ КОМПЬЮТЕРЫ........................................................ 394

1.6. ЧТО ВПЕРЕДИ?................................................................................................................. 396

Контрольные вопросы.............................................................................................................. 396

§2. АРХИТЕКТУРА ЭВМ............................................................................................................. 397

2.1. О ПОНЯТИИ «АРХИТЕКТУРА ЭВМ»............................................................................. 397

1.2. КЛАССИЧЕСКАЯ АРХИТЕКТУРА ЭВМ II ПРИНЦИПЫ ФОН НЕЙМАНА................. 398

2.3. СОВЕРШЕНСТВОВАНИЕ И РАЗВИТИЕ ВНУТРЕННЕЙ СТРУКТУРЫ ЭВМ.............. 400

2.4. ОСНОВНОЙ ЦИКЛ РАБОТЫ ЭВМ.................................................................................. 402

2.5. СИСТЕМА КОМАНД ЭВМ И СПОСОБЫ ОБРАЩЕНИЯ К ДАННЫМ......................... 403

Контрольные вопросы.............................................................................................................. 405

§3. АРХИТЕКТУРА МИКРОПРОЦЕССОРОВ............................................................................ 406

3.1. ИСТОРИЯ РАЗВИТИЯ МИКРОПРОЦЕССОРОВ............................................................. 406

3.3. ВНУТРЕННЯЯ ОРГАНИЗАЦИЯ МИКРОПРОЦЕССОРА............................................... 408

3.3. РАБОТА МИКРОПРОЦЕССОРА С ПАМЯТЬЮ. МЕТОДЫ АДРЕСАЦИИ.................... 410

3.4. ФОРМАТЫ ДАННЫХ....................................................................................................... 412

3.5. ОБРАБОТКА ПРЕРЫВАНИЙ........................................................................................... 413

3.6. РАБОТА МИКРОПРОЦЕССОРА С ВНЕШНИМИ УСТРОЙСТВАМИ........................... 414

3.7. ПРИМЕР: СИСТЕМА КОМАНД ПРОЦЕССОРОВ СЕМЕЙСТВА PDP........................... 416

Контрольные вопросы и задания............................................................................................. 421

§4. УЧЕБНАЯ МОДЕЛЬ МИКРОКОМПЬЮТЕРА...................................................................... 421

4.1. СТРУКТУРА УЧЕБНОГО МИКРОКОМПЬЮТЕРА......................................................... 422

4.2. СИСТЕМА КОМАНД......................................................................................................... 424

4.3. АДРЕСАЦИЯ ДАННЫХ.................................................................................................... 427

4.4. РАБОТА С ВНЕШНИМИ УСТРОЙСТВАМИ.................................................................. 429

4.5. ПРИМЕРЫ ПРОГРАММ.................................................................................................... 430

Контрольные вопросы и задания............................................................................................. 434

§ 5. ВНЕШНИЕ УСТРОЙСТВА ЭВМ: ФИЗИЧЕСКИЕ ПРИНЦИПЫ И ХАРАКТЕРИСТИКИ 436

5.1. ВНЕШНИЕ ЗАПОМИНАЮЩИЕ УСТРОЙСТВА............................................................ 436

5.2. УСТРОЙСТВА ВВОДА ИНФОРМАЦИИ......................................................................... 438

5.3. УСТРОЙСТВА ВЫВОДА ИНФОРМАЦИИ...................................................................... 439

Контрольные вопросы и задания............................................................................................. 442

§ 6. ЛОГИЧЕСКИЕ ОСНОВЫ ФУНКЦИОНИРОВАНИЯ ЭВМ................................................. 442

6.1. ЛОГИКА ВЫСКАЗЫВАНИЙ. ЭЛЕМЕНТАРНЫЕ ЛОГИЧЕСКИЕ ФУНКЦИИ............. 442

6.2. СХЕМНАЯ РЕАЛИЗАЦИЯ ЭЛЕМЕНТАРНЫХ ЛОГИЧЕСКИХ ОПЕРАЦИЙ. ТИПОВЫЕ ЛОГИЧЕСКИЕ УЗЛЫ........................................................................................................................ 444

63. ПРИМЕР ЭЛЕКТРОННОЙ РЕАЛИЗАЦИИ ЛОГИЧЕСКОГО ЭЛЕМЕНТА..................... 449

Контрольные вопросы и задания............................................................................................. 450

Дополнительная литература к главе 4..................................................................................... 450

ГЛАВА 5 КОМПЬЮТЕРНЫЕ СЕТИ И ТЕЛЕКОММУНИКАЦИИ........................................... 451

ВВЕДЕНИЕ................................................................................................................................... 451

§ 1. ЛОКАЛЬНЫЕ СЕТИ.............................................................................................................. 452

1.1. АППАРАТНЫЕ СРЕДСТВА.............................................................................................. 452

1.2. КОНФИГУРАЦИИ ЛОКАЛЬНЫХ СЕТЕЙ И ОРГАНИЗАЦИЯ ОБМЕНА ИНФОРМАЦИЕЙ 454

1.3. ЛОКАЛЬНЫЕ СЕТИ УЧЕБНОГО НАЗНАЧЕНИЯ.......................................................... 458

Контрольные вопросы.............................................................................................................. 459

§2. ОПЕРАЦИОННЫЕ СИСТЕМЫ ЛОКАЛЬНЫХ СЕТЕЙ........................................................ 460

Контрольные вопросы ч задания............................................................................................. 465

§3. ГЛОБАЛЬНЫЕ СЕТИ............................................................................................................. 465

3.1. ОБЩИЕ ПРИНЦИПЫ ОРГАНИЗАЦИИ........................................................................... 465

3.2. АППАРАТНЫЕ СРЕДСТВА И ПРОТОКОЛЫ ОБМЕНА ИНФОРМАЦИЕЙ.................. 467

3.3. ЭЛЕКТРОННАЯ ПОЧТА................................................................................................... 469

3.4. ON-LINE INTERNET.......................................................................................................... 477

§ 4. ПРЕДСТАВЛЕНИЕ ОБ ОПЕРАЦИОННОЙ СИСТЕМЕ UNIX............................................ 488

§ 5. ИСПОЛЬЗОВАНИЕ КОМПЬЮТЕРНЫХ СЕТЕЙ В ОБРАЗОВАНИИ................................ 492

5.1. ТЕЛЕКОММУНИКАЦИИ КАК СРЕДСТВО ОБРАЗОВАТЕЛЬНЫХ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ................................................................................................................................... 492

5.2. ПЕРСОНАЛЬНЫЙ ОБМЕН СООБЩЕНИЯМИ................................................................ 494

5.3. ИНФОРМАЦИОННОЕ ОБЕСПЕЧЕНИЕ.......................................................................... 495

5.4. СОВМЕСТНОЕ РЕШЕНИЕ ЗАДАЧ.................................................................................. 496

ГЛАВА 6 ИНФОРМАЦИОННЫЕ СИСТЕМЫ.......................................................................... 499

ВВЕДЕНИЕ................................................................................................................................... 499

§ 1. БАНКИ ИНФОРМАЦИИ....................................................................................................... 500

1.1. БАНКИ ДАННЫХ.............................................................................................................. 500

1.2. БАНКИ ДОКУМЕНТОВ.................................................................................................... 501

1.3. БАНК ПЕДАГОГИЧЕСКОЙ ИНФОРМАЦИИ................................................................. 503

§ 2. БАЗЫ ДАННЫХ В СТРУКТУРЕ ИНФОРМАЦИОННЫХ СИСТЕМ.................................. 509

2.1. ОСНОВНЫЕ ПОНЯТИЯ.................................................................................................... 509

2.2. ПРОЕКТИРОВАНИЕ БАЗ ДАННЫХ................................................................................ 511

2.3. ПРЕДСТАВЛЕНИЕ ОБ ЯЗЫКАХ УПРАВЛЕНИЯ РЕЛЯЦИОННЫМИ БАЗАМИ ДАННЫХ ТИПА dBASE 514

§ 3. АВТОМАТИЗИРОВАННЫЕ ИНФОРМАЦИОННЫЕ СИСТЕМЫ...................................... 537

3.1. АВТОМАТИЗИРОВАННЫЕ СИСТЕМЫ УПРАВЛЕНИЯ............................................... 537

3.2. ИНФОРМАЦИОННЫЕ СИСТЕМЫ УПРАВЛЕНИЯ........................................................ 540

3.3. АВТОМАТИЗИРОВАННЫЕ СИСТЕМЫ НАУЧНЫХ ИССЛЕДОВАНИЙ..................... 547

3.4. СИСТЕМЫ АВТОМАТИЗИРОВАННОГО ПРОЕКТИРОВАНИЯ................................... 547

3.5. ГЕОИНФОРМАЦИОННЫЕ СИСГЕМЫ........................................................................... 548

Контрольные вопросы.............................................................................................................. 550

§4. ЭКСПЕРТНЫЕ СИСТЕМЫ.................................................................................................... 550

Контрольные вопросы и задания............................................................................................. 555

§ 5. КОМПЬЮТЕРНЫЕ ОБУЧАЮЩИЕ СИСТЕМЫ.................................................................. 555

5.1. ОСНОВНЫЕ ПРИНЦИПЫ НОВЫХ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ ОБУЧЕНИЯ 555

5.2. ТИПЫ ОБУЧАЮЩИХ ПРОГРАММ................................................................................ 558

5.3. КОМПЬЮТЕРНОЕ ТЕСТИРОВАНИЕ.............................................................................. 564

5.4. ПЕРСПЕКТИВНЫЕ ИССЛЕДОВАНИЯ В ОБЛАСТИ КОМПЬЮТЕРНОГО ОБУЧЕНИЯ 571

ГЛАВА 7 КОМПЬЮТЕРНОЕ МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ.............................. 574

ВВЕДЕНИЕ................................................................................................................................... 574

§ 1. О РАЗНОВИДНОСТЯХ МОДЕЛИРОВАНИЯ...................................................................... 575

§2. ПОНЯТИЕ О КОМПЬЮТЕРНОМ МАТЕМАТИЧЕСКОМ МОДЕЛИРОВАНИИ............... 576

2.1. МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ И КОМПЬЮТЕРЫ...................................... 576

2.2. ЭТАПЫ И ЦЕЛИ КОМПЬЮТЕРНОГО МАТЕМАТИЧЕСКОГО МОДЕЛИРОВАНИЯ. 577

2.3. КЛАССИФИКАЦИЯ МАТЕМАТИЧЕСКИХ МОДЕЛЕЙ................................................. 579

2.4. НЕКОТОРЫЕ ПРИЕМЫ ПРОГРАММИРОВАНИЯ.......................................................... 581

§3. МОДЕЛИРОВАНИЕ ФИЗИЧЕСКИХ ПРОЦЕССОВ............................................................. 590

3.1. ФИЗИКА И МОДЕЛИРОВАНИЕ...................................................................................... 590

3.2. СВОБОДНОЕ ПАДЕНИЕ ТЕЛА С УЧЕТОМ СОПРОТИВЛЕНИЯ СРЕДЫ.................... 591

3.3. ДВИЖЕНИЕ ТЕЛА, БРОШЕННОГО ПОД УГЛОМ К ГОРИЗОНТУ.............................. 597

ЗАКОНЫ ПОДОБИЯ................................................................................................................ 597

3.4. ДВИЖЕНИЕ ТЕЛА С ПЕРЕМЕННОЙ МАССОЙ: ВЗЛЕТ РАКЕТЫ............................... 604

3.5. ДВИЖЕНИЕ НЕБЕСНЫХ ТЕЛ.......................................................................................... 606

3.6. ДВИЖЕНИЕ ЗАРЯЖЕННЫХ ЧАСТИЦ............................................................................ 609

3.7. КОЛЕБАНИЯ МАТЕМАТИЧЕСКОГО МАЯТНИКА....................................................... 611

3.8. МОДЕЛИРОВАНИЕ ЯВЛЕНИЙ........................................................................................ 619

И ПРОЦЕССОВ В ПРИБЛИЖЕНИИ СПЛОШНОЙ СРЕДЫ................................................... 619

3.9. МОДЕЛИРОВАНИЕ ПРОЦЕССА ТЕПЛОПРОВОДНОСТИ............................................ 626

Контрольные вопросы и задания............................................................................................. 634

§ 4. КОМПЬЮТЕРНОЕ МОДЕЛИРОВАНИЕ В ЭКОЛОГИИ..................................................... 636

4.1. ЭКОЛОГИЯ И МОДЕЛИРОВАНИЕ................................................................................. 637

4.2. МОДЕЛИ ВНУТРИВИДОВОЙ КОНКУРЕНЦИИ............................................................ 638

4.3. ЛОГИСТИЧЕСКАЯ МОДЕЛЬ МЕЖВИДОВОЙ КОНКУРЕНЦИИ................................. 643

4.4. ДИНАМИКА ЧИСЛЕННОСТИ ПОПУЛЯЦИЙ ХИЩНИКА И ЖЕРТВЫ....................... 645

4.5. ИМИТАЦИОННОЕ МОДЕЛИРОВАНИЕ ДИНАМИКИ ПОПУЛЯЦИЙ......................... 647

Контрольные вопросы и задания............................................................................................. 651

§5. ГЛОБАЛЬНЫЕ МОДЕЛИ РАЗВИТИЯ ЧЕЛОВЕЧЕСТВА.................................................... 652

§ 6. МОДЕЛИРОВАНИЕ СЛУЧАЙНЫХ ПРОЦЕССОВ............................................................. 656

6.1. ТЕХНИКА СТОХАСТИЧЕСКОГО МОДЕЛИРОВАНИЯ................................................ 656

6.2. МОДЕЛИРОВАНИЕ СЛУЧАЙНЫХ ПРОЦЕССОВ В СИСТЕМАХ МАССОВОГО ОБСЛУЖИВАНИЯ............................................................................................................................. 659

6.3. РАЗЛИЧНЫЕ ПРИМЕРЫ МОДЕЛИРОВАНИЯ СЛУЧАЙНЫХ ПРОЦЕССОВ.............. 665

Контрольные вопросы и задания............................................................................................. 669

§7. КОМПЬЮТЕРНОЕ МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ В ЭКОНОМИКЕ............. 671

7.1. ПОСТАНОВКА ЗУД4ЧИ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ............................... 671

7.2. СИМПЛЕКС-МЕТОД......................................................................................................... 676

Контрольные вопросы и задания............................................................................................. 679

Дополнительная литература к главе 7..................................................................................... 681

Содержание...................................................................................................................................... 682

 

– Конец работы –

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

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Основы информатики

Что будем делать с полученным материалом:

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

Еще рефераты, курсовые, дипломные работы на эту тему:

Лекции 1.ОСНОВНЫЕ ПОНЯТИЯ И КАТЕГОРИЯ ИНФОРМАТИКИ. 2 ЛЕКЦИИ 2. МАТЕМАТИЧЕСКИЕ ОСНОВЫ ИНФОРМАТИКИ. СИСТЕМЫ СЧИСЛЕНИЯ. 12 ЛЕКЦИЯ 3. АППАРАТНОЕ ОБЕСПЕЧЕНИЕ ЭВМ. 20 ЛЕКЦИЯ 4. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ КОМПЬЮТЕРОВ.. 49 Широко распространён также англоязычный вар
gl ОГЛАВЛЕНИЕ... Лекции ОСНОВНЫЕ ПОНЯТИЯ И КАТЕГОРИЯ ИНФОРМАТИКИ... ЛЕКЦИИ МАТЕМАТИЧЕСКИЕ ОСНОВЫ ИНФОРМАТИКИ СИСТЕМЫ СЧИСЛЕНИЯ...

ЛЕКЦИЯ 1. 3 ПОНЯТИЕ ПРАВОВОЙ ИНФОРМАТИКИ И ЕЕ ПРЕДМЕТ. Правовая информатика как наука и учебная дисциплина. О месте правовой информатики в системе наук и правоведении. 14
ВВЕДЕНИЕ... ЛЕКЦИЯ... ПОНЯТИЕ ПРАВОВОЙ ИНФОРМАТИКИ И ЕЕ ПРЕДМЕТ Правовая информатика как наука и учебная дисциплина...

Основы планирования. Теоретические основы управления проектами. Основы планирования. Планирование проекта в MS Project 7
Использованная литература В В Богданов Управление проектами в Microsoft Project Учебный курс Санкт Петербург Питер г...

Лекции по курсу Информатика Лекция 1. Основные понятия и методы теории информатики и кодирования. Информатика как научная дисциплина. Понятие информации и информационных процессов
Лекция Основные понятия и методы теории информатики и кодирования... Информатика как научная дисциплина... Понятие информации и информационных процессов...

Ведение в курс "Основы экономической теории" (Введення в курс "Основи економiчної теорiї)
В працях Ксенофонта 430 355 рр. до н. е Платона 427 347 рр. .о н. Аристотеля 384 322 рр. до н. е а також мислителв стародавнього Риму, нд, Китаю… Але не кожна економчна думка розвиваться у систему поглядв ста економчним… Н в рабовласницькому, н у феодальному суспльств ще не снувало струнко системи економчних поглядв на економчн процеси.…

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

ОСНОВИ ТЕОРIЇ КIЛ, ОСНОВИ РАДІОЕЛЕКТРОНІКИ
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ... ХАРКІВСЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ РАДІОЕЛЕКТРОНІКИ...

Основы современной информатики
Московский инженерно физический институт... государственный университет...

КУРС ЛЕКЦИЙ по дисциплине Информатика Лекция 1 1. Введение в информатику
Федеральное агентство по образованию... Государственное образовательное учреждение... высшего профессионального образования...

Конспект лекций по дисциплине Информатика Введение в информатику
Введение в информатику Определение инфоpматики В году... Формы существования информации... Информация может существовать в самых разнообразных формах...

0.026
Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • По категориям
  • По работам
  • МЕТОДИКА ПОДГОТОВКИ К ЕГЭ ПО ИНФОРМАТИКЕ ПО ТЕМЕ «ОСНОВЫ ЛОГИКИ» Изучение логики развивает: ясность и четкость мышления; способность предельно уточнять предмет мысли; внимательность, аккуратность, обстоятельность,… Цель: комплексное, системное изучение методики подготовки к ЕГЭ по информатике… Логика — наука о способах и формах мышления, которая возникла в Древнем Китае и Индии. Основоположником формальной…
  • МЕТОДИКА ПОДГОТОВКИ К ЕГЭ ПО ИНФОРМАТИКЕ ПО ТЕМЕ «ОСНОВЫ ЛОГИКИ» Изучение логики развивает: ясность и четкость мышления; способность предельно уточнять предмет мысли; внимательность, аккуратность, обстоятельность,… Цель: комплексное, системное изучение методики подготовки к ЕГЭ по информатике… Логика — наука о способах и формах мышления, которая возникла в Древнем Китае и Индии. Основоположником формальной…
  • Объект и предмет информатики. Структура Информатики Информатика делится на ряд разделов... Теоретическая информатика... Основная статья Теоретическая информатика...
  • ОСНОВЫ ИНФОРМАТИКИ ОСНОВЫ ИНФОРМАТИКИ Курс лекций Лекции рассчитаны на студентов высших учебных заведений Цель... Содержание... Вводная лекция...
  • ИНФОРМАТИКА. ОСНОВЫ РАБОТЫ В WINDOWS XP Государственное образовательное учреждение... высшего профессионального образования Санкт Петербургский государственный...