Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс лекций КИТ.doc
Скачиваний:
31
Добавлен:
25.11.2019
Размер:
1.91 Mб
Скачать
  • Пользовательский словарь формируется пользователем вручную. В него можно включить слова, отсутствующие в других словарях, или представить более точный перевод каких-то из терминов. Пользовательские словари можно произвольно создавать и редактиро­вать. Применяют пользовательские словари обычно в первую оче­редь, до специализированных и генерального словарей.

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

    В отличие от всех перечисленных выше программ, англо-русско-английский переводчик Magic Gooddy - единственная про­грамма этого класса, изначально ориентированная на домашнего пользователя. И пусть Magic Gooddy не самый профессиональный и умелый из всех существующих переводчиков (хотя качество его пере­водов часто не уступает дорогому PROMT) - но он, без сомнения, са­мый удобный, простой и красивый. Общаться с программой помогает гусёнок Gooddy. Для перевода необходимо выделить нужный фрагмент текста, бросить его с помощью мышки на гусенка - и перевод готов!

    Хотя Magic Gooddy и не встраивает свои команды ни в одну из популярных программ-редакторов, он может переводить текст, созданный практически в любом приложении Windows - текстовом ре­дакторе, почтовом клиенте т. д. Он спокойно справляется даже с фрагментом файла справки (Help). Эта программа понимает также команды, отданные через микрофон, она может прочесть вслух ваш текст, на русском или английском языках. Можно отправить переведённый вами текст по электронной почте - для этого текстовый редактор Gooddy оснащён специальной кнопкой.

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

    1. Технологии организации рабочего места

    Приложение MS OutLook, входящее в состав пакета Microsoft Office, является организатором и обеспечивает совмещение нескольких функций:

    • Управление электронными коммуникациями;

    • Обработка перечня заданий (работ);

    • Календаря;

    • Дневника;

    • Записной книжки;

    • Списка контактов;

    • Секретарские функции.

    Рассмотрим некоторые функции MS OutLook.

    Эффективная работа с почтой. Outlook помогает читать, сортировать, отслеживать и находить сообщения электронной почты более эффективно, чем ранее. Новый вид окон позволяет одновременно выводить на экран больше сведений даже на небольших мониторах. Улучшенная структура списка сообщений эффективнее использует место, и в результате на прокрутку тратится меньше времени, а больше остается на работу. Автоматическая группировка сообщений помогает быстрее находить сообщения, в каком бы месте они не находились - можно даже одновременно перемещать или удалять все сообщения из группы!

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

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

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

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

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

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

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

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

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

    • Участник.    Лицо, приглашенное на собрание, рассматривается как его участник. Существует две категории участников: обязательные и необязательные. Лицо, добавленное к списку участников, всегда будет считаться участником собрания. Даже если участник отклоняет собрание, он продолжает рассматриваться в качестве участника.

    • Место/ресурс.    Место проведения собрания иногда называют ресурсом. Как будет указано место (или ресурс) для собрания — зависит от особенностей политик в данной организации. Более подробно об этом говорится в разделе «Место. Место... Место!» далее в этом курсе.

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

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

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

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

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

    1. Исторический аспект развития прикладного ПО.

    2. Причины появления пакетов прикладных программ.

    3. Структура ППП.

    4. Наиболее известные ППП.

    5. Как автоматизировать ввод документов в компьютер.

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

    7. От чего зависит качество сканированного текста.

    8. Для чего используются программы словари.

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

    10. Какие функции выполняет приложение MS OutLook.

    11. В каких целях организуется собрание.

    12. Как просмотреть список дел на рабочие дни.

    Литература

    1. Голицына О.Л. и др. Информационные технологии: учебник. – 2-е изд., перераб. и доп. – М.: ФОРУМ:ИНФРА-М, 2008. – С. 212-229, 263-277.

    2. Михеева Е.В. Информационные технологии в профессиональной деятельности: Учебное пособие. – М.: Издательский центр «Академия», 2004. – С. 201-226.

    Основные понятия

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

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

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

    Электронный словарь - программное средство для пере­вода отдельных слов.

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

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

    Лекция 13. Технологии искусственного интеллекта

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

    План

    1. Понятие искусственного интеллекта.

    2. Области применения ИИ.

    3. Понятие экспертной системы.

    1. Понятие искусственного интеллекта

    «Интеллект – совокупность всех познавательных функций индивида: от ощущений и восприятия до мышления и воображения; в более узком смысле – мышление. И. – основная форма познания человеком действительности. Существуют три разновидности в понимании функции И.: 1) способности к обучению; 2) оперирование символами; 3) способность к активному овладению закономерностей окружающей нас действительности» (Рапацевич Е.С. Словарь-справочник по научно-техническому творчеству. – Мн.: ООО «Этоним», 1995. – 384 с. – С. 51-52.). (Сл 2)

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

    «Интеллект искусственный – 1) условное обозначение кибернетических систем и их логико-математического обеспечения, предназначенных для решения некоторых задач, обычно требующих использования интеллектуальных способностей человека; 2) совокупность функциональных возможностей электронно-вычислительной машины (ЭВМ) решать задачи, ранее требовавшие обязательного участия человека» (Там же, с. 54).

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

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

    Искусственный интеллект – одно из новейших направлений науки, появившееся в середине 60-х г.г. ХХ в. на базе вычислительной техники, математической логики, программирования, психологии, лингвистики, нейрофизиологии и других отраслей знаний. Искусственный интеллект – это образец междисциплинарных исследований, где соединяются профессиональные интересы специалистов разного профиля. Само название новой науки возникло в конце 60-х гг,. а в1969 г. в Вашингтоне (США) состоялась первая Всемирная конференция по искусственному интеллекту.

    Когда в конце 40-х – начале 50-х гг. появились ЭВМ, стало ясно, что инженеры и математики создали не просто быстро работающее устройство для вычислений, а нечто более значительное. Оказалось, что с помощью ЭИМ можно решать различные головоломки, логические задачи, играть в шахматы, создавать игровые программы. ЭВМ стали принимать участие в творческих процессах: сочинять музыкальные мелодии, стихотворения и даже сказки. Появились программы для перевода с одного языка на другой, для распознавания образов, доказательства теорем. Это свидетельствовало о том, что с помощью ЭВМ и соответствующих программ можно автоматизировать такие виды человеческой деятельности, которые называются интеллектуальными и считаются доступными лишь человеку. Несмотря на большое разнообразие невычислительных программ, созданных к началу 60-х гг., программирование в сфере интеллектуальной деятельности находилось в гораздо худшем положении, чем решение расчетных задач. Причина очевидна. Программирование для задач расчетного характера опиралось на соответствующую теорию – вычислительную математику. На основе этой теории было разработано много методов решения задач. Эти методы стали основой для соответствующих программ. Ничего подобного для невычислительных задач не было. Любая программа была здесь уникальной, как произведение искусства. Опыт создания таких программ никак не обобщался, умение их создавать не формализовалось.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    2. Области применения ии

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

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

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

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

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

    3. Системы символьных вычислений

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

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

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

    7. Экспертные системы – системы, использующие знания специалистов в конкретных видах деятельности.

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

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

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

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

    12. Интеллектуальные роботы.

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

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

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

    Компания Panasonic объявляет о начале поставок нового проектора pt AE500E с искусственным интеллектом. Встроенный искусственный интеллект, автоматически управляющий яркостью лампы в зависимости от входного видеосигнала, обеспечивающий уровень контраста 1300:1.

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

    В первом процессоре, выпущенном Intel 11 ноября 1971 г., 2.300 транзисторов умеcтились на схеме размером с ноготь. Микрочип выполнял 60 тыс. операций в секунду - ничто по современным меркам, но тогда это был серьезный прорыв. С тех пор вычислительные технологии шагнули далеко вперед. Например, подсчитано, что за 30 лет существования микропроцессоров минимальный размер элементов процессора уменьшился в 17 раз, тогда как количество транзисторов увеличилось в 18 тыс. раз, а тактовая частота возросла в 14 тыс. раз. Нынешняя технология производства процессоров, применяемая корпорацией Intel, позволяет производить транзисторы размером с молекулу, а в будущем - в несколько атомных слоев.

    Индустрия информационных технологий - одна из наиболее динамично развивающихся сфер жизни. В соответствии с законом Мура, в 2020 году компьютеры достигнут мощности человеческого мозга, т.к. смогут выполнять 20 квадриллионов (т.е. 20.000.000 миллиардов) операций в секунду, а к 2060 году, как считают некоторые футурологи, компьютер сравняется по силе разума со всем человечеством. Впрочем, еще в 1994 году ПК на базе процессора Intel Pentium со смехотворной, по нынешним временам, частотой 90 МГц обыграл в серии турниров по шахматам нескольких сильнейших гроссмейстеров мира, включая действующего чемпиона планеты - Гарри Каспарова.

    Уже сегодня существуют реальные возможности применения интеллектуальных технологий в практически любом автомобиле. Например, телефонная гарнитура BlueConnect производства компании Johnson Controls - интегрированный автомодуль hands-free на базе процессоров Intel PXA250 и Intel PXA210 - позволяет водителю выполнять самые разнообразные действия, активизируемые голосом, с помощью сотового телефона и технологии Bluetooth.

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

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

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

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

    1. Понятие экспертной системы

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

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

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

    Определение, одобренное Комитетом по экспертным системам Британского компьютерного общества: - это система, объединяющая возможности компьютера со знаниями и опытом экспертов в такой форме, что система может предложить РАЗУМНЫЙ СОВЕТ или осуществить РАЗУМНОЕ РЕШЕНИЕ задач. Такая система должна уметь объяснять из своих рассуждений в понятной форме.

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

    От других программ экспертные системы отличаются по следующим признакам:

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

    2. символьные рассуждения – знания, на которых основана экспертная система, представляют в символьном виде понятия реального мира, рассуждения также происходят в виде преобразований символьных наборов;

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

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

    Архитектура ЭС:

    • интерфейсы пользователя (П), специалистов по ЭС (СЭС), которые работают совместно с экспертами (Э), и коммуникационные интерфейсы (диалоговый компонент);

    • база знаний (БЗ) – совокупность структурированных знаний о предметной области, организованную так, чтобы на основе этих знаний с помощью программ ЭС можно было делать рассуждения, находить решения и объяснять выбор этого решения;

    • СУБЗнаний – совокупность языковых и программных средств для создания и ведения БЗ (компонент приобретения знаний);

    • Система поиска решения (СПР) – комплекс программ, позволяющих на основе БЗ с помощью математических, логических и эвристических методов дать пользователю рекомендации по принятию решения (логическая машина вывода);

    • Система объяснений выбранного решения (СОВР) – комплекс программ, поясняющих пользователю, почему СПР выбрала то или иное решение (объяснительный компонент).

    Примечание. В скобках указана терминология по [1].

    Экспертные системы строятся на основе:

    - представления знаний в виде набора правил (rule-based подход);

    - на основе обучения системы (case-based подход).

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

    Экспертные системы можно классифицировать по следующим признакам:

    1. По типу приложения:

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

    Б) по возможности функционирования приложения на различных аппаратно-программных платформах

    В) по архитектуре приложения (централизованное, децентрализованное)

    2. По стадии существования – стадия обучения, стадия эксплуатации.

    3. По масштабу – масштаб отдела, предприятия, отрасли, страны.

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

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

    Экспертные системы применяются для решения таких задач, как:

    • Оценка займов, рисков страхования и капитальных вложений.

    Медицинская диагностика и лечение заболеваний.

    • Синтез новых химических соединений с заданными свойствами.

    • Обучение и т.д.

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

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

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

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

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

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

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

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

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

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

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

    DENDRAL – это старейшая, самая разработанная экспертная система в мире.

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

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

    PROSPECTOR – экспертная система, применяемая при поиске коммерчески оправданных месторождений полезных ископаемых.

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

    Кроме экспертных систем MYCIN, DENDRAL и PROSPECTOR существует большое количество других экспертных систем:

    EMYCIN - для решения коммерческих задач.

    GURU – для решения широкого класса задач.

    GOLDWORKS - для решения широкого класса задач с широким выбором методов поиска.

    ДЭС – для оценки кредитоспособности клиентов (в РБ).

    Бизнес – Прогноз – рекомендации по вопросам работы средних и мелких фирм различных форм собственности.

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

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

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

    1. Для решения каких задач применяют системы искусственного интеллекта.

    2. Основные проблемы создания систем ИИ. систем ИИ.

    3. В каких сферах деятельности человека применяют системы ИИ.

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

    5. Отличие экспертных систем от других информационных систем.

    6. В каких режимах может работать экспертная система.

    7. Наиболее известные экспертные системы.

    8. Может ли машина мыслить?

    Литература

    1. Компьютерные информационные технологии: Учебно-практическое пособие / А.Н. Морозевич, А.К. Голенда, Б.А. Железко и др./ Под ред. А.Н. Морозевича. – Мн.: БГЭУ, 2003. – С. 72-73.

    2. Веретенникова Е.Г., Патрушина С.М., Савельева Н.Г. Информатика: учебное пособие.- Ростов н/Д: ИЦ "МарТ”, 2002. - С. 89-100.

    Основные понятия

    Интеллект – совокупность всех познавательных функций индивида: от ощущений и восприятия до мышления и воображения; в более узком смысле – мышление.

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

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

    Лекция 14. Пакеты для математической обработки данных. Maple. Основы работы

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

    План

    1. Компоненты экрана, справочная система Maple.

    2. Вычисления в Maple.

    3. Решение уравнений.

    1. Компоненты экрана, справочная система Maple

    Maple  – специализированный математический пакет, которым пользуются профессиональные математики во всем мире. Подобные пакеты также называются системами компьютерной алгебры. Из множества подобных систем (Maple, Matlab, Mathcad, Mathematica, Macsyma, Derive, Axiom, MuPAD) Maple является признанным лидером в области символьных вычислений (то есть в преобразовании выражений с использованием переменных, многочленов, функций и т.д.). Помимо этого в Maple входят модули, облегчающие работу в таких разделах математики, как высшая алгебра, линейная алгебра, аналитическая геометрия, теория чисел, математический анализ, дифференциальные уравнения, комбинаторный анализ, теория вероятностей, статистика и многих других.

    Для получения справки по той или иной команде необходимо в окне Maple ввести ?command (заменив command на имя команды).

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

    Меню текстовых команд, кроме общеупотребимых, содержит специфические команды.

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

    1. С имвол - палитра для ввода символов

    1. В ыражение -палитра с шаблонами для ввода выражений

    3 . Матрица -палитра с шаблонами для ввода матриц размерности не более (4x4)

    4. Вектор -палитра с шаблонами для ввода векторов

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

    Работа с палитрами организована просто и понятно. При нажатии необходимой кнопки на какой-либо палитре в строке ввода появляется либо символ (если это палитра Символ), либо шаблон для заполнения пользовательскими данными.

    Команда Вставка содержит пункты:

    Text Ctrl → установка режима ввода текста;

    Maple input Ctrl+BM → установка режима ввода выражения;

    Paragraph → вставка текстовой области (параграфа);

    Section → вставка кнопки секции;

    Subsection → вставка кнопки подсекции;

    Команда Формат содержит пункты:

    Styles → установка стилей для всех объектов;

    Italic Ctrl+I → задание надписей курсивными символами;

    Bold Ctrl+B → задание надписей полужирными прямыми символами;

    Underline Ctrl+U → задание надписей символами, подчеркнутыми снизу;

    Paragraph... → форматирование параграфа;

    Character... → форматирование шрифтов;

    Convert → преобразование выделенного текста в гипертекстовую ссылку, в математическое выражение или в строку ввода Maple.

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

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

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

    Справка содержит следующие пункты:

    • Introduction → справка по теме.

    Help on "context" Ctrl+FI → справка по контексту или тематической помощи.

    New user's → информация о практическом использовании Maple.

    What's new —>информация о новых дополнениях и новинках системы.

    Using help → обучение как пользоваться меню справки.

    Topic index.. . → предметный поиск по заданному образцу.

    search... → предметный поиск с полным обзором текста справки.

    History... → вывод истории справочного поиска.

    Save to database... → сформирование базы данных.

    Remove topic → восстановление базы данных предметного поиска.

    Получать справочную информацию можно и не используя команды Меню Help, а, набрав команду ?topic, где topic означает имя пакета (библиотеки), команды или служебного слова Maple. (Эта команда не завершается точкой с запятой или двоеточием).

    Система Maple предоставляет более удобный способ получения справки по команде, заданной в рабочем листе. Для этого необходимо поместить курсор на имени команды или служенного слова и нажать клавишу <F1>.

    1. Вычисления в Maple

    В рабочем листе (worksheet) системы Maple можно вводить команды после приглашения ">". Команда должна завершаться символом ";", ее результат немедленно выводится на экран. Если вместо ";" поставить ":", то команда будет выполнена, но результат ее работы не будет напечатан. Например:

    > 5+2;

    7

    > 2/3+3/5;

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

    > evalf(2/3+3/5);

    Символ % в аргументе обозначает последнее вычисленное Maple выражение, %% – предпоследнее, %%% — предпредпоследнее (обозначения %%%% уже не существует). Например, команда

    > evalf(%);

    (вычисляет значение ранее введенного выражения 2/3+3/5).

    Числа и константы

    Если в выражении встречается число, записанное с плавающей точкой (например, 3.14 или 5.6e-17), то все вычисления выполняются приближенно, в противном случае вычисления проводятся точно. В Maple есть следующие константы:

    Pi - Число пи

    I - Мнимая единица i

    exp(1) - Основание натуральных логарифмов e

    infinity - Бесконечность

    true - Логическая истина

    false - Логическая ложь

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

    > sin(Pi/3);

    > sin(Pi);

    > sin(3.1415926);

    В Maple существуют следующие операторы:

    • Арифметические: +, -, *, /, ^ (возведение в степень), ! (факториал).

    • Логические: <, >, >=, <=, = (равно), <> (не равно).

    • Оператор присваивания: :=.

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

    > a1:=sin(Pi);

    > > a:=2: b:=3:(a+b)^2;

    > (a+c)^2;

    Стандартные функции

    x1/2 – sqrt(x)

    |x| – abs(x)

    Знак x (возвращает 1, -1 или 0) – sign(x)

    Тригонометрические функции: sin(x), cos(x), tan(x), cot(x)

    Обратные тригонометрические: arcsin(x), arccos(x), arctan(x), arccot(x)

    Экспонента: exp(x)

    Натуральный, десятичный логарифм и логарифм по данному основанию: ln(x), log10(x), log[a](x)

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

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

    > A:=sin(sqrt(Pi)+exp(2));

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

    Функция factor(eq) разлагает выражение eq на множители.

    > P:=x^4+2*x^3+2*x^2+2*x+1:

    factor(P);

    Функция expand(eq) раскрывает скобки в выражении. Если указать один или несколько дополнительных параметров в виде expand(eq,a,b,c), то выражения a, b, c раскрываться не будут. Это полезно, если необходимо каждое слагаемое умножить на какое-то выражение.

    Примеры:

    > expand((x+1)*(x+2));

    > expand(sin(x+y));

    > expand((x+1)*(y+z),x+1);

    Для приведения дробей к общему знаменателю с последующим сокращением используется функция normal(eq).

    > normal(1/x+1/y);

    > (a^4-b^4)/((a^2+b^2)*a*b);

    > normal(%);

    Функция simplify(eq) упрощает выражение eq. В качестве второго (необязательного) параметра, ей можно указать, какие выражения преобразовывать: trig – тригонометрические, power – степенные, radical – радикалы, exp – экспоненты, ln – логарифмы.

    Пример:

    > simplify(sin(x)^2+cos(x)^2);

    Предел вычисляется при помощи функции limit. Ее синтаксис: limit(f(x),x=a), где f(x) – функция, предел которой необходимо вычислить, a – точка, в которой вычисляется предел:

    > > limit(sin(x)/x,x=0);

    В качестве точки могут фигурировать константы infinity и -infinity:

    > > limit( (1+1/n)^n, n=infinity);

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

    > > limit(abs(x)/x, x=0, left);

    > limit(abs(x)/x, x=0, right);

    Для вычисления сумм используется функция sum. Ее синтаксис: sum(f(k),k=a..b), где k – переменная, по которой осуществляется суммирование, f(k) – суммируемые слагаемые, зависящие от k, a и b – пределы суммирования. Например, сумма первых 100 натуральных чисел равна 5050, а сумма их квадратов – 338350:

    > sum(k,k=1..100);

    > sum(k^2,k=1..100);

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

    > > sum(q^k,k=0..infinity);

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

    > product(i,i=1..6);

    > product( (1+1/i^2), i=1..infinity);

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

    > evalf (product((1+1/i^2), i=1..infinity));

    Большинство функций Maple для исcледований в области теории чисел содержатся в модуле numtheory. Для его подключения необходимо дать команду with(numtheory).

    Функция floor(x) округляет число x вниз, ceil(x) округляет число вверх, функция round(x) округляет x до ближайшего целого, функция trunc(x) возвращает floor(x) для положительных x и floor(x) – для отрицательных. Функция frac(x) возвращает дробную часть числа x.

    Для нахождения частного при целочисленном делении используется функция iquo, для вычисления остатка от деления – функция irem. У этих функций два параметра: делимое и делитель. Примеры:

    > iquo(9,2);

    > irem(9,2);

    Для нахождения наибольшего общего делителя двух чисел используется функция igcd, для нахождения наименьшего общего кратного – функция ilcm. Пример:

    > igcd(2224,122);

    > igcd(13,17);

    > ilcm(34,78);

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

    Для построения простых чисел используются функции prevprime, nextprime, ithprime. Функция prevprime(n) возвращает наибольшее простое число, которое меньше n, функция nextprime(n) - которое больше n. Функция ithprime(n) возвращает n-е простое число.

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

    > isprime(137);

    > isprime(2219);

    > ifactor(2219);

    > ifactors(2219);

    > ifactor(408);

    > > nextprime(408);

    > isprime(408);

    > isprime(409);

    > ithprime(3);

    1. Решение уравнений

    Для решения уравнений используется функция solve(eq,x), где eq – решаемое уравнение, x – имя переменной, относительно которой разрешается уравнение. Пример:

    > solve(x^2+x-1=0,x);

    > solve(a*x+b=0,x);

    > solve(a*x+b=0,b);

    Если уравнение имеет несколько решений, то решение уравнения можно присвоить некоторой переменной, например p. Далее можно использовать k-е решение уравнения в виде p[k]:

    > p:=solve(x^2+x-1=0,x): p[1];

    > simplify(p[1]*p[2]);

    Системы уравнений решаются с помощью такой же функции solve({eq1,eq2,...},{x1,x2,...}), только теперь в параметрах функции следует указывать в первых фигурных скобках через запятую уравнения, а во вторых фигурных скобках перечисляются через запятую переменные, относительно которых требуется решить систему. Если необходимо использовать полученные решения уравнений для дальнейших вычислений, то необходимо результат, возвращаемый функцией solve присвоить какой-нибудь переменной, например, p, а затем выполнить команду assign(p). Пример:

    • solve( {x+y=a,x-y=b}, {x,y} );

    > p:=solve( {x+y=a,x-y=b}, {x,y} ):

    assign(p);

    x;

    > a:=5;b:=-2;

    > p:=solve( {x+y=a,x-y=b}, {x,y} ):

    assign(p);

    x;

    Численное решение уравнений

    Попробуем решить уравнение: x6-2x+1=0, используя функцию solve:

    > solve(x^6-2*x+1=0,x);

    Функция solve дает один корень (1) и набор выражений вида RootOf(_..). Дело в том, что произвольное уравнение степени выше 4 с рациональными коэффициентами может не иметь корней, выразимых в виде радикалов над рациональными числами. Решения таких уравнений называются алгебраическими числами. Данное уравнение неразрешимо в радикалах, и Maple нашла единственный корень, выразимый в радикалах (1), и сообщила, что оставшиеся корни являются алгебраическими числами: корнями многочлена z5+z4+z3+z2+z-1=0 (именно этот многочлен указан в аргументе функции RootOf).

    Но можно найти приближенное численное решение при помощи функции fsolve:

    > fsolve(x^6-2*x+1=0,x);

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

    > solve(sin(2*x)+cos(2*x)=1,x);

    Команда solve применяется также для решения неравенств. Решение неравенства выдается в виде интервала изменения искомой переменной. В том случае, если решение неравенства полуось, то в поле вывода появляется конструкция вида RealRange(– , Open(a)), которая означает, что x (– , a), а – некоторое число. Слово Open означает, что интервал с открытой границей. Если этого слова нет, то соответствующая граница интервала включена во множество решений. Например:

    > s:=solve(sqrt(x+3)<sqrt(x-1)+sqrt(x-2),x):

    convert(s,radical);

    Если надо получить решение неравенства не в виде интервального множества типа x (a, b), а в виде ограничений для искомой переменной типа a<x, x< b, то переменную, относительно которой следует разрешить неравенство, следует указывать в фигурных скобках. Например:

    > solve(1-1/2*ln(x)>2,{x});

    С помощью команды solve можно также решить систему неравенств. Например:

    > solve({x+y>=2,x-2*y<=1,x-y>=0,x-2*y>=1},{x,y});

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

    1. Какие задачи пользователя решают с использованием пакета Maple.

    2. Структура окна Maple.

    3. Какие палитры имеются для ввода данных в Maple.

    4. Как можно вставить в документ текстовую область? Математическую область?

    5. Как система распознает окончание ввода пользователем команды.

    6. Как форматировать символы в выражениях.

    7. Перечислите команды для выполнения основных математических действий в Maple.

    8. Формат записи команды решения уравнения.

    9. Формат записи команды решения системы уравнений.

    Литература

    1. Maple:система компьютерной алгебры: Учеб.-мет. пособие/ Авт.-сос. И.Е. Андрушкевич, В.А. Жизневский. – Витебск: Изд-во УО «ВГУ им. П.М. Машерова», 2006. – С. 6-15.

    2. Рычков В. И др. Компьютер для студента. Самоучитель. – СПб.: Питер, 2000. – С. 350-370.

    Основные понятия

    Палитра Mapleпанель элементов, применяемых при вводе команд Maple.

    Команда Maple – последовательность из ключевого слова и аргументов.

    Лекция 15. Пакеты для математической обработки данных.Maple. Матрицы и графики

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

    План

    1. Работа с массивами.

    2. Графики и анимация.

    1. Работа с массивами

    Основная часть команд для решения задач линейной алгебры содержится в библиотеке linalg. Поэтому перед решением задач с матрицами и векторами следует загрузить эту библиотеку командой with(linalg).

     

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

    Для определения вектора в Maple используется команда vector([x1,x2,…,xn]), где в квадратных скобках через запятую указываются координаты вектора. Например:

    > x:=vector([1,0,0]);

    x:=[1, 0, 0]

    Координату уже определенного вектора x можно получить в строке вывода, если ввести команду x[i] , где i  номер координаты. Например, первую координату заданного в предыдущем примере вектора можно вывести так:

    > x[1];

    1

     

    Сложение векторов

    Сложить два вектора a и b можно с помощью двух команд:

    1) evalm(a+b);

    2) matadd(a,b).

     

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

    Скалярное произведение двух векторов вычисляется командой dotprod(a,b).

    Векторное произведение двух векторов вычисляется командой crossprod(a,b).

    Угол между двумя векторами a и b вычисляется с помощью команды angle(a,b).

     

    Норма вектора

    Норму (длину) вектора , которая равна , можно вычислить с помощью команды norm(а,2).

    Можно нормировать вектор а с помощью команды normalize(a), в результате выполнения которой будет получен вектор единичной длины .

     Примеры

    1. Даны два вектора: и . Найти и угол между a и b. Для решения этой задачи наберите:

    > with(linalg):

    > a:=([2,1,3,2]); b:=([1,2,-2,1]);

    a:=[2,1,3,2]

    b:=[1,2,-2,1]

    > dotprod(a,b);

    0

    > phi=angle(a,b);

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

    > restart; with(linalg):

    > a:=([2,-2,1]); b:=([2,3,6]);

    a:=[2, 2,1]

    b:=[2,3,6]

    > c:=crossprod(a,b);

    c:=[ 15, 10,10]

    > dotprod(a,c);

    0

    3. Найти норму вектора .

    > restart; with(linalg):

    > a:=vector([1,2,3,4,5,6]): norm(a,2);

     

    Определение матрицы

    Для определения матрицы в Maple можно использовать команду matrix(n, m, [[a11,a12,…,a1n], [a21,a22,…,a2m],…, [an1,an2,…,anm]]), где n  число строк, m – число столбцов в матрице. Эти числа задавать необязательно, а достаточно перечислить элементы матрицы построчно в квадратных скобках через запятую. Например:

    > A:=matrix([[1,2,3],[-3,-2,-1]]);

    В Maple матрицы специального вида можно генерировать с помощью дополнительных команд. В частности диагональную матрицу можно получить командой diag. Например:

    > J:=diag(1,2,3);

    Генерировать матрицу можно с помощью функции f(i, j) от переменных i, j – индексов матрицы: matrix(n, m, f), где где n - число строк, m – число столбцов. Например:

    > f:=(i, j)->x^i*y^j;

    > A:=matrix(2,3,f);

    Число строк в матрице А можно определить с помощью команды rowdim(A), а число столбцов – с помощью команды coldim(A).

     

    Арифметические операции с матрицами

    Сложение двух матриц одинаковой размерности осуществляется теми же командами, что и сложение векторов: evalm(A+B) или matadd(A,B). Произведение двух матриц может быть найдено с помощью двух команд:

    1. evalm(A&*B);

    2. multiply(A,B).

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

    > A:=matrix([[1,0],[0,-1]]);

    > B:=matrix([[-5,1], [7,4]]);

    > v:=vector([2,4]);

    > multiply(A,v);

    > multiply(A,B);

    > matadd(A,B);

    Команда evalm позволяет также прибавлять к матрице число и умножать матрицу на число. Например:

    > С:=matrix([[1,1],[2,3]]):

    > evalm(2+3*С);

     

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

    Определитель матрицы А вычисляется командой det(A). Команда minor(A,i,j) возвращает матрицу, полученную из исходной матрицы А вычеркиванием i-ой строки и j-ого столбца. Минор Mij элемента aij матрицы А можно вычислить командой minor(A,i,j). Ранг матрицы А вычисляется командой rank(A). След матрицы А, равный сумме ее диагональных элементов, вычисляется командой trace(A).

    > A:=matrix([[4,0,5],[0,1,-6],[3,0,4]]);

    > det(A);

    1

    > minor(А,3,2);

    > det(%);

    -24

    > trace(A);

    9

     

    Обратная и транспонированная матрицы

    Обратную матрицу А 1 , такую что А 1А=АА 1=Е, где Е  единичная матрица, можно вычислить двумя способами:

    1. evalm(1/A);

    2. inverse(A).

    Транспонирование матрицы А – это обмен местами строк и столбцов. Полученная в результате этого матрица называется транспонированной и обозначается А'. Транспонированную матрицу А' можно вычислить командой transpose(A).

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

    > inverse(A);

    > multiply(A,%);

    > transpose(A);

    1. Графики и анимация

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

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

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

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

    Основная функция построения двумерных графиков plot

    В математике широко используются зависимости вида y(x). Их графики строятся на плоскости в виде ряда точек y1(x1), обычно соединяемых отрезками прямых. Таким образом, используется кусочно-линейная интерполяция двумерных графиков. Если число точек графика достаточно велико (десятки или сотни), то приближенность построения не очень заметна.

    Для построения двумерных графиков служит функция plot(f, h, v, о),

    где f — визуализируемая функция, h — переменная с указанием области ее изменения, v — необязательная переменная с указанием области изменения, о — параметр или набор параметров, задающих стиль построения графика (толщину и цвет кривых, тип кривых, метки на них и т. д.).

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

    •  plot(f ,xrnin,xmax) — построение графика функции f, заданной только своим именем;

    •  plot(f(x),x=xmin,xmax) — построение графика функции f(x),

    > plot(sin(x), x=-Pi..Pi);

    Диапазон изменения независимой переменной х задается диапазоном xmin..xmax, где xmin и xmax — минимальное и максимальное значение х, .. (две точки) — составной символ, указывающий на изменение независимой переменной.

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

    Для двумерного графика возможны следующие параметры:

    • axes — вывод различных типов координат (axes=NORMAL — обычные оси, выводятся по умолчанию, axes=BOXES — график заключается в рамку с осями-шкалами, axes=FRAME — оси в виде перекрещенных линий, axes=NONE — оси не выводятся);

    • axes font — задание шрифтов для подписи делений на координатных осях (см. также параметр font);

    • color — задает цвет кривых (см. далее);

    • discont — задает построение непрерывного графика (значения true или false);

    • font — задание шрифта в виде [семейство, стиль, размер];

    • labels — задание надписей по координатным осям в виде [X, Y], где X и Y — надписи по осям х и у графика;

    • label directions — задает направление надписей по осям [X, Y], где X и Y может иметь строковые значения HORISONTAL (горизонтально) и VERTICAL (вертикально);

    • label font — задает тип шрифта подписей (см. font);

    • legend — задает вывод легенды (обозначения кривых);

    • linestyle — задание стиля линий (1 — сплошная, 2 — точками, 3 — пунктиром и 4 — штрихпунктиром);

    • numpoints — задает минимальное количество точек на графике (по умолчанию numpoints=49);

    • scaling — задает масштаб графика: CONSTRAINED (сжатый) или UNCONSTRAINED (несжатый — по умолчанию);

    • size.— задает размер шрифта в пунктах;

    • style — задает стиль построения графика (POINT — точечный, LINE — линиями);

    • symbol — задает вид символа для точек графика (возможны значения BOX — прямоугольник, CROSS — крест, CIRCLE — окружность, POINT — точка, DIAMOND — ромб);

    • symbol size — установка размеров символов для точек графика (в пунктах, по умолчанию 10);

    • title — задает построение заголовка графика (title="string", где string — строка);

    • titlefont — определяет шрифт для заголовка;

    • thickness — определяет толщину линий графиков (0, 1, 2, 3, значение по умолчанию — 0);

    • view=[A, В] — определяет максимальные и минимальные координаты, в пределах которых график будет отображаться на экране, А = [xmin. .xmax], B=[ymin. .ymax] (по умолчанию отображается вся кривая);

    • xtickmarks — задает минимальное число отметок по оси x, 

    • ytickmarks — задает минимальное число отметок по оси у.

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

    Специальный параметр adaptive задает работу специального адаптивного алгоритма для построения графиков наилучшего вида. При этом Maple автоматически учитывает кривизну изменения графика и увеличивает число отрезков прямых в тех частях графиков, где их ход заметно отличается от интерполирующей прямой. При задании adaptive=false адаптивный алгоритм построения графиков отключается, а при adaptive=true включается (значение по умолчанию).

    В версии Maple 9 параметр coords задает 15 типов координатных систем для двумерных графиков. По умолчанию используется прямоугольная (декартова) система координат (coords=cartesian). Например:

    > plot(sin(x), x=-4*Pi..4*Pi, labels=[x,y],

    labelfont=[TIMES,ITALIC,14], thickness=4);

    Maple 9 позволяет воспроизводить на одном графике множество кривых. При этом возникает необходимость как-то идентифицировать их. Для этого можно использовать построение линий разными стилями, разными цветами и с разной толщиной. Набор средств выделения кривых позволяет уверенно различать их как на экране цветного дисплея и в распечатках, сделанных цветным струйным принтером, так и при печати монохромными принтерами. Параметр color позволяет использовать обширный набор цветов линий графиков: аquamarine, black, blue, navy, coral, cyan, brown, gold, green, gray, grey, khaki, magenta, maroon, orange, pink, plum, red, sienna, tan, turquoise, violet, wheat, white, yellow.

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

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

    Некоторые функции, например tan(x), имеют при определенных значениях х разрывы, причем случается, что значения функции в этом месте устремляются в бесконечность. Построение графиков таких функций нередко дает плохо предсказуемые результаты. Графический процессор Maple 9 не всегда в состоянии определить оптимальный диапазон по оси ординат, а график функции выглядит весьма непредставительно.

    Среди аргументов функции plot есть специальный параметр discont. Если задать его значение равным true, то качество графиков существенно улучшается, Улучшение достигается разбиением графика на несколько участков, на которых функция непрерывна, и более тщательным контролем за отображаемым диапазоном. При discont=false данный параметр отключен и строятся обычные графики.

     Следует отметить, что вид графика можно улучшить, просто задав диапазон по оси у, например, введя в параметры функции запись у=-10..10). При этом в точках разрыва могут появиться вертикальные линии. Иногда это бывает полезно. Например:

    > plot(x/(x^2-1),x=-3..3,y=-3..3,color=magenta,thickness=4);

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

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

    Два графика на одной координатной плоскости

    > plot([x^2,x^3],x=-2..2,linestyle=[1,3],thickness=4);

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

    В данном случае переменная Р имеет вид списка, в котором попарно перечислены координаты точек функции sin(x).

    Графики функций, заданных своими именами

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

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

    В ряде случаев для задания функциональных зависимостей используются заданные параметрически уравнения, например х = f1(t) и у =f2(t) при изменении переменной t в некоторых пределах. Точки(х, у) наносятся на график в декартовой системе координат и соединяются отрезками прямых. Для этого используется функция plot в следующей форме:

    plot([fl(t),f2(t),t-tmin..tmax].h,v.p)

    Если функции f1(£) и f2(0 содержат периодические функции (например, тригонометрические), то для получения замкнутых фигур диапазон изменения переменной t обычно задается равным 0. .2*Pi или -Pi..Pi. К примеру, если задать в качестве функций f1(t) и f2(t) функции sin(t) и cos(t), то будет получен график окружности. Рисунок 11.13 показывает другие, чуть менее тривиальные примеры построения графиков такого рода.

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

    > plot([sin(2*t),cos(3*t),t=0..2*Pi], axes=BOXED, color=blue);

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

    > plot(1/x,x=-3..3,-10..10);

    В этом примере строится график функции 1/x, при этом на оси OX отображается отрезок [-3,3], на на оси OY – [-10,10].

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

    > plot([x^2,x^3],x=-2..2);

    Трехмерные графики функций двух переменных строятся при помощи функции plot3d. Ее синтаксис: plot3d(f(x,y),x=a..b,y=c..d). Пример построения графика функции x*sin(y):

    > plot3d(x*sin(y),x=-2..2,y=-Pi..Pi);

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

    Если необходимо задать интервал, который будет отображаться на оси OZ, необходимо задать еще один параметр view=e..f (в отличие от плоских графиков необходимо написать слово view).

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

    1. Способы задания вектора.

    2. Способы задания матрицы.

    3. Команды сложения векторов и матриц.

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

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

    6. Формат команды построения графика.

    7. Формат команды построения нескольких графиков на одном рисунке.

    8. Как регулировать диапазон отображения графика.

    9. Как указывать параметры форматирования графика.

    Литература

    1. Maple:система компьютерной алгебры: Учеб.-мет. пособие/ Авт.-сос. И.Е. Андрушкевич, В.А. Жизневский. – Витебск: Изд-во УО «ВГУ им. П.М. Машерова», 2006. – С. 29-30, 37-42.

    2. Рычков В. И др. Компьютер для студента. Самоучитель. – СПб.: Питер, 2000. – С. 371-373.

    Основные понятия

    Вектор - одномерная таблица, каждый элемент которой может быть представлен числом, константой, переменной, символьным или математическим выражением.

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

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

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

    След матрицы — сумма диагональных элементов матрицы.

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

    Единичная матрица — это квадратная матрица, у которой диагональные элементы равны 1, а остальные элементы равны 0.

    Обратная матрица — это матрица М-1, которая, будучи умноженной на исходную квадратную матрицу М, дает единичную матрицу Е.

    Лекция 16. Технологии и инструментальные средства программирования. Основы алгоритмизации

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

    План

    1. Понятие алгоритма.

    2. Типы алгоритмических процессов.

    3. Способы записи алгоритмов.

    1. Понятие алгоритма

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

    1. Постановка задачи – выделение известных для решения задачи данных и выделение того, что будет результатом решения задачи. На первый взгляд это очень просто. Но повспоминайте свои проблемы в решении задач по математике в школе – наверняка бывали ситуации, кода вы задачу решили, но получили не тот ответ. Почему? Потому что неправильно поняли условие задачи! То есть неправильно выполнили постановку задачи. То есть, в конечном счете, была решена другая задача.

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

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

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

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

    3. Разработка программы – фактически это преобразование алгоритма в команды на языке программирования.

    4. Отладка программы – выявление ошибок в программе посредством многократного запуска программы на исполнение с различными исходными данными. Это наиболее длительный этап (около 90% времени подготовки задачи для решения на ЭВМ) и очень влияющий на качество программы. Все «дыры» в программном обеспечении (о которых регулярно пишут в прессе и на которые ориентируются хакеры) образуются в результате некачественной отладки программ.

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

    6. Решение задачи – эксплуатация программы заказчиком.

    Теперь более подробно разберемся с понятием «алгоритм».

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

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

    Большой вклад в теорию алгоритмизации внес английский ученый Алан Тьюринг (1912-1954) - разработал понятие абстрактной цифровой вычислительной машины (получившей впоследствии название машины Тьюринга), способной имитировать (при наличии соответствующей программы) любую машину, действие которой заключается в переходе от одного дискретного состояния к другому. Неоценим вклад в развитие теории алгоритмизации советского ученого Андрея Маркова, предложившего нормальный алгоритм (названный нормальным алгоритмом Маркова), демонстрирующий работу идеальной машины, разработавшего теорию сложности алгоритмов Впоследствии теория алгоритмов была разработана американским ученым Дональдом Кнутом (род в 1938 г.), семитомный труд которого «Искусство программирования для ЭВМ» и в наше время многократно переиздается и изучается специалистами. В советской школе изучение информатики началось с 1985 года, благодаря деятельности А.П. Ершова.

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

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

    Алгоритм должен обладать следующими свойствами:

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

    - конечность – число шагов для достижения результата обязательно должно быть конечным;

    - результативность - после завершения алгоритма должен быть получен результат или сообщение о невозможности его получения;

    • определенность (однозначность) – команды алгоритма должны быть однозначно поняты исполнителем;

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

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

    Рассмотрим алгоритм открывания двери ключом:

    1. Вставить ключ в замочную скважину.

    2. Повернуть 2 раза против часовой стрелки.

    3. Вынуть ключ.

    4. Потянуть дверь на себя.

    Обладает ли этот алгоритм свойством массовости?

    Необходимо разобрать еще уже упоминавшиеся понятия:

    • исполнитель – это человек или техническое средство, предназначенное для исполнения алгоритмов;

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

    2. Типы алгоритмических процессов

    Любой алгоритм может состоять из разнообразных сочетаний базовых структур алгоритмов:

    1. Линейный алгоритм (Следование) – это алгоритм, в котором команды выполняются в порядке следования одна за другой. При изображении линейного алгоритма с помощью блок-схемы блоки следуют один за другим, выстраиваясь в одну ветвь обработки. Разберём процесс построения алгоритма на примерах.

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

    1. Разветвляющиеся алгоритмы (Развилка) – алгоритм, в котором в зависимости от условия выполняется одна или другая последовательность команд. Развилка бывает полная и неполная.

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

    Возникающая ситуация оценивается при помощи условий. Условие понимается как вопрос, на который можно получить один из двух ответов — «да» (говорят, что условие истинно) или «нет» (говорят, что условие ложно). Более того, могут использоваться составные условия, состоящие из нескольких простых условий, соединенных логической операцией И, ИЛИ, НЕ.

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

    Например, алгоритм заучивания стихотворения:

    1. Пока не сможешь рассказать фрагмент без книги

    2. Повторять:

    • прочитать фрагмент

    • рассказать фрагмент без книги.

    3. Способы записи алгоритмов

    Используются три способа (формы) записи алгоритмов:

    1. Словесный – запись алгоритма последовательностью предложений в повелительном наклонении на естественном языке.

    Например, алгоритм пользования телефоном:

      1. Снять трубку.

      2. Послушать гудок.

      3. Набрать номер и т.д.

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

    Используемые фигуры Пояснение

    Н ачало или конец алгоритма.

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

    Блок действия. Внутри блока указывается, какие нужно выполнить действия.

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

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

    Например, блок-схема перехода дороги по сигналу светофора:

    1. Псевдокоды – это запись алгоритма на языке программирования.

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

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

    1. Происхождение термина «алгоритм».

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

    3. Кто (или что) исполняет алгоритмы?

    4. Из каких команд может состоять алгоритм?

    5. Какими свойствами должен обладать алгоритм?

    6. Из каких базовых структур состоит практически любой реальный алгоритм?

    7. Для какого исполнителя применяют словесную форму записи алгоритмов? Графическую? Псевдокоды?

    8. Понятие «программа» для компьютера.

    9. Приведите примеры различных типов алгоритмов из макроэкономики, математики.

    Литература

    1. Основы информатики: Учебное пособие / Под редакцией А.Н. Морозевича – Мн.: Новое знание, 2001. – 544 с. - с. 217-244.

    2. Веретенникова Е.Г. и др. Инфороматика: Учеб. Пособие – Ростов н/Д: Изд. Центр «МарТ», 2002. – 416 с. – С. 240-245.

    3. Информатика. Базовый курс/ Симонович С.В. и др. – СПб.: Питер, 2001. – 640 с. – С. 560-570.

    Основные понятия

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

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

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

    Дискретность алгоритма – алгоритм исполняется по шагам.

    Результативность алгоритма – по окончании исполнения алгоритма должен быть получен результат или сообщение о невозможности его получения.

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

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

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

    Базовые алгоритмические структуры – конструкции, из которых можно составлять любые алгоритмы.

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

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

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

    Условие – высказывание, которое может быть истинно или ложно.

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

    Словесная форма записи алгоритма - запись алгоритма предложениями (в повелительном наклонении) на естественном языке.

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

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

    Лекция №17. Технологии и инструментальные средства программирования. Языки программирования

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

    План

    1. Технологии разработки программных комплексов.

    2. Классификация языков программирования.

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

    «…почти во всех делах самое трудное – начало»

    (Ж..-Ж.. Руссо)

    1. Технологии разработки программных комплексов

    Чтобы компьютер смог решить поставленную перед ним задачу, алгоритм должен быть записан на понятном машине языке. Таким языком является язык машинных кодов. И первые программы приходилось писать на нём. Это было утомительно и неудобно. особенно сложным был ввод программы в машину. Малейшая неточность приводила к непредсказуемым результатам. Для того чтобы облегчить труд программиста, и были созданы специальные языки программирования. Алгоритм, записанный на языке программирования, называется программой. Текст программы называют исходным кодом (текстом).

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

    Одним из крупнейших программных проектов за всю компьютерную историю и до сегодняшних дней является создание операционной системы IBM OS/360, первый рабочий вариант которой разрабатывался в 1963-66 гг. В нем участвовали сотни программистов, а общая трудоемкость работ за весь период работ составила 5000 человеко-лет. Среди руководителей этого проекта был Фредерик Брукс (книгами которого по программированию пользуются и сегодня), который в 1985 году вместе с Бобом Эвансом и Эриком Блохом был награжден Национальной медалью США в области технологии за проектирование OS/360.

    В 70-е годы 20 века обсуждение темы разработки ПО шло в основном в русле дискуссии: "Программирование — это наука или искусство?". Брукс одним из первых дал правильный (все-таки и сегодня с этим можно спорить) ответ на этот вопрос: это весьма специфическая, высокоинтеллектуальная, но все же — технология.

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

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

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

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

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

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

    Цели структурного программирования:

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

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

    3) уменьшить время и стоимость программной разработки – для этого надо повысить производительность труда программиста;

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

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

    Идеи структурного программирования появились в начале 70-годов в компании IBM, в их разработке участвовали известные ученые Э. Дейкстра, Х. Милс, Э. Кнут, С. Хоор. Структурное программирование основано на модульной структуре программного продукта и типовых управляющих структурах алгоритмов обработки данных различных программных модулей.

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

    – программирование должно осуществляться сверху вниз;

    – весь проект должен быть разбит на модули (подпрограммы) с одним входом и одним выходом;

    – подпрограмма должна допускать только три основные структуры – последовательное выполнение, ветвление (if, case) и повторение (for, while, repeat).

    – недопустим оператор передачи управления в любую точку программы (goto);

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

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

    Объектно-ориентированный подход использует следующие базовые понятия:

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

    – свойство объекта – характеристика объекта, его параметр;

    – метод обработки – программа действий над объектом или его свойствами;

    – событие – изменение состояния объекта;

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

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

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

    Наиболее известным примером объектно-ориентированного языка программирования является язык C++, развившийся из императивного языка С. Его прямым потомком и логическим продолжением является язык С#. Другие примеры объектно-ориентированных языков программирования: Visual Basic, Eiffel, Oberon.

    Развитием объектно-ориентированного подхода стало появление в 90-х годах целого класса языков программирования, которые получили название языков сценариев или скриптов (VBScript, PowerScript, LotusScript, JavaScript) - программа представляет собой совокупность возможных сценариев обработки данных, выбор которых инициируется наступлением того или иного события (щелчок по кнопке мыши, попадание курсора в определенную позицию, изменение атрибутов того или иного объекта, переполнение буфера памяти и т.д.). События могут инициироваться как операционной системой (в частности, Microsoft Windows), так и пользователем.

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

    Существенным преимуществом языков сценариев является их совместимость с передовыми инструментальными средствами автоматизированного проектирования и быстрой реализации программного обеспечения, или так называемыми CASE- (Computer-Aided Software Engineering) и RAD- (Rapid Application Development) средствами.

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

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

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

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

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

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

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

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

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

    1. Классификация языков программирования

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

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

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

    • высокого уровня – команды записывают на понятном человеку языке. Эту более многочисленную группу составляют языки программирования высокого уровня. Это Фортран, Алгол, Кобол, Паскаль, Бейсик, Си, Пролог и т.д. Эти языки машинно-независимы, т.к. они ориентированы не на систему команд той или иной ЭВМ, а на систему операндов, характерных для записи определенного класса алгоритмов, и требуют использования программ-переводчиков (трансляторов) для представления программы на языке машины. Программы, написанные на языках высокого уровня, занимают больше памяти и медленнее выполняются, чем программы на машинных языках.

    Языки программирования можно классифицировать по логике решения задачи:

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

    Среди процедурных языков выделяют в свою очередь структурные и операционные языки. В структурных языках одним оператором записываются целые алгоритмические структуры: ветвления, циклы и т.д. В операционных языках для этого используются несколько операций. Широко распространены следующие структурные языки: Паскаль, Си, Ада, ПЛ/1. Среди операционных известны Фортран, Бейсик, Фокал. Можно выделить объектно–ориентированные языки высокого уровня (Си++, Visual Basic, Java и др.). На таких языках не описывают подробной последовательности действий для решения задачи, хотя они содержат элементы процедурного программирования. Объектно–ориентированные языки, благодаря богатому пользовательскому интерфейсу, предлагают человеку решить задачу в удобной для него форме.

    - непроцедурные (декларативные) – программа не описывает последовательность действий для решения задачи. Эти языки появились в начале 70-х годов 20 века. К непроцедурным относятся функциональные и логические языки.

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

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

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

    • Задачи искусственного интеллекта - Lisp, Prolog, Multilisp, Commonlisp, Рефал, Planner, QA4, FRL, KRL.

    • Параллельные вычисления - Fun, Apl, Alfl, PARAlfl, ML, SML, PPL/1, Hope, Miranda, Occam, PFOR, Glypnir, Actus, параллельный Cobol, ОВС-ЛЯПИС, ОВС-Мнемокод, ОВС-Алгол, ОВС-Фортран, PA(1), PA(G).

    • Задачи вычислительной математики и физики - Occam, PFOR, Glypnir, Actus,параллельный Cobol, ОВС-ЛЯПИС, ОВС-Мнемокод, ОВС-Алгол, ОВС-Фортран, PA(1), PA(G).

    • Разработка интерфейса - Forth, c, C++, Ассемблер, Макроассемблер, Simula-67, OAK, Smalltalk, Java.

    • Разработка программ-оболочек, разработка систем – Forth, C++, Ассемблер, Макроассемблер, Simula-67, OAK, Smalltalk, Java.

    • Задачи вычислительного характера - Algol, Fortran, Cobol, Ada, PL/1, Фокал, Basic, Pascal.

    • Оформление документов, обработка больших текстовых файлов, организация виртуальных трехмерных интерфейсов в Интернете, разработка баз данных - HTML, Perl, Java, VRML, SQL, PL/SCL, DDL, DSDL, SEQUEL.

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

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

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

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

    Компоненты среды программирования:

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

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

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

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

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

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

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

    Эволюция технических средств персональных компьютеров привела к повсеместному вытеснению ОС MS-DOS значительно более мощными системами Windows, программирование для которых существенно сложнее, чем программирование для MS-DOS. Разработчики начали выпуск систем программирования, включающих все выше перечисленные компоненты. В 1991 году фирма Borland выпускает Turbo Pascal for Windows, а в 1992 – усовершенствованную версию этой системы программирования – Borland Pascal with Objects 7.0. Эти первые специализированные инструменты требовали основательного знания Windows и были сложны в освоении. В 1993 году Microsoft выпустила первую визуальную среду программирования Visual Basic, и программирование для Windows стало даже проще, чем программирование для MS-DOS. В 1995 году Borland выпустила первую версию системы программирования Delphi, которая продолжила серию Паскаль-ориентированных средств программирования и является наиболее удобным инструментом для Windows-программирования. Более 100 компонентов версии 6 обеспечивают полноценную возможность Web-программирования, т. е. создания работающих под управлением Web-сервера программ, обеспечивающих интерактивное взаимодействие с клиентом и публикацию по его требованию необходимых данных. 

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

     

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

    1. Особенности промышленного программирования, "программирование для себя" и "программирование для хозяина".

    2. Почему процесс разработки программного комплекса относят к технологии.

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

    4. Какую роль в развитии технологий программирования сыграло структурное программирование.

    5. Какие технологии программирования актуальны в настоящее время.

    6. Перечислите признаки классификации языков программирования.

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

    Литература

      1. Основы информатики: Учебное пособие / Под редакцией А.Н. Морозевича – Мн.: Новое знание, 2001. – 544 с. - с. 217-244.

      2. 2Веретенникова Е.Г. и др. Инфороматика: Учеб. Пособие – Ростов н/Д: Изд. Центр «МарТ», 2002. – 416 с. – С. 240-245.

      3. Информатика. Базовый курс/ Симонович С.В. и др. – СПб.: Питер, 2001. – 640 с. – С. 560-570.

    Основные понятия

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

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

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

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

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

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

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

    Язык программирования — набор ключевых слов (словарь) и система правил (грамматических и синтаксических) для конструирования операторов для написания программы для ЭВМ.

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

    Языки высокого уровня - команды записывают на понятном человеку языке.

    Процедурные языки - программа описывает процедуру решения задачи.

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

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

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

    Издатель: Витебский филиал Учреждения образования Федерации профсоюзов Беларуси «Международный институт трудовых и социальных отношений»

    Лицензия ЛВ № 437 от 14.10.2004

    210015, г. Витебск, ул. Правды, 8а

    Подписано в печать ________2008 г. Формат 60х84 1/16 Бумага офсетная

    Гарнитура Times. Усл. печ.л. _____

    Уч.изд.л._____

    Тираж _____ экз. Заказ № ______

    1 Михеева Е.В. Информационные технологии в профессиональной деятельности: Учеб. пособие для сред. проф. Образования / М.: Издательский центр «Академия», 2004. – С.10.

    202