Практическая информатика

         

Использование языка сценариев JavaScript


В сети Интернет размещено огромное количество сценариев обработки HTML-документов, как очень простых, так и достаточно сложных. Среди них значительную часть составляют программы, написанные на языке JavaScript. Цель данного параграфа - рассмотреть некоторых из них и научить вас использовать их на своих HTML-страничках. Подробнее возможности языка подготовки сценариев JavaScript рассматриваются в разделе "Программирование для Интернет".

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

Скрипты могут находится в любом месте HTML-документа. Однако между строчками кода JavaScript-программы нельзя помещать теги языка HTML. Поэтому чаще всего скрипт размещают внутри раздела <HEAD> документа. Сама JavaScript-программа размещается между тегами <SCRIPT> ... </SCRIPT>. Встретив тег <SCRIPT>, браузер построчно анализирует содержимое документа до тех пор, пока не будет достигнут тег </SCRIPT>. После этого проводится проверка скрипта на наличие ошибок и компиляция программы в формат, пригодный для использования в данном браузере. Не все браузеры понимают код JavaScript, поэтому полезно заключать весь код сценария в комментарии (<!-- и //-->)

Для размещения текста программы внутри HTML-документа используют конструкцию

<SCRIPT LANGUAGE="JavaScript"> <!-- ... здесь располагается код программы ... //--> </SCRIPT>

Программы на языке JavaScript можно размещать и в виде отдельных текстовых файлов, имеющих расширение .js. Для подключения такого сценария используется параметр SRC тега <SCRIPT>, содержащий абсолютный URL файла, из которого загружается сценарий. Адрес URL может быть и относительным, задавая, например, скрипт, расположенный в том же каталоге, что и текущий HTML-документ:

<SCRIPT SCR="myScript.js"> <SCRIPT>


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

Пример

Рассмотрим HTML-файл со сценарием на языке JavaScript, который отображает текущее время.

<HTML> <HEAD> <TITLE>Электронные часы</TITLE> <!-- <SCRIPT LANGUAGE="JavaScript">

function clock_form() { day=new Date() clock_f=day.getHours()+":"+ day.getMinutes()+":"+ day.getSeconds() document.form.f_clock.value=clock_f id=setTimeout("clock_form()",100) } //--> </SCRIPT> </HEAD> <BODY onLoad="clock_form()"> <FORM NAME="form"> Московское время: <INPUT NAME="f_clock" SIZE="8"> </FORM> </BODY> </HTML>



В этом примере для запуска сценария используется конструкция onLoad = "clock_form()", размещенная в качестве атрибута тега <BODY>. Для вывода показаний часов используется элемент <FORM>>...</FORM>, размером в 8 символов.

Пример

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

<HTML> <HEAD> <TITLE>Бегущая строка</TITLE> </HEAD> <SCRIPT LANGUAGE="JavaScript"> <!-- var line="Центр Компьютерных Технологий"; var speed=200; var i=0; function m_line() { if(i++<line.length) { document.form.ctc.value=line.substring(0,i); } else{ document.form.ctc.value=" "; i=0; } setTimeout('m_line()',speed); } //--> </SCRIPT> <BODY onload="m_line()"> <CENTER> <FORM NAME="form"> <INPUT TYPE="text" SIZE="30" NAME="ctc"> </FORM> </CENTER> </BODY> </HTML>



Следующий файл содержит скрипт "Бегущая строка".

Задания

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


Использование стилей


Одним из способов подключения стиля к HTML-странице (остальные способы рассматриваются в параграфе "Каскадные таблицы стилей") является использование в заголовке документа контейнера <STYLE>:

<HEAD> ... <STYLE TYPE="text/css"> ... описание стилей ... </STYLE> ... </HEAD>

Включение в этот контейнер атрибута TYPE="text/css" указывает браузеру, что в нем содержится описание стилей. В настоящее время атрибут TYPE может принимать только указанное значение, однако если он будет опущен, то некоторые браузеры могут проигнорировать всю таблицу стилей.

Само описание стиля включает селектор тега, указывающий имя тега, на который распространяется правило стиля, и фигурные скобки, содержащие одну или более пар объявлений вида "свойство_стиля:значение", разделенных точкой с запятой:

селектор_тега{ свойство_стиля1:значение1; свойство_стиля2:значение2; свойство_стиля3:значение3; }

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

Пример

<HTML> <HEAD> <TITLE>Первый пример использования стилей</TITLE> <STYLE TYPE="text/css"> <!-- H1 {text-align: center} --> </STYLE> </HEAD> <BODY> <H1>Заголовок</H1> <P> Какой-то текст </BODY> </HTML>


В данном примере в секции заголовка документа <HEAD> ... </HEAD> задан стиль (правило), согласно которому браузер должен выравнивать по центру страницы содержимое контейнера <H1> ... </H1>: свойству text-align присвоено значение center.

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

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


Пример

Рассмотрим пример оформления текста. Установим белый цвет фона документа (свойство background-color), затем задействуем свойства управления шрифтом: color (цвет), font-family (гарнитура шрифта) и font-size (размер шрифта), например,

цвет - серый;семейство шрифта (гарнитура) - Times, шрифт с засечками;размер шрифта - 14 пунктов.

Добавим свойства, связанные с форматированием абзаца: text-indent (отступ красной строки), text-align (выравнивание), padding-left (отступ слева), например,

дополнительный отступ красной строки - 10pt;выравнивание - по ширине документа;отступ от левого края - 20pt.

Установим темно-красный цвет (свойство color) заголовков с первого по третий уровень.

Документ примет вид:

<HTML> <HEAD> <TITLE>Второй пример использования стилей</TITLE> <STYLE TYPE="text/css"> <!-- BODY {background-color: white}

H1, H2, H3 {color: red}

P { /* шрифт */ color: gray; font-family: Times, serif; font-size: 14pt; /* абзац */ text-indent: 10pt; text-align: justify; padding-left: 20pt; } --> </STYLE> </HEAD> <BODY> ... </BODY> </HTML>


Каскадные таблицы стилей




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

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

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

Пример

<P STYLE="color:red; text-align:center;">Этот параграф переопределен стилем</P>

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

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

<LINK REL="STYLESHEET" TYPE="text/css" HREF="list.css">

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

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

Например, пусть во внешнем стилевом файле определено, что текст в теге <P> должен выводится шрифтом высотой 10 пунктов. Если при этом в разделе HEAD документа переопределить тег <P>, указав, что текст должен отображаться шрифтом в 12 пунктов, то он будет выведен именно таким кеглем - стиль, расположенный в заголовке документа, переопределит стиль внешнего файла.

В целом, браузер расставляет приоритеты таблиц стилей следующим образом: inline-стили (встроенные с помощью атрибута STYLE непосредственно в теги документа) - наивысший приоритет; будут применены браузером в любом случае, даже если возникает конфликт с внедренными или внешними стилями;внедренные стили (перечисленные в теге-контейнере <STYLE> в разделе <HEAD> документа) - чуть меньший приоритет; будут применяться во всех случаях, кроме случаев возникновения конфликта с inline-стилями (при возникновении такого конфликта будут применены inline-стили);связанные стили (стили, присоединенные к HTML-файлу посредством тега <LINK>) - наименьший приоритет; будут применены только после того, как браузер убедится в отсутствии аналогичных правил во всех остальных типах стилей.
Зная, в какой последовательности браузер анализирует таблицы стилей, можно задать одну общую связанную таблицу для всех страниц сайта и при этом гибко управлять стилями отдельных страниц и отдельных элементов на странице. Именно с этой особенностью и связано слово "каскадные" в названии CSS (cascading style sheets) - несколько таблиц стилей, присоединенных к HTML-файлу, прокатываются через анализатор (браузер) неким "каскадом" в порядке их приоритетности.


Классы стилей


При написании HTML-документов довольно часто встречается необходимость каким-либо образом выделять блоки информации, подчеркивать их уникальность или логическую нагрузку. Например, в учебнике по математике кроме обычного описания материала могут присутствовать теоремы, задания, примеры и др. Стандартный HTML предоставляет нам теги логической разметки, например, тег <BLOCKQUOTE> предназначен для длинных цитат. CSS дает возможность самим придумывать логические конструкции и описывать их внешний вид.

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

Сначала выделим абзацы (вопросы журналиста и ответы интервьюируемого) с помощью селектора класса CLASS.

<HTML> ... <BODY> ... <P CLASS="ask">Вопрос журналиста</P> <P CLASS="answer">Ответ интервьюируемого</P> ... </BODY> </HTML>

В разделе HEAD документа зададим стиль каждого класса.

P.ask{ font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12pt; text-align: justify; color: gray; margin-left: 100px; font-weight: bold; }

P.answer{ font-family: Times, serif; font-size: 14pt; color: black; text-align: justify; margin-left: 20px; }

Вопросы журналиста будут отображаться шрифтом серии sans-serif серого цвета, полужирным начертанием, размером 12 пунктов, с отступом 100 пикселов от левого края страницы, с выравниванием по ширине. Ответы же будут отображены шрифтом Times, размером 14 пунктов черного цвета, с отступом 20 пикселов от левого края страницы, с выравниванием по ширине.

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



Неразрывные пробелы


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

между двумя инициалами и между инициалами и фамилией: И. O. Фамилия;между знаками номера и параграфа и относящимися к ним числами;внутри сокращений "и т. д.", "и т. п.", "т. е." и другими;между внутритекстовыми пунктами, такими как "а)", "б)" или "1.", "2.", и следующим за ними текстом;между числами и относящимися к ним единицами измерения: 200 кг; это же относится и к указаниям дат: XVIII в.;перед тире в середине предложения (таким образом, этот знак препинания отделяется пробелами с двух сторон - неразрывным слева и обычным справа);между классами многозначных чисел, начиная с пятизначных: 1 302 569;перед номерами версий программных продуктов и частями их названий, состоящими из цифр или сокращений;после однобуквенных предлогов и союзов.



Ошибки русского языка


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

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

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



Поиск ваших документов в сети


Используйте атрибуты DESCRIPTION и KEYWORDS тега <META> для задания описания и ключевых слов документа.

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

Пример

<META NAME="description" CONTENT="Рекомендации по созданию домашних страничек"> <META NAME="keywords" CONTENT="язык HTML, HTML, тег, метаинформация, русский язык, типографские правила, title, meta, !DOCTYPE, тестирование, браузеры">



Применение таблиц стилей


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

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

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

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

Задания

Создайте HTML-документ, в котором заголовку первого уровня (тег <H1>) задайте следующий стиль оформления: цвет текста - красный, выравнивание - по центру, семейство шрифта (гарнитура) - Arial, шрифт без засечек (sans-serif), размер шрифта - 14 пунктов;заголовку второго уровня задайте выравнивание по правому краю, наклонное начертание, размер шрифта - 12 пунктов.Создайте HTML-документ, предназначенный для размещения интервью. Оформите таблицу стилей в виде отдельного файла и свяжите ее с документом. Переопределите при помощи внедренной таблицы стилей класс ask, сделав цвет текста зеленым.



Проверка ссылок


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

Грубейшей ошибкой в сети считается неправильная работа ссылок. Ваши странички не должны содержать "ссылок в никуда" или ссылаться на некорректный материал.



Расстановка пробелов


В русскоязычном наборе пробел обязательно ставится:

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

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



Рекомендации по созданию HTML-документов


Несмотря на то, что Web-технологии возникли сравнительно недавно, в мире Интернет успели сформироваться правила, которые диктуют, что нужно и что нельзя делать, чтобы HTML-документы корректно воспринимались пользователем. Этот параграф содержит несколько советов по созданию и оформлению HTML-документов.



Справочник по свойствам таблиц стилей


Свойство и его описаниеБраузер
background: list

Составное свойство, определяющее привязку фона (background-attachment), цвет фона (background-color), изображение для фона (background-image), положение фона и повторение фона (background-position, background-repeat); list представляет собой значения этих свойств, указанные в любом порядке

N, IE
background-attachment: scroll

Указывает, должно ли фоновое изображение фиксироваться или прокручиваться вместе с документом. Допустимые значения: fixed (фиксированный), scroll (прокручиваемый)

IE
background-color: transparent

Устанавливает цвет фона для элемента. Допустимые значения: color, transparent (прозрачный)

N, IE
background-image: none

Указывает фоновое изображение элемента. Допустимые значения: url, transparent (прозрачный), none

N, IE
background-position

Устанавливает исходное положение фонового изображения элемента; как правило, указываются парные значения для определения координат х, у. Положение по умолчанию 0%,0%. Допустимые значения: length, percent, top, center, bottom, left, right

IE
background-repeat: repeat

Определяет, каким образом фоновое изображение заполняет элемент. Допустимые значения: repeat, repeat-x, repeat-y, no-repeat

N, IE
border: list

Устанавливает все четыре границы элемента; значением может быть одна или более величин цвета, ширины границы и стиля границы

N, IE
border-bottom: list

Устанавливает нижнюю границу элемента; значением может быть одна или более величин цвета, ширина нижней границы и стиль границы

IE
border-bottom-width: medium

Устанавливает толщину нижней границы элемента. Допустимые значения: length, medium, thin, thick

N, IE
border-color: list

Устанавливает цвет всех четырех границ элемента; значением по умолчанию является цвет элемента

N
border-left: list

Устанавливает левую границу элемента; значением может быть одна или более величин цвета, ширина левой границы и стиль границы

IE
border-left-width: medium

Устанавливает толщину левой границы элемента. Допустимые значения: length, medium, thin, thick

N, IE
border-right: list

Устанавливает правую границу элемента; значением может быть одна или более величин цвета, ширина правой границы и стиль границы

IE
border-right-width: medium

Устанавливает толщину правой границы элемента. Допустимые значения: length, medium, thin, thick

N, IE
border-style: none

Устанавливает стиль всех четырех границ элемента. Допустимые значения: none (отсутствует), dashed (штриховая), dotted (пунктир), double (двойная), groove (канавка), inset (утопленная), outset (возвышающаяся), ridge (гребень), solid (сплошная)

N, IE
border-top: list

Устанавливает верхнюю границу для элемента; значением может быть одна или более величин цвета, ширина верхней границы и стиль границы

IE
border-top-width: medium

Устанавливает толщину верхней границы элемента. Допустимые значения: length, medium, thin, thick

N, IE
border-width: medium

Устанавливает толщину всех четырех границ элемента. Допустимые значения: length, medium, thin, thick

N, IE
clear: none

Определяет, какие поля элемента не должны примыкать к плавающему элементу. Элемент будет перемещен вниз на такую величину, чтобы это поле оказалось свободным. Допустимые значения: none (нет), both (оба), left (левое), right (правое)

N, IE
color: color

Задает цвет элемента

N, IE
display: block

Управляет отображением элемента. Допустимые значения: block (блок), inline (внутристрочный), list-item (элемент списка), none (нет)

N
float: none

Определяет, является ли элемент плавающим с выравниванием по левому или правому краю, позволяя тексту обтекать его, либо выводится внутристрочно (при указании none). Допустимые значения: left (слева), right (справа), none (нет)

N, IE
font: list

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

N, IE
font-family: список имен шрифтов

Определяет шрифт, используемый в элементе. Значение может быть как специфическим именем, так и одним из родовых шрифтов serif, sans-serif, cursive, fantasy или monospace

N, IE
font-size: medium

Определяет размер шрифта. Допустимые значения: length, percent, xx-small, x-small, small, medium, large, x-large, xx-large, larger, smaller

N, IE
font-style: normal

Определяет начертание шрифта как нормальное или один из видов наклонного. Допустимые значения: italic (курсив), oblique (наклонный), normal (нормальный)

N, IE
font-variant: normal

Указывает, должен ли шрифт выводиться маленькими прописными буквами. Допустимые значения: smallcaps, normal

IE
font-weight: normal

Определяет насыщенность начертания шрифта. Если используется число, оно должно быть кратным 100 и находиться между 100 и 900; 400 соответствует нормальному шрифту, а 700 равносильно ключевому слову bold (полужирный). Допустимые значения: number, bold, bolder, lighter, normal

N, IE
height: auto

Задает высоту элемента. Допустимые значения: length, auto

N
letter-spacing: normal

Вставляет дополнительные промежутки между символами текста. Допустимые значения: length, normal

IE
line-height: normal

Устанавливает расстояние между базовыми линиями соседних строк. Допустимые значения: length, number, percent, normal

N, IE
list-style: list

Определяет стили списка с использованием любых значений для изображения, положения и типа списка - list-style-image, list-style-position, list-style-type

N, IE
list-style-image: none Определяет изображение, используемое в качестве маркера элемента списка вместо устанавливаемого типом списка list-style-type. Допустимые значения: url, noneIE
list-style-position: outside

Устанавливает отступ или выступ (по умолчанию) маркера элемента списка относительно его содержания. Допустимые значения: inside (отступ), outside (выступ)

list-style-type: disk

Определяет маркер элемента списка для неупорядоченных списков (circle, disc, square - окружность, круг, квадрат соответственно) или упорядоченных списков (все остальные). Допустимые значения: circle (окружность), square (квадрат), decimal (десятичные цифры), disc (круг), lower-alpha (строчные буквы), lower-roman (строчные римские цифры), none (нет), upper-alpha (прописные буквы), upper-roman (прописные римские цифры)

N, IE
margin

Определяет все четыре поля элемента. Допустимые значения: length, percent, auto

IE
margin-bottom

Определяет нижнее поле элемента; значением по умолчанию служит 0. Допустимые значения: length, percent, auto

N IE
margin-left

Определяет левое поле элемента; значением по умолчанию служит 0. Допустимые значения: length, percent, auto

N, IE
margin-right

Определяет правое поле элемента; значением по умолчанию служит 0. Допустимые значения: length, percent, auto

N, IE
margin-top

Определяет верхнее поле элемента; значением по умолчанию служит 0. Допустимые значения: length, percent, auto

N, IE
padding: list

Задает величину всех четырех отступов вокруг элемента

IE
padding-bottom

Указывает величину отступа от элемента снизу; значением по умолчанию служит 0. Допустимые значения: length, percent

N, IE
padding-left

Указывает величину отступа от элемента слева; значением по умолчанию служит 0. Допустимые значения: length, percent

N, IE
padding-right

Указывает величину отступа от элемента справа; значением по умолчанию служит 0. Допустимые значения: length, percent

N, IE
padding-top

Указывает величину отступа от элемента сверху; значением по умолчанию служит 0. Допустимые значения: length, percent

N, IE
text-align: стиль

Определяет тип выравнивания для элемента. Значение по умолчанию зависит от элемента. Допустимые значения: center (по центру), justify (по всей доступной области), left (к левому краю), right (к правому краю)

N, IE
text-decoration: none

Определяет виды украшения текста; значения можно объединять. Допустимые значения: blink (мерцание), none (нет), line-through (перечеркнутый), overline (надчеркивание), underline (подчеркивание)

text-indent

Задает отступ первой строки в элементе; значением по умолчанию служит 0. Допустимые значения: length, percent

N, IE
text-transform: none

Преобразует указанным образом текст в элементе. Допустимые значения: capitalize (прописные буквы), lowercase (нижний регистр), none (нет), uppercase (верхний регистр)

N, IE
vertical-align: позиция

Выравнивание элемента по вертикали. Значение по умолчанию зависит от элемента. Допустимые значения: percent, baseline (базовая линия), bottom (низ), middle (середина), sub (подстрочный), super (надстрочный), text-bottom (низ текста), text-top (верх текста), top (верх)

N, IE
word-spacing: normal

Вставляет дополнительный промежуток между словами. Допустимые значения: length, normal

white-space: normal

Определяет, как обрабатываются символы пробелов, табуляции и пустой строки в элементе. Допустимые значения: normal, nowrap (без переноса), pre

N
width: auto

Определяет ширину элемента. Допустимые значения: length, percent, auto

N, IE



Стили и таблицы стилей


На самом простом уровне, стиль является всего лишь правилом, сообщающим браузеру, как интерпретировать отдельные теги HTML. С каждым тегом связан ряд свойств, значения которых определяют его вид при выводе браузером. Так, например, у большинства тегов (<P>, <TD>, и т. д.) есть свойство COLOR, значение которого определяет цвет, используемый для отображения содержимого тега.

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

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



Текстовые выделения


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

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



Условия просмотра


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

Профессиональный Web-дизайнер старается по мере сил учитывать возможные варианты просмотра и создавать странички максимально подходящие для разных условий.

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

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

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

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

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

Обязательно закрывайте все теги (кроме одиночных).Внимательно следите за вложенностью тегов. Не допускайте ситуации, когда внешний тег закрывается раньше, чем внутренний: <B><I>правильно</I></B> <B><I>неправильно</B></I>Значения атрибутов, содержащих пробелы и другие специальные символы, должны обязательно заключаться в кавычки.
Можно заключать в кавычки все параметры, но это не является обязательным.При использовании формы на странице внимательно следите за тем, чтобы все элементы, составляющие форму (<INPUT>, <SELECT>, <TEXTAREA>, и т. д.), находились между тегами <FORM> и </FORM>.

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

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

Задание

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


Задание значений


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

Задание цвета (color), также как и в тегах HTML, возможно двумя способами: наименованием и численным значением. Спецификация CSS1 ("Спецификации каскадных таблиц стилей, уровень 1"), разработанная Консорциумом World Wide Web (W3C), перечисляет только 16 наименований цветов, которые можно использовать в таблицах стилей:

aquagraynavysilver
blackgreenoliveteal
bluelimepurplewhite
fuchsiamaroonredyellow

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

Web-цвета по оттенкам
blackwhite
Нейтральные/холодные
darkgrayghostwhitesilver
darkslategraygrayslategray
dimgraylightgreysnow
gainsborolightslategray
Нейтральные/теплые
antiquewhiteivorypapayawhip
cornsilklinenseashell
floralwhiteoldlace
Коричневые/бронзовые
beigechocolaterosybrown
bisquekhakisienna
blanchedalmondmoccasintan
brownnavajowhitewheat
burlywoodperu
Розовые
corallightcoralmistyrose
darksalmonlightpinkpink
deeppinklightsalmonsalmon
hotpinkmagenta
Оранжевые
darkorangeorangeorangered, peachpuff
Желтые
darkgoldenrodlemonchiffonpalegoldenrod
goldlightyellowyellow
goldenrodlightgoldenrodyellow
Зеленые
aquamarinegreenyellowolive
chartreusehoneydewolivedrab
darkgreenlawngreenpalegreen
darkkhakilimeseagreen
darkolivegreenlimegreenspringgreen
darkseagreenmediumseagreenyellowgreen
forestgreenmediumspringgreen
greenmintcream
Фиолетовые
bluevioletlavenderblushplum
darkmagentamediumorchidpurple
darkorchidmediumpurplethistle
darkvioletmediumvioletredviolet
fuchsiaorchid
lavenderpalevioletred
Сине-зеленые
aquadarkturquoisemediumauqamarine
cyanlightcyanmediumturquoise
darkcyanlightseagreen
Синие
alicebluedeepskybluemediumslateblue
azuredodgerbluemidnightblue
blueindigonavy
cadetbluelightbluepowderblue
cornflowerbluelightskyblueskyblue
darkbluelightsteelblueslateblue
darkslatebluemediumbluesteelblue
Красные
crimsonfirebrickmaroon
darkredindianredred


При задании цвета численным значением используют либо шестнадцатеричное значение, либо тройку вида rgb (red, green, blue), где red, green и blue являются числами в диапазоне от 0 до 255, либо процентными величинами, определяющими яркость каждой составляющей цвета в RGB. Значения 255 или 100% указывают, что соответствующая составляющая цвета имеет максимальную яркость; значения 0 или 0% - соответствующая составляющая полностью отсутствует.
Пример
H1 {color: #0000FF} H1 {color: #00F} H1 {color: rgb(27, 119, 207)} H1 {color: rgb(50%,75%, 0%)}
Во втором примере используется трехзначный синтаксис, при использовании которого три цифры преобразуются в шесть путем дублирования каждой из них.
При задании единиц длины (length) используют число, за которым без пробелов следует двухсимвольное обозначение единицы измерения (em, ex, in, cm и др.) Обозначения единиц измерения еm и ех относятся к общей высоте шрифта и высоте буквы "х" соответственно. Единица измерения рх соответствует величине пиксела на экране, а in, cm, mm, pt и рс обозначают дюймы, сантиметры, миллиметры, пункты и цицеро соответственно. В дюйме 25,4 миллиметра или 72,27 пункта, а в цицеро - 12 пунктов. Если значение равно нулю, обозначение единицы измерения можно опустить.
Пример
P {font-size: 12pt} H3 {text-indent: 20em}
Некоторые значения могут быть заданы в процентах (percent). При этом они вычисляются как процент от другого свойства элемента, обычно его размера.
Пример
P {line-height: 120%}
Для указания местоположения ресурса используется его URL-адрес. В этом случае после ключевого слова url сразу (без пробелов) следует открывающая круглая скобка, а за ней - URL, заключенный, при желании, в одиночные или двойные кавычки, и закрывающая правая скобка.
Пример
BODY { background: url(http://www.image.ru/image/pic1.gif) }
Наконец, некоторые значения являются последовательностью (list) других величин и описываются как "список" некоторых значений. Список состоит из одного или более допустимых значений, разделяемых запятыми.
Пример
P {font-family: Times, serif}
Все указанные обозначения используются в кратком справочнике по таблицам стилей, приведенном далее.

Заголовки страниц


Не забывайте для каждого HTML-документа включать в контейнер <HEAD> ... </HEAD> заголовок документа, заключенный между тегами <TITLE> и </TITLE>.

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



Диаграммы


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

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

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

Пример

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


увеличить изображение

Автоматически составляется диаграмма для января, марта, апреля и мая для офиса 1. Рассмотрите другое многократное выделение.


увеличить изображение

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


увеличить изображение

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


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

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



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

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







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

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


увеличить изображение

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

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

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











Задания

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

Вычислите средний объем продаж по кварталам и году по каждому офису и фирме в целом.

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

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


увеличить изображение

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


Форматирование


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


Gnumeric позволяет отображать формулы в ячейках таблицы вместо их значений. Для переключения в этот режим следует в меню Формат выбрать пункт Лист, после чего отметить опцию Показать формулы. Как и большинство других распространенных операций это действие имеет клавиатурный эквивалент - комбинацию клавиш Ctrl и ` (обратный апостроф).


увеличить изображение

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


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


увеличить изображение



Форматирование данных и ячеек


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

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

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


увеличить изображение

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

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

Если указана опция Разрыв строки, то будет разрешен автоматический разрыв строки на краю ячейки. Отметим, что нажатие комбинации клавиш Ctrl+Enter в любом месте текста также приведет к разрыву строки.

При помощи команды Объединить ячейки -> Задать из меню Формат можно объединить предварительно выделенные ячейки. Результат в дальнейшем ничем не отличается от других ячеек. Для обратного действия выделите ячейку и выберите пункт Снять в том же меню.

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


увеличить изображение

Рассмотрим пример создания и использования стиля ячейки. Нажатием на клавишу F11 вызовите инструмент Стилист. Введите в одну из ячеек таблицы текст, а в другую число. Выделив число, дважды щелкните на элементе "Результат" в окне стилей и число будет отформатировано. Теперь давайте создадим новый стиль. Отформатируйте текст, например, жирным размером 20 пунктов синим шрифтом на желтом фоне. Щелкните в Стилисте на кнопке Создать стиль из выбранного и в появившимся окне введите имя для стиля, например, "Формат заголовка", после чего нажмите на кнопку ОК - новый стиль будет добавлен с списку ранее существовавших.

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

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

Первая из них - присвоение формата формулой. Функция СТИЛЬ может быть добавлена к существующей формуле в ячейке. Таким образом, вместе с функцией ТЕКУЩ вы можете задать, например, цвет ячейки в зависимости от значения. Использование формулы =...+СТИЛЬ( ЕСЛИ( ТЕКУЩ() >3; "красный"; "зеленый")) вызывает окрашивание ячейки в красный цвет, если значение больше 3, и назначает стиль с именем "зеленый" в ином случае (разумеется, если указанные стили определены).




увеличить изображение

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

Пример

Сначала создадим таблицу, содержащую случайные числа. Для задания случайного числа в диапазоне от 0 до 1 используется функция =СЛЧИС(). Мы для большей наглядности будем использовать целые числа от 0 до 50. Введите в левую верхнюю ячейку выбранной области формулу =ЦЕЛОЕ(СЛЧИС()*50).

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

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


увеличить изображение

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

Для применения к выделенным ячейкам условного форматирования вызовите команду Условное форматирование из меню Формат. В появившимся диалоговом окне задайте два условия: (1) если значение ячейки меньше или равняется среднему значению - форматировать стилем "Ниже", и (2) если значение больше среднего - стилем "Выше".

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


Формулы


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

Как и все другие средства работы с электронными таблицами, OpenOffice Calc позволяет использовать относительные и абсолютные ссылки. Перед каждым значением, которое должно использоваться как абсолютное, ставится знак доллара $. Для превращения текущей ссылки, в которой находится курсор в строке ввода, из относительной в абсолютную и наоборот, следует использовать комбинацию клавиш Shift+F4.

Практически все функции (за исключением математических и некоторых статистических) в программе OpenOffice Calc локализованы, т. е. используют русскоязычные имена. К таковым относятся и все функции из раздела Дата&Время (однако функция ПАСХАЛЬНОЕВОСКРЕСЕНЬЕ() определяет дату католической, а не православной Пасхи).

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

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

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

.
В ячейке появится формула вида =СУММ(...). Программа пытается догадаться, каков интервал суммирования. Если вас не устраивает предложенный диапазон, то выделите левой кнопкой мыши требуемую область ячеек так, чтобы вокруг нее появилась красная рамка. То же самое можно сделать и вручную, указав диапазон ячеек в строке формул. Отметим, что пустые ячейки при суммировании трактуются как содержащие нулевые значения.

Познакомимся поподробнее с функцией ДАТА, обеспечивающей ввод дат в электронную таблицу. OpenOffice Calc хранит такие данные в виде чисел, но отображает в ячейке в формате даты, выравнивая их (аналогично числам) по правому краю. Конечно, можно отформатировать ячейку, содержащую дату, и в числовом формате. Синтаксис функции - ДАТА(Год; Месяц; День). Год - целое число от 1600 до 3000, при вводе от 0 до 29 добавляется 2000, а при вводе числа от 30 до 99 - 1900. Месяц - число от 1 до 12, задающее номер месяца. День - число от 1 до 31, которое устанавливает день месяца. Когда значения месяца и дня больше допустимых, они пересчитываются на следующую позицию (год, месяц) с переполнением. Формула =ДАТА(00;12;31) дает 31.12.2000, а при вводе =ДАТА(00;13;31) получится дата 31.01.2001.

В программе OpenOffice Calc можно просто ввести даты в формате "месяц.число.год" (без указания кавычек, иначе ввод будет интерпретирован как текст), например, "5.17.2" для 17 мая 2002 года. В этом случае любой ввод со значениями, выходящими за границы допустимых, трактуется не как дата, а как текст. Функция ТДАТА() возвращает дату и время в соответствии с системным временем компьютера, которые обновляются при каждом пересчете документа.

Пример

Вычислим количество дней, часов, минут и секунд, прошедших с 0 часов некоторой даты. Откройте новый документ электронной таблицы и введите в ячейку B1 дату, например, "1.17.84". В ячейку B3 введите формулу =ТДАТА()-A1, которая по умолчанию отформатируется как дата. Поскольку нам нужно получить разницу между двумя датами в виде числа дней, то необходимо отформатировать ячейку B3 как целое число.


Введите остальные формулы: в B4 =B3*24 для часов, в B5 =B4*60 для минут и в B6 =B5*60 для секунд.

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



Для отображения формул, примененных при этих вычислениях, в столбец D помещена функция ФОРМУЛА(), аргументом которой является адрес соответствующей ячейки.

При создании сложных таблиц удобно использовать именованные ячейки. Если нужно составить, к примеру, формулу для вычисления НДС, то она будет более понятной в виде "= Сумма * Размер_налога", чем в форме "= A5 * B12", где ячейка A5 содержит данные о сумме, а ячейка B12 - о размере налога.

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

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

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


Формула для вычисления результата имеет вид

Процент = Капитал * Количество_лет * Ставка / 100

Ячейкам лучше всего дать имена, чтобы формула имела осмысленный вид. В примере сначала вычисляется, какова будет сумма процентов при вложенном капитале 150 000 р. и процентной ставке 7,5% за год.



Теперь, считая, что процентная ставка (7,5%) и количество лет (1) не изменяются, определим, какого размера должен быть капитал, чтобы давать определенные годовые проценты, скажем, 15 000 р. Выделите ячейку Проценты и выберите в меню Сервис пункт Подбор параметра. Появится одноименное окно, в поле Ячейка формул которого уже указана нужная ячейка.



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




Практическая информатика


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


увеличить изображение

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

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

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

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

Для преобразования относительной ссылки в абсолютную используется клавиша F4: достаточно в строке редактирования формул установить курсор около соответствующей ссылки, после чего нажатие на клавишу F4 циклически изменяет вид ссылки, например, B2 -> $B$2 -> B$2 -> $B2 -> B2. Нажатие на клавишу F9 приводит к принудительному пересчету значений.



Импликация и эквивалентность


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

Пример

Дано сложное высказывание: "Если выглянет солнце, то станет тепло". Требуется записать его в виде логической формулы. Обозначим через А простое высказывание "выглянет солнце", а через В - "станет тепло". Тогда логической формулой этого сложного высказывания будет импликация: A -> B.

Другой распространенной операцией является эквивалентность. Ее аналог в разговорной речи - фразы, подобные словосочетанию тогда и только тогда, когда ... или если и только если ... Для ее обозначения используется символ <-> или просто =. Мы будем использовать для обозначения эквивалентности обе эти формы. Отметим, что логическая формула A <-> B эквивалентна формуле (A -> B) && (B -> A).

Пример

Дано сложное высказывание: "В зачетную книжку выставляется оценка за экзамен тогда и только тогда, когда он сдан". Нужно преобразовать высказывание к логической формуле. Обозначим через А простое высказывание "В зачетную книжку выставляется оценка за экзамен", а через В - "Экзамен сдан". Тогда логическая формула сложного высказывания запишется в виде A <-> B.

Приведем таблицу истинности, задающую операции импликации и эквивалентности:

ABA -> BA <-> B
TTTT
TFFF
FTTF
FFTT

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



Электронные таблицы


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

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


увеличить изображение

Электронные таблицы предоставляют пользователю компьютерный вариант так называемой рабочей книги для проведения расчетов. Книга состоит из отдельных именованных листов (таблиц), которые в свою очередь формируются из ячеек, получаемых пересечением строк и столбцов. Столбцы таблицы нумеруются заглавными латинскими буквами (A, B, ..., Z, AA, ..., AZ, ...), а строки - числами. Каждая ячейка имеет уникальный адрес, составленный из имен столбца и строки, например, A1 или D55.

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


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

Подобная техника применяется в большинстве программ, предназначенных для работы с электронными таблицами. Ниже приведены фрагменты таблиц, созданных в программах Gnumeric и OpenOffice Calc.

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




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

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

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

Ячейка может содержать текстовую или числовую информацию, а также формулу, по которой производится вычисление. Запись формулы начинается с символа = (равно). Любая информация, которая не может быть истолкована как формула или число, считается текстом. Следует быть внимательным при вводе дробных чисел. Во многих странах для отделения дробной части используется символ . (точка), в то время как в России - символ , (запятая). Локализованные программы обычно учитывают национальные особенности представления чисел. По умолчанию числа в ячейках электронной таблицы "прижимаются" к правому краю ячейки, в то время как текст - к левому. Введя в одну ячейку текст, а в другую дробное число, вы по выравниванию содержимого ячеек сумеете понять, какой символ используется в данной версии программы для отделения дробной части.

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


Электронные таблицы позволяют использовать большинство математических, статистических и финансовых функций. Копирование формул из одной ячейки в другие при помощи мыши позволяет значительно ускорить процесс подготовки таблицы, содержащей однотипные формулы. Для этого нужно выделить ячейку с формулой, подвести курсор к правому нижнему углу ячейки и, нажав левую кнопку мыши, переместиться в нужном направлении. Так, если формулу =A1+B1 копировать в нижележащую ячейку, то она автоматически преобразуется в формулу =A2+B2. Программы, изменяя адреса в формулах, пытаются не изменить их смысл.

При указании адреса той или иной ячейки используют либо относительную, либо абсолютную адресацию. Если в формуле задан относительный адрес ячейки, то при копировании формула будет автоматически изменена, при этом адреса ячеек заменятся на новые (как в вышеприведенном примере). При абсолютной адресации соответствующая часть адреса будет "заморожена", то есть не будет изменена при копировании. Признаком абсолютной адресации является символ $ перед номером столбца или (и) строки, например, $A$1, B$5, $C16.

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



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

Далее будет рассмотрено несколько программ, предоставляющих возможность работы с электронными таблицами: KSpread и Gnumeric, функционирующие в ОС Linux, и OpenOffice Calc - электронная таблица, входящая в состав свободно распространяемого офисного пакета OpenOffice фирмы Sun Microsistems, доступного пользователям не только ОС Linux, но и MS Windows. Как интерфейс программы, так и функциональные возможности OpenOffice Calc практически неотличимы от интерфейса и возможностей коммерческого пакета MS Excel.

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


Калькуляторы


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

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


Процесс работы на калькуляторе прост и понятен практически без объяснений: после ввода выражения нажатие на кнопку со знаком = (равно) или на клавишу Enter приводит к вычислению результата. Кнопка +/- позволяет изменить знак числа на противоположный. Приоритеты арифметических операций стандартны, например, результатом ввода последовательности символов 3+4*5= будет 23, а не 35. Для изменения порядка вычислений используются круглые скобки. Так, результат ввода выражения (2+3)*(4+5)= эквивалентен вычислению 5*9=, что равно 45.

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

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


Нажатие на кнопку AC приводит к аннулированию текущего ввода, а кнопка C отменяет последнюю из введенных операций. Кнопки MR, M+- и MC обеспечивают работу с так называемой "памятью". Первая из них выводит значение, хранящееся в памяти, вторая складывает содержимое памяти с числом, отображаемым на панели, а последняя обнуляет содержимое памяти.

KCalc позволяет проводить вычисления в следующих системах счисления: шестнадцатеричная (Hex), десятичная (Dec), восьмеричная (Oct) и двоичная (Bin). Для ввода чисел в шестнадцатеричной системе используется дополнительная панель, содержащая буквы латинского алфавита от A до F (обозначающие шестнадцатеричные цифры от 10 до 15). Перевод чисел из одной системы счисления в другую выполняется так: введя число в одной системе, следует изменить основание системы - число отобразится в новой системе счисления.



Пример

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


KSpread


Начнем знакомство с электронными таблицами с программы KSpread, входящей в состав офисного приложения KDE (ОС Linux). Запуск этой программы осуществляется либо через меню KDE: Офис/KSpread, либо командой kspread. При старте появляется окно программы, отображающее лист рабочей книги. Если программа была запущена без указания имени файла с данными, то создается новая рабочая книга, содержащая только один лист, к которому при необходимости легко добавляется любое требуемое количество листов.


Цифрами на рисунке обозначены:

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

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



Общие приемы работы с KCalc


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

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

Кроме панели выбора основания KCalc располагает панелью, указывающей, как интерпретировать аргументы тригонометрических функций. Переключатель Deg указывает, что ввод производится в градусной мере углов, а Rad интерпретирует аргумент, как заданный в радианах. Например, при включенном переключателе Deg комбинация клавиш 90 s дает 1 (sin 90o), в то время как при включенном переключателе Rad, комбинация клавиш Inv EE c , как и следовало ожидать, дает 1 (cos pi).

Основное назначение кнопки EЕ - ввод чисел в экспоненциальной форме. Например, следует последовательно нажать 2 . 3 +/- EE 4 +/- для ввода числа -2.3E-4, равного -0.00023.

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

ФункцияКлавишаПримечание
HypHПереключение калькулятора на ввод гиперболических функций, например, Hyp Sin
SinSsin x
CosCcos x
TanTtg x
LnNln x
LogLlg x
InvIОбратная функция, например, I S для вычисления arcsin x
+/-\-x (смена знака)
x^2[x2
x^y^xy
x!!Факториал числа
1/xRОбратная величина
Пример

Нажатие комбинации клавиш 7R или 7r приведет к вычислению величины, обратной 7 (т. е. 1/7).

Для ввода числа
=3.1415926... следует нажать кнопки Inv и EE. А для числа e (Эйлеровой константы, основания натурального логарифма) нажмите кнопки 1 Inv Ln.

Кнопка Mod предназначена для нахождения остатка от деления одного числа на другое, например, 22 Mod 8 дает результат, равный 6. Комбинация кнопок Inv Mod позволяет найти целую часть от деления одного числа на другое, скажем, результат вычисления 22 Inv Mod 8 равен 2.

Кнопка %, нажатая вместо = приводит к различным результатам в зависимости от того, какая операция выполнялась последней, а именно:

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

Пример

Проведем несколько вычислений с использованием операции %.

ВводРезультат
11 + 89 %112.35.. (89 + 11 = 100, а 100 есть 112.35% от 89)
42 * 3 %1.26 (42 * 3 / 100)
45 / 55 %81.81... (45 есть 81.81.. процентов от 55)
2 ^ 300 %8 (2 в степени (300/100))
Кнопка Lsh (left shift, сдвиг влево) осуществляет побитовый сдвиг вправо двоичного представления числа. Например, результат вычисления 10 Lsh 3 равен 80, что эквивалентно умножению числа 10 на 2 три раза. Комбинация Inv Lsh (сдвиг вправо) приводит к побитовому сдвигу вправо, например, 16 Inv Lsh 2 даст 4 (16 дважды деленное на 2).

Кнопки And и Or позволяют выполнять операции логического сложения (дизъюнкция, ИЛИ) и умножения (конъюнкция, И).

Задания

Переведите число 1100001001 из двоичной системы счисления в остальные три.Вычислите следующее выражение (нижним индексом указана система счисления, в которой задается очередное число):

1112 + 10102 + 228 + 678 + 1016 - 1102




OpenOffice Calc


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


увеличить изображение

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

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

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



Основы логики высказываний


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

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

Математик Джордж Буль (1815-1864) описал алгебру, основанную на операторах И, ИЛИ и НЕ и булевых переменных, которые принимают только два значения, например, 0 или 1. Эти значения могут моделироваться наличием или отсутствием тока в электрической цепи, состояниями "Включено" или "Выключено" некоторого переключателя. Далее мы рассмотрим логические предложения, построенные с помощью этих операторов, называемых также логическими связками. Значения таких выражений вычисляются и преобразуются с помощью правил булевой алгебры примерно так же, как числовые выражения преобразуются и упрощаются в обычной арифметике.

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

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

В таблице приводятся обозначения, используемые для логических связок в различной литературе. Мы в дальнейшем изложении будем использовать обозначения, принятые в большинстве языков программирования. Истинное значение далее будем обозначать символом T (от True - истина), а ложное - F (от False - ложь).

СвязкаНазваниеБулева алгебраЛогикаПрограммирование
Иконъюнкция-
&&
ИЛИдизъюнкция+
||
НЕотрицани嬬!

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


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

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

!( !A) = A.
!(A && B) = !A || !B.
!(A || B) = !A && !B.
!(A -> B) = A && !B.
A -> B = !A || B.
A <-> B = (A && B) || (!A && !B) =( !A || B) && (A || !B).

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

Пример

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


Джек сказал: "Если Том не угонял автомобиля, то его угнал Боб".

Боб сказал: "Если Джек не угонял автомобиля, то его угнал Том".

Фред сказал: "Если Том не угонял автомобиля, то его угнал Джек".

Том сказал: "Если Боб не угонял автомобиля, то его угнал я".

Удалось выяснить, что Боб солгал, а Том сказал правду. Правдивы ли показания Джека и Фреда? Кто угнал машину?

Решение

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

А - "машину угнал Боб";

В - "машину угнал Том";

С - "машину угнал Джек";

D - "машину угнал Фред".

Запишем (и сразу упростим) сложные высказывания, выражающие приведенные факты:

(1) !B -> A = !( !B) || A = B || A (истинность неизвестна);

(2) !C -> B = !( !C) || B = C || B = F (высказывание ложно);

(3) !B -> C = !( !B) || C = B || C = C || B (истинность неизвестна);

(4) !A -> B = !( !A) || B = A || B = T (высказывание истинно).


Заметим, что после упрощения высказывание (3) совпало с высказыванием (2), которое ложно. Таким образом, высказывание (3), произнесенное Фредом, также ложно.

Из ложности высказывания (2) следует ложность каждого дизъюнкта, входящего в него, т. е. C = F и B = F.

Подставив найденное значение B в высказывание (4) получаем A || B = A || F = T, что возможно лишь если A = T, т. е. машину угнал Боб.

Рассмотрим высказывание Джека (1): B || A = F || T = T - оно истинно.

Итак, Джек сказал правду, а Фред соврал. Машину угнал Боб.

Пример

Кто из людей A, B, C и D играет, а кто не играет в шахматы, если известно следующее:

если А или В играет, то С не играет;если В не играет, то играют С и D;С играет.

Решение

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

А - "А играет в шахматы"; В - "В играет в шахматы";

С - "С играет в шахматы"; D - "D играет в шахматы".

Запишем сложные высказывания, выражающие известные факты:

(A && B) -> !C;!B -> C && D;C

Запишем произведение (конъюнкцию) указанных сложных высказываний. Так как все они истинны, то и произведение тоже истинно:

((A || B) -> !C) && ( !B -> C && D) && C = T.

Упростив эту формулу, получим

!A && !B && C && D = T.

Отсюда по свойствам конъюнкции получаем, A = F, B = F, C = T, D = T. Значит, в шахматы играют C и D, а A и B - не играют.

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

Пример

Упростим логическую формулу !( (A || B) -> !( B || C)).

Решение

!( (A || B) -> !( B || C)) = !( !(A || B) || !( B || C)) = !( !(A || B)) && !( !( B || C)) = (A || B) && (B || C) = { дистрибутивность операции ИЛИ } (A || B) && B || ( A || B) && C = A && B || B || A && C || B && C = B && (A || T) || C && (A && B) = B || A && C || B && C = B && (T || C) || A && C = B || A && C.



Задания

Упростите следующую логическую формулу и определите ее истинность: (A -> B) && (B -> (C || !A)) && (!D -> (A && !C)) && (D -> A).Определите значение формул:

(( C || B) -> B) && ( A && B) -> B ;

(( C || B) -> B) && ( A || B) -> B.

В нарушении правил обмена валюты подозреваются четыре работника банка - A, B, C и D. Известно следующее: Если A нарушил, то и B нарушил правила обмена валюты.Если B нарушил, то и C нарушил или A не нарушал.Если D не нарушил, то A нарушил, а C не нарушал.Если D нарушил, то и A нарушил.

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

Алеша, Боря и Гриша нашли в земле старинный сосуд. Рассматривая удивительную находку, каждый высказал по два предположения: Алеша: "Это сосуд греческий и изготовлен в V веке".Боря: "Это сосуд финикийский и изготовлен в III веке".Гриша: "Это сосуд не греческий и изготовлен в IV веке".

Знакомый археолог определил, что каждый из них прав только в одном из двух предположений. Где и в каком веке изготовлен сосуд?


Редактирование


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

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

Если при вводе данных произошла ошибка, то ее можно исправить, воспользовавшись "откаткой". "Откатить" изменения можно, если нажать комбинацию клавиш Ctrl+z или в меню Правка выбрать первую команду.

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

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

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



увеличить изображение

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


увеличить изображение

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





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

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

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



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



Для того чтобы начать редактирование ранее созданной электронной таблицы, нужно выбрать пункт Открыть, в появившемся окне выбрать требуемый файл. По умолчанию KSpread показывает в окошке выбора только файлы имеющие расширение ksp. Если нужно выбрать файл, имеющий другое расширение, то нужно изменить значение поля Фильтр. Среди прочих KSpread поддерживает форматы таблиц Gnumeric и MS Excel.


Редактор формул


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

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

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

Очень полезно овладеть приемом копирования формул. Если планируется расположить новую формулу рядом с уже существующей, то достаточно выделить формулу, предназначенную для копирования, и, аналогично приему автопродолжения, протянуть выделение в нужную сторону. Формулы будут автоматически подправлены в соответствии с направлением копирования. Предположим, что требуется скопировать описанную выше формулу из ячейки C1 в ячейку C2. Тогда, после копирования, формула будет изменена на = A2*B2.

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

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

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

KSpread дает возможность использовать большое количество (около 80 в версии 1.0 и около 140 в версии 1.1.1) разнообразных функций. Зная имя функции, можно ввести его и аргументы либо прямо в ячейку, либо в строку формул.

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



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





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

Пример

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

Сначала в столбце A с помощью автопродолжения разместим числа от 1 до 15. Затем введем формулу в ячейку B1. Для этого, встав на нее, вызовем редактор формул. В разделе аналитических функций выберем функцию fact, после чего приступим к ее редактированию.

Щелчок по ячейке A1 приводит к появлению ее полного адреса (Лист1!A1) в поле ввода аргумента. Удалив из формулы часть, содержащую имя таблицы, нажмем кнопку OK. Окно редактора закроется, а формула отобразится в ячейке и строке формул. Зафиксируем ее, после чего скопируем в нижележащие ячейки. Измените ширину столбца B так, чтобы в ячейке B15 могло свободно отобразиться полученное число.

Как видим, KSpread может оперировать достаточно большими числами. Напомним, что точка автоматически размещается при отображении больших чисел, отделяя тысячи, миллионы, и т. д.

Среди множества других функций отметим три функции: currentTime (текущее время), currentDate (дата) и функцию currentDateTime (дата и время). Информация, отображаемая в ячейке, не обновляeтся автоматически, поэтому используйте клавишу F9 для принудительного пересчета таблицы.



Задание

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


увеличить изображение


Селектор функций Gnumeric


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


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

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

Пример

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


Пример

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


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

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




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

Задание

В таблице, приведенной ниже, в ячейку B9 введена формула, согласно которой слово "Скидка" появляется лишь в том случае, когда стоимость покупки превышает 15 евро. Считая, что размер скидки равен 5%, добавьте к таблице следующие формулы: в ячейке F9 при наличии скидки должен быть указан ее размер в евро, а при отсутствии - пустая ячейка; в ячейке F10 следует разместить сумму к оплате с учетом скидки.


увеличить изображение


Составные предложения


Для построения составных предложений чаще всего используются связки - И (&&, конъюнкция) и ИЛИ (||, дизъюнкция). Смысл связки И - тот же, что и в разговорной речи: конъюнкция двух предложений истинна тогда и только тогда, когда они оба истинны. Связка ИЛИ "двойственна" связке И: дизъюнкция двух предложений ложна только если они оба ложны.

Дизъюнкция нескольких предложений ложна тогда, когда все они ложны. Рассмотрим, например, утверждение "Плата за подписку снижена для студентов, лиц моложе 21 года и безработных". Согласно ему, приходится платить полную цену, только если все три исключения нарушены. Аналогичное обобщение верно и для связки И. Конъюнкция нескольких предложений истинна, только если все они истинны.

Кроме И и ИЛИ, имеется еще модификатор НЕ (!, отрицание) результат применения которого противоположен его аргументу: !T = F, !F = T. В математической литературе для обозначения отрицания выражения проводят горизонтальную черту над ним.

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

ABA && BA || B! A
TTTTF
TFFTF
FTFTT
FFFFT

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

Пример

Вычислить значение логической формулы !X && Y || X && Z при следующих значениях переменных: X = F, Y = T, Z = T.

Решение

Отметим цифрами порядок выполнения операций:

1 2 4 3 ! X && Y || X && Z.

Используя таблицу истинности, вычислим формулу по шагам:

!F = T;T && T = T;F && T = F;T || F = T.

Итак, формула при данных значениях аргументов принимает значение T.

Задание

Определите значение логического выражения !(X>Z) && !(X=Y), если:

X = 3, Y = 5, Z = 2;X = 0, Y = 1, Z = 19;



Законы булевой алгебры


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

Законы коммутативностиА && В = B && A A || B = B || A
Законы ассоциативностиA && (B && C) = (A && B) && C A || (B|| C) = (A || B) || C
Законы дистрибутивностиA && (B || C) = (A && B) || (A && C) A || (B && C) = (A || B) && (A || C)
Свойства операцийИ, ИЛИ A && T = A; A && F = F A || F = A; A || T = T
Свойства отрицанияA && !A = F; A || !A = T

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

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

Дополнение!( !A) = A
ИдемпотентностьA && A = A; A || A = A
ПоглощениеA && (A || B) = A

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

A && (A || B) =
{ свойство операции ИЛИ }
(A || F) && (A || B) =
{ дистрибутивность }
A || (F && B) =
{ коммутативность }
A || (B && F) =
{ свойство операции И }
A || F =
{ свойство операции ИЛИ }
A

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

Задания

Упростите выражения: !X || !(X || Y) || !(Y && !(X && Y));!(X || Y || !(X && Y)) && !(Y ||X).Заданы логические функции:

F1 = X && Y || X && Z || !Y && Z и F2 = (X && Y || Y && Z || X && !Z) && (X && !Y || !Y && Z).

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



Алгебраические преобразования


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

C1) p1:x^2-1; 2 (D1) x - 1

(C2) p2:x-1; (D2) x - 1

(C3) expand(p1*p2); 3 2 (D3) x - x - x + 1

(C4) expand((p1+p2)^2); 4 3 2 (D4) x + 2 x - 3 x - 4 x + 4

Функцию divide можно использовать для нахождения частного и остатка от деления одного многочлена на другой:

(C5) divide(p1*p2, p1); (D5) [x - 1, 0]

Функция gcd определяет наибольший общий делитель многочленов, а factor осуществляет разложение многочлена на множители:

(C6) gcd(x^3-1, x^2-1, x-1); (D6) x - 1

(C7) factor(x^8-1); 2 4 (D7) (x - 1) (x + 1) (x + 1) (x + 1)

Подстановка какого-либо выражения вместо переменной осуществляется при помощи операции =. Например, заменим все вхождения x в выражении на 5/z:

(C8) x^4+3*x^3-2*x, x=5/z; 10 375 625 (D8) - -- + --- + --- z 3 4 z z

Функция ratsimp выносит за скобки наибольший общий делитель:

C9) ratsimp(%); 3 10 z - 375 z - 625 (D9) - ------------------- 4 z

Используя функцию assume (to assume - допускать), можно при вычислениях учитывать дополнительные условия, задаваемые неравенствами:

(C10) sqrt(x^2); (D10) ABS(x) (C11) assume(x<0); (D11) [x < 0] (C12) sqrt(x^2); (D12) - x

Функция forget (to forget - забывать) снимает все ограничения, наложенные при помощи assume:

C13) forget(x<0); (D13) [x< 0] (C14) sqrt(x^2); (D14) ABS(x)

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

(C15) sin(u+v)*cos(u)^3;

3 (D15) COS (u) SIN(v + u)

(C16) trigexpand(%);

3 (D16) COS (u) (COS(u) SIN(v) + SIN(u) COS(v))

Функция trigreduce преобразует тригонометрическое выражение к сумме элементов, каждый из которых содержит только единственный sin или cos:

C17) trigreduce(%);

SIN(v + 4 u) + SIN(v - 2 u) (D17) --------------------------- 8

3 SIN(v + 2 u) + 3 SIN(v) + ------------------------- 8

Функции realpart и imagpart возвращают действительную и мнимую часть комплексного выражения:

(C18) z1:-3+%i*4; (D18) 4 %I - 3

(C19) z2:4-2*%i; (D19) 4 - 2 %I

(C20) z1*z2; (D20) (4 - 2 %I) (4 %I - 3)

(C21) expand(%); (D21) 22 %I - 4

(C22) realpart(''c20); (D22) - 4

(C23) imagpart("c20); (D23) 22



Дифференцирование и интегрирование


Для вычисления производной функции f по переменной x используется команда D[f, x]. Нахождениe n-ой производной выглядит так: D[f,{x,n}]. На панели BasicInput имеются кнопки с шаблонами для дифференцирования.

Пример

Построим графики функции arctg x - 0.5, ее первой и второй производных. Обратите внимание на определение функций в этом примере. Символ подчеркивания после имени переменной означает, что определяется функция от указанной переменной. Процедура Clear уничтожает данное ранее определение.


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

In[1]:= Integrate[x^2/(4x^6+1), x] Out[1]:= (1/6) ArcTan[2x^3]

In[2]:= Integrate[1/Sqrt[(4-x)^3],{x,-Infinity,0}] Out[2]= 1

Зачастую полезно применить функцию Simplify к результатам вычисления, например,


Задание

Найдите производные следующих функций:

а) 31-2cos x; б) (sin x)cos x

Найдите первообразную функции sin(2x).Вычислите определенный интеграл от функции x2 по отрезку [0; 1].



Логические выражения


Программа Mathematica способна оперировать логическими выражениями. Константы True и False используются для обозначений истинного и ложного утверждений. Кроме констант логические выражения содержат переменные, соединенные следующими связками: And (&&, конъюнкция), Or (||, дизъюнкция), Not (!, логическое отрицание). Импликация задается функцией Implies или символом

из палитры BasicInput. Функция LogicalExpand осуществляет упрощение логических выражений.

Пример

Определим значение логического выражения !(x>z) && !(x=y), если x=3, y=5, z=2


Задание

Получите законы дополнения ( !(!a) = a), идемпотентности (a && a = a; a || a = a) и поглощения (a && (a || b) = a) при помощи функции LogicalExpand.



Mathematica


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

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

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

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



Матричные вычисления


Maxima позволяет легко манипулировать матрицами. В следующем примере задаются две матрицы, которые затем складываются (+) и перемножаются (.):

(C1) A:matrix([1,2],[3,4]); [ 1 2 ] (D1) [ ] [ 3 4 ] (C2) B:matrix([1,1],[1,1]); [ 1 1 ] (D2) [ ] [ 1 1 ] (C3) A + B; [ 2 3 ] (D3) [ ] [ 4 5 ] (C4) A . B; [ 3 3 ] (D4) [ ] [ 7 7 ]

Функция determinant вычисляет определитель матрицы.

(C5) determinant(A); (D5) - 2

(C6) determinant(matrix([a,b],[c,d])); (D6) a d - b c

Транспонирование матрицы осуществляется функцией transpose.

(C7) transpose(A); [ 1 3 ] (D7) [ ] [ 2 4 ]

Для получению обратной матрицы используется операция ^^-1 или функция invert.

(C8) A^^-1; [ - 2 1 ] [ ] (D8) [ 3 1 ] [ - - - ] [ 2 2 ] (C9) invert(A); [ - 2 1 ] [ ] (D9) [ 3 1 ] [ - - - ] [ 2 2 ]

Как известно, каждый элемент bij обратной матрицы B = A-1 получается делением алгебраического дополнения Aij соответствующего элемента исходной матрицы на ее определитель |A|. Для того чтобы вынести 1/|A| в качестве сомножителя применяется функция detout.

(C10) invert(A), detout; [ 4 - 2 ] [ ] [ - 3 1 ] (D10) - ------------ 2

Убедимся в правильности полученного результата, умножив A на обратную к ней матрицу:

(C11) A . d9; [ 1 0 ] (D11) [ ] [ 0 1 ]

Будьте внимательны: в результате выполнения операции ^-1 получится матрица, каждый элемент которой обратен элементу исходной, а не обратная матрица.

(C12) A^-1; [ 1 ] [ 1 - ] [ 2 ] (D12) [ ] [ 1 1 ] [ - - ] [ 3 4 ]

Использование матриц позволяет легко решать системы линейных уравнений с несколькими переменными. Пусть A - матрица коэффициентов системы, X - матрица неизвестных, B - матрица свободных членов системы. Тогда матрица X находится по формуле X = A -1 . B, где операция . означает матричное умножение.

Пример

Решим следующую систему уравнений матричным способом.


Сначала заполним соответствующие матрицы, а затем получим матрицу результатов:

(C14) A:matrix([1, 2, 1], [2, 1, 1], [1, 3, 1]);

[ 1 2 1 ] [ ] (D14) [ 2 1 1 ] [ ] [ 1 3 1 ]

(C15) B:matrix([0, 1, 0]); (D15) [ 0 1 0 ]

(C16) (A^^-1).B; [ 1 ] [ ] (D16) [ 0 ] [ ] [ - 1 ]

Задания

Вычислите произведение матриц A.B и B.A, где


Найдите определители матриц C и D


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




Операции математического анализа


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

Для нахождения производной используется функция diff, первым аргументом которой является функция, вторым - переменная, по которой производится дифференцирование, и третьим (необязательным) - порядок производной:

(C1) f:(x-2*sqrt(x))/x^2; x - 2 SQRT(x) (D1) ------------- 2 x

(C2) diff(f, x); 1 1 - ------- SQRT(x) 2 (x - 2 SQRT(x)) (D2) ----------- - ----------------- 2 3 x x

(C3) expand("c2); 3 1 (D3) ---- - -- 5/2 2 x x

(C4) g:x^6; 6 (D4) x

(C5) diff(g, x, 1); 5 (D5) 6 x

(C6) diff(g, x, 4); 2 (D6) 360 x

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

(C7) diff(x^6*y^3, x, 4, y, 2); 2 (D7) 2160 x y

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

(C8) f:x^2/(4*x^6+1); 2 x (D8) -------- 6 4 x + 1

(C9) integrate(f, x); 3 ATAN(2 x ) (D9) ---------- 6

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

(C10) integrate(x^n,x); Is n + 1 zero or nonzero? nonzero; n + 1 x (D10) ------ n + 1 (C11) integrate(x^n,x); Is n + 1 zero or nonzero? zero; (D11) LOG(x)

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

(C12) assume(notequal(n,-1)); (D12) [NOT EQUAL(n, - 1)] (C13) integrate(x^n,x); n + 1 x (D13) ------ n + 1 (C14) forget(notequal(n,-1)); (D14) [NOT EQUAL(n, - 1)] (C15) integrate(x^n,x); Is n + 1 zero or nonzero?

zero; (D15) LOG(x)

Для нахождения определенного интеграла следует указать дополнительные агрументы - пределы интегрирования:

(C16) integrate(x^2, x, 0, 6); (D16) 72

(C17) integrate(sin(x), x, 0, %PI); (D17) 2


(C18) integrate(integrate(x*y, x, 1, 3), y, 0, 4); (D18) 32

Maxima допускает задание и бесконечных пределов интегрирования. Для обозначения бесконечности используется переменная INF (inf):

(C19) integrate(1/x^2, x, 1, inf); (D19) 1

(C20) integrate(1/(1+x^2), x, -inf, inf); (D20) %PI

(C21) integrate(1/x, x, 0, inf);

Integral is divergent - an error. Quitting. To debug this try DEBUGMODE(TRUE);)

В последнем примере система сообщила о невозможности вычисления интеграла, т. к. он расходится (is divergent).

При вычислении достаточно сложных интегралов ответ не всегда будет представлен в наиболее простом виде. В следующем примере Maxima не может в символьном виде получить ответ, равный PI/4:

C22) g:1/sqrt(2-x^2); 1 (D22) ------------ 2 SQRT(2 - x )

(C23) integrate(g,x, 0,1);

SQRT(2) (D23) ASIN(-------) 2

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

(C24) sum(1/n^2,n,1,inf); INF ==== \ 1 (D24) > -- / 2 ==== n n = 1 (C25) %,simpsum; 2 %PI (D25) ---- 6

Maxima способна находить разложение функций в ряд Тейлора. Получим многочлен Тейлора порядка 4 для функции f(x)=ln x в точке x=1:

(C26) g:log(x); (D26) LOG(x) (C27) taylor(g,x,1,4); 2 3 4 (x - 1) (x - 1) (x - 1) (D27)/T/ x - 1 - -------- + -------- - -------- + ... 2 3 4

Для вычисления пределов используется функция limit:

(C28) limit(1/x,x,inf); (D28) 0

Для вычисления односторонних пределов используется дополнительный параметр, принимающий значение plus для вычисления предела справа и minus - слева.

Пример

Исследуем на непрерывность функцию arctg(1/(x-4)). Эта функция не определена в точке x = 4. Вычислим пределы справа и слева:

(C28) limit(atan(1/(x-4)), x, 4, plus); %PI (D28) --- 2 (C29) limit(atan(1/(x-4)), x, 4, minus); %PI (D29) - --- 2

Как видим, точка x = 4 является точкой разрыва I рода для данной функции, так как существуют пределы слева и справа, равные -PI/2 и PI/2 соответственно.

Задания

Вычислите первую производную функции tg2(x4 - 2)Найдите предел при x -> 0 функции (3x - sin x)/tg 2xНайдите одну из первообразных функции cos2 x


Операции с матрицами


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


Для решения систем линейных уравнений можно использовать функцию LinearSolve или матричный метод, при котором матрица X, содержащая значения неизвестных, находится по формуле X = A-1· B, где · означает операцию умножения матриц.

Пример

Используем указанные способы при решении следующей системы уравнений:



Итак, решением данной системы является тройка {-1, 2.5, 1.5}.

Задания

Найдите произведение матриц A и B, где

,
Транспонируйте матрицу B и найдите ее определитель.



Определение функций


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

C1) p(x):= x^2+3*x-8; 2 (D1) p(x) := x + 3 x - 8 (C2) p(2*x); 2 (D2) 4 x + 6 x - 8 (C3) factor(p(2*x-4)); 2 (D3) 2 (2 x - 5 x - 2) (C4) f(x):=sin(x); (D4) f(x) := SIN(x) (C5) g(x):=log(x); (D5) g(x) := LOG(x) (C6) f(g(x)); (D6) SIN(LOG(x)) (C7) g(f(x)); (D7) LOG(SIN(x)) (C8) dist(x,y):=sqrt(x^2+y^2); 2 2 (D8) dist(x, y) := SQRT(x + y ) (C9) dist(3,4); (D9) 5

Функция может быть задана и подобным образом:

(C10) eta(x,y):= if x = y then x else (if x > y then x-y else x+y); (D10) eta(x, y) := IF x = y THEN x ELSE (IF x > y THEN x - y ELSE x + y) (C11) eta(5,6); (D11) 11 (C12) eta(eta(7,7), eta(1,2)); (D12) 4



Построение графиков


Графики строятся при помощи функции plot2d, например,

(C1) plot2d([2*sin(x), cos(x)], [x, -2*%PI, 2*%PI]);


увеличить изображение

Для построения изображений трехмерных объектов используется функция plot3d. Вот как, например, запишется функция для рисования листа Мебиуса:

(C2) plot3d([cos(x)*(3+y*cos(x/2)), sin(x)*(3+y*cos(x/2)), y*sin(x/2)], [x,-%pi,%pi],[y,-1,1],['grid,40,15]);


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

(C3) Plot3d(r^.33*cos(th/3),[r,0,1],[th,0,6*%pi], ['grid,12,80], ['transform_xy,polar_to_xy], ['view_direction,1,1,1.4], ['colour_z,true]);



Пределы и ряды


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

Внимание: Direction -> 1 является указанием для вычисления предела слева, а Direction -> -1 - для предела справа.


увеличить изображение

Константа Infinity обозначает бесконечность, для ее ввода в виде символа

можно использовать палитру Basic Input.

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

<<Calculus`Limit`

Пример

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

Limit[Cos[n!]/n, n -> Infinity]

Пример

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


Для функции sin(x)/x точка x = 0 является точкой устранимого разрыва, так как существуют пределы слева и справа, равные 1.

Довольно часто в процессе решения различных задач математического анализа приходится сталкиваться с рядами и разложением аналитических функций в ряды. Поэтому в программе Mathematica имеется обширный набор функций для решения подобного рода проблем. Для получения частичной суммы ряда используется функция Sum[f, {i, imin, imax}]. Здесь f - общий член ряда, а imin и imax - границы суммирования.


Большинство достаточно гладких функций довольно точно локально аппроксимируются рядом Тейлора.
Для нахождения n-го многочлена Тейлора в окрестности точки x0 применяется функция Series[f, {x, x0, n}], а удаление остаточного члена ряда выполняется функциями Collect и Normal



Пример

Для того чтобы наглядно представить себе точность апроксимации функции многочленами Тейлора, построим на одном рисунке график функции sin(x)/x и соответствующие ей многочлены Тейлора степеней 3 и 6.

f=Sin[x]/x; f1= Normal[Series[f, {x, 0, 3}]]; f2= Normal[Series[f, {x, 0, 6}]]; Plot[{f, f1, f2}, {x, -10, 10}, PlotStyle -> { {Hue[0], Thickness[.01]}, {Hue[.6], Dashing[{.03}]}, {Hue[.9], Dashing[{.01}]}}]



Задания

Вычислите пределы:





Найдите односторонний предел
Исследуйте функции на непрерывность:








Программирование в системе Maxima


До сих пор мы использовали систему Maxima в интерактивном режиме, подобно калькулятору. Если часто приходится выполнять определенную последовательность вычислений, то лучше оформить ее в виде программы, которая затем вызывается в случае надобности. Ниже приводится небольшая программа для нахождения критических точек функции f(x). Пользователю предлагается ввести функцию f, после чего вычисляется производная введенной функции и при помощи функции solve решается уравнение fx = 0. Программа записывается в текстовый файл и затем загружается в систему Maxima при помощи функции batch. Приведем текст программы:

/* ----------------------------------------------------- Это файл critpoints.max: (Maxima использует комментарии в стиле C) -------------------------------------------------- */

critpts():=( print("Программа нахождения критических точек"),

/* Запрос на ввод функции */ print("Введите функцию f(x):"), f:read(),

/* Печать введенной функции (для контроля) */ print("f = ",f),

/* В переменную eq помещаем значение производной */ eq:diff(f,x),

/* Решаем уравнение */ solve(eq, x) )$

Программа состоит из единственной функции (без аргументов), которая называется critpts. Команды отделяются друг от друга запятыми. Вот пример выполнения программы:

(C1) batch("critpoints.max");

batching #p/home/test/critpoints.max (C2) critpts() := (PRINT("Программа # нахождения критических точек"), PRINT("Введите функцию f(x):"), f : READ(), PRINT("f = ", f), eq : DIFF(f, x), SOLVE(eq, x))

(C3) critpts() ; Программа нахождения критических точек Введите функцию f(x): (x+2)/(x^2+1);

x + 2 f = ------ 2 x + 1

(D3) [x = - SQRT(5) - 2, x = SQRT(5) - 2]


© 2003-2007 INTUIT.ru. Все права защищены.

Работа с выражениями


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


При старте открывается рабочее окно, в котором отображаются ввод и вывод программы. В верхней его части находится меню, позволяющее выполнять различные действия, в том числе сохранение текущей сессии в файле с расширением nb. Кроме основного окна в работе участвуют так называемые палитры. Если они не появились при старте, то для их открытия можно воспользоваться пунктом Palettes из меню File. Палитра Basic Input предоставляет набор кнопок для ввода наиболее употребительных символов, таких как корни, дроби, интегралы, буквы греческого алфавита и т. д. Палитра Basic Calculations содержит шаблоны для вычисления основных алгебраических функций.

Чтобы инициировать процесс вычисления после набора команды нужно одновременно нажать клавиши Shift и Enter (либо клавишу Enter на числовой клавиатуре справа). После завершения расчета программа присваивает имена вида In[1] и Out[1] исходному выражению и результату. Можно отменить показ имен, отключив в меню Kernel пункт Show In/Out Names.

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

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

? Name - помощь по заданному слову Name;

?? Name - расширенная помощь по заданному слову Name.

Большинство функций программы Mathematica являются встроенными, т. е. становятся доступными сразу после загрузки системы. Кроме того, имеется набор так называемых пакетов расширения, содержащих специализированные функции для работы в той или иной области. Среди них Algebra, Calculus, DiscreteMath, Geometry, LinearAlgebra, Miscellaneous, Graphics, NumberTheory, NumericalMath, Statistics и некоторые другие. Каждый из пакетов содержит набор подпакетов, например, в пакет Algebra входят такие подпакеты, как InequalitySolve для решения неравенств, SymbolicSum для вычисления сумм рядов, Trigonometry для работы с тригонометрическими выражениями и другие.
Для того чтобы сделать доступными функции, входящие в состав специализированных пакетов, следует их подключить командой типа

Needs["Algebra`Trigonometry`"]

или

<<Algebra`Trigonometry`

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

Mathematica всегда старается упростить введенное выражение. Если вы попробуете вычислить корень квадратный из двадцати, для чего после ввода соответствующего выражения нажмете Shift+Enter, то результатом окажется выражение, равное двум корням из пяти. Программа упростит выражение, оставив его в символьном виде. Для того чтобы получить численное значение выражения expr, следует использовать функцию N[expr] или N[expr, n], где n задает точность вычислений. По умолчанию выводится значение выражения с пятью знаками после запятой.

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



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

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



или 2.0.

Для перевода числа, заданного в системе счисления с произвольным основанием, в десятичную используется конструкция Основание^^Число, а для обратного перевода числа a из десятичной системы в систему с основанием n (где n не превышает 32) - функция BaseForm[a, n].



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



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

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



Функция Expand раскрывает скобки в выражении. Например, в результате выполнения команды Expand[(a + b)3] получится a3 + 3a2b + 3ab2 + b3.

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



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

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



Разложение на множители, если это возможно, осуществляет функция Factor. Эта функция может работать и с тригонометрическими выражениями, но в этом случае нужно использовать дополнительную опцию Trig -> True:

In[10]:= Factor[x^4+8x^3+17x^2+16x+30] Out[10]= (3 + x)(5 + x)(2 + x^2)

In[11]:= Factor[Sin[6x]/Sin[2x] + Cos[6x - Pi]/Cos[2x], Trig -> True] Out[11]= 2

Напомним, это многочленом P(x)степени n от переменной x называется выражение вида

a0xn+a1xn-1+...+ an-1x+an.

Для вынесения общего числового множителя в многочлене за скобки предназначена функция FactorTerms[poly, x], где poly есть многочлен от переменной x.


Для получения списка коэффициентов при степенях x, начиная с нулевой, используется функция CoefficientList[poly, x].

In[12]:= FactorTerms[1232x^4+168x+144, x] Out[12]= (8 ((18 + 21x + 154x^4))

In[13]:= CoefficientList[12x^4+68x+44,x] Out[13]= {44,68,0,0,12}

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

PolynomialGCD[poly1, poly2]Нахождение наибольшего общего делителя poly1 и poly2
PolynomialLCM[poly1, poly2]Нахождение наименьшего общего кратного
PolynomialQuotient[poly1, poly2, x]Нахождение частного от деления poly1 на poly2
PolynomialRemainder[poly1, poly2, x]Нахождение остатка от деления poly1 на poly2
Пример

Пусть P1(x)= x4+2x3-4x2-5x-6. Определим, является ли число 2 корнем уравнения P1(x)=0. Известно, что многочлен делится без остатка на выражение x-x0, где x0 - корень уравнения. Найдем остаток от деления P1(x) на x-2:

PolynomialRemainder[x^4+2x^3-4x^2-5x-6, x-2 , x].

Результат равен 0, следовательно 2 - корень данного уравнения.

Задания

Вычислитe 2-10 с точностью 20 знаков после запятой.Упростите выражение



Разложите на множители выражение

x6-18x5+135x4-540x3+ 1215x2-1458x+729

.Найдите остаток от деления многочлена P1(x) на x-1


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


Maxima может решать уравнения и системы алгебраических уравнений с помощью функции solve. Равная нулю правая часть уравнения может быть опущена:

(C1) solve (x^2=1, x); (D1) [x = - 1, x = 1]

(C2) solve(x^2-1,x); (D2) [x = - 1, x = 1]

(C3) solve(log(x+3)=1, x); (D3) [x = %E - 3]

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

(C4) solve(sin(x)-1, x); SOLVE is using arc-trig functions to get a solution. Some solutions will be lost. %PI (D4) [x = ---] 2

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

(C5) s:[x+y+z=3, x+2*y-z=2, x+y*z+z*x=3]; (D5) [z + y + x = 3, - z + 2 y + x = 2, y z + x z + x = 3] (C6) solve(s, [x,y,z]); (D6) [[x = 1, y = 1, z = 1], [x = 7, y = - 3, z = - 1]]

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

(C7) solve(x^2+1,x); (D7) [x = - %I, x = %I]

Задание

Решите уравнение ln(tg x) = 0.



Решение уравнений, систем и неравенств


Mathematica включает в себя средства поиска корней различных типов уравнений и систем. Чаще всего для этих целей используется функция Solve[eqn, var], где eqn - уравнение или система, задаваемая списком уравнений, var - переменная или список переменных, которые требуется определить. Результат вычислений - список корней (возможно пустой).


Палитра Basic Calculations в разделе Algebra содержит несколько шаблонов для ввода функции Solve (пункт Solving Equations). Обратите внимание, что левая и правые части уравнения соединяются символами ==, например,

Solve[3 x + 9 == 0, x] Solve[x^2 + 2b*x + c == 0, x] Solve[x^2 + 1 == 0, x] Solve[{x==1+2a*y, y==9+2x}, {x,y}]

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

Программа позволяет также решать логарифмические и показательные уравнения. Натуральные логарифмы задаются функцией Log, а логарифмы по произвольному основанию n - в виде Log[n, expr], где expr - аргумент логарифмической функции, например, Log[2, 1024]. Для Эйлеровой константы (основания натурального логарифма) используется обозначение E.

Пример

Следующий фрагмент демонстрирует решение уравнения


In[12]:= Solve[Log[Sqrt[x]]==Sqrt[Log[x]], x] Out[12]= {{x -> 1}, {x -> E^4}}

Для решения неравенств предварительно следует подключить дополнительный модуль расширения Algebra:

<<Algebra`InequalitySolve`

Имя функции, решающей неравенства, совпадает с названием подпакета - InequalitySolve. Для задания неравенств используют знаки > (строго больше), >= (больше или равно), < (строго меньше) и <= (меньше или равно), например,

In[13]:= InequalitySolve[x^2-1<0,x] Out[13]= -1<x<1

In[14]:= InequalitySolve[x^2/(x^2-1)>=0,x] Out[14]= x<-1 || x==0 || x>1

In[15]:= InequalitySolve[(2x-1)/(4(x+1))<Cos[5Pi/3],x] Out[15]= x<-1

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


In[16]:= InequalitySolve[2^(x^2)>16,x] InequalitySolve::"npi": " A nonpolynomial equation or inequality encountered. The solution set may be incorrect." Out[16]= x<-2 || x>2
В тех случаях, когда невозможно решить заданное уравнение аналитически, можно приближенно вычислить значение корня следующим образом. Сначала при помощи функции Plot строятся графики левой и правой частей уравнения и по рисунку находится первое приближение x0. Затем для уточнения значения корня применяется функция FindRoot. Если L(x) и R(x) - соответственно левая и правая части уравнения, x - искомый корень, а x0 - его приближенное значение, определенное с помощью графика, то функция для поиска корня имеет вид:
FindRoot[L(x)==R(x), {x,x0}]
Пример
Найдем приближенное решение уравнения ex=x2. Построим графики функций ex и x2, выполнив команду Plot[{Exp[x], x^2}, {x, -1, 1}].
Мы получим изображение графиков функций ex и x2 на одном чертеже для значений аргумента x, изменяющегося на отрезке [-1,1].


Глядя на графики, видим, что в качестве начального приближения может быть взято значение x0 = -0.5.
Для уточнения решения нашего уравнения воспользуемся командой FindRoot[Exp[x]==x^2, {x, -0.5}] и получим приближенное значение корня x = -0.703467. Если требуется большая точность (но не более 16 знаков после запятой), то можно воспользоваться функцией N. Так, выполнив команду N[FindRoot[Exp[x]==x^2, {x, -0.5}], 16], мы получим приближенное значение корня с точностью до 16 знаков после запятой: x = -0.7034674295409824.
Пример
Как правило, тригонометрические уравнения имеют бесконечно много решений, поэтому можно указывать различные начальные приближения и получать приближенные значения разных корней уравнения. Так, выполнив команду FindRoot[Sin[x^2]==0, {x, 2}], найдем x = 1.77245, а изменив начальное приближение с 2.0 на 3.0, с помощью команды FindRoot[Sin[x^2]==0, {x, 3}] получим приближенное значение другого корня уравнения, а именно x=3.06998.
Задания
Решите системы уравнений:
1.
2.
Решите неравенства:
1.
2.
Найдите приближенно наименьший положительный корень уравнения 1/x2=5 cos x.Найдите с точностью 12 знаков после запятой все корни уравнения (1 - x)/(x4 + 1) = sin x, принадлежащие отрезку [-1,4].

Система символьной математики Maxima


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

Для работы с данной системой в ОС Linux следует в окне shell набрать команду maxima или xmaxima для запуска ее графической оболочки. Другим удобным инструментом для работы с системой Maxima является программа texmacs. На панели инструментов этой программы располагается кнопка с изображением монитора, нажатиe на которую открывает меню выбора интерактивной сессии. Выбор пункта maxima позволит начать сеанс работы с этой программой.


увеличить изображение

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

При старте выводится некоторая информация о системе и "метка" (C1). Каждый ввод и вывод помечаются системой и затем могут быть использованы снова. Символ C (от command) используется для обозначения команд, введенных пользователем, а D (от display) - при выводе результатов вычислений.

Для инициализации процесса вычислений следует ввести команду, затем символ ; (точка с запятой) и нажать клавишу Enter. Если не требуется вывод полученной информации на экран, то вместо точки с запятой используется символ $. Обратиться к результату последней команды можно с помощью символа %. Для повтора ранее введенной команды, скажем (C2), достаточно ввести два апострофа и затем метку требуемой команды, например, "C2.

Система Maxima не обращает внимание на регистр введенных символов в именах встроенных констант и фунций. Запись sin(x) эквивалентна записи SIN(x), но при выводе результатов в текстовом режиме используются заглавные буквы. Регистр букв, однако, важен при использовании переменных, например, Maxima считает x и X разными переменными.



Создание графических изображений


В системе Mathematica для построения графиков вида y=f(x) используется функция Plot, первым параметром которой является функция или список функций, графики которых должны быть построены, а вторым - список из трех величин: аргумент функций и концы промежутка, на котором должен быть построен график, например,

Plot[{Sin[x/2], 1.5 Sin[2x]}, {x, -3Pi,3Pi}]


Полученные изображения можно сохранить в форматах EPS, GIF, PDF, TIFF и некоторых других (смотри Help) при помощи функции Display. Ее первым аргументом является имя создаваемого файла, заключенное в кавычки, вторым - графическое изображение, а третьим - формат выходного файла, например,

Display["g1.gif", Plot[ArcTan[x]-0.5, {x, -10, 10}], "GIF"]

Для каждого графика можно задать набор параметров PlotStyle, задающий цвет, толщину и тип линии графика. Опция RGBColor[r,g,b] (каждая составляющая есть число в диапазоне от 0 до 1) задает цвет графика в цветовой модели RGB. Для применения цветовой модели HSB (H - hue, тон; S - saturation, насыщенность; B - brightness, яркость) указывается опция Hue[h, s, b], (h, s и b из интервала [0; 1]). Возможно указание сокращенной формы этой опции - Hue[h], соответствующей значению Hue[h, 1, 1]. В следующем примере используются две различные цветовые модели для изображения двух графиков:

Plot[{Sin[x], Sin[2x]}, {x, -2Pi,2Pi}, PlotStyle -> {RGBColor[1,0,0], Hue[.4]}]

Другими опциями PlotStyle являются толщина линии (Thickness) и характеристики пунктирной линии (Dashing):

Plot[{x Sin[2x], x^3 - 3x +1}, {x, -4, 4}, PlotStyle -> {{Hue[0], Thickness[.01]}, {Hue[.6], Dashing[{.02}]}}]


Функция Plot допускает задание множества других опций, относящихся как ко всему изображению в целом, так и к каждому из его составляющих в отдельности. Их полный список можно получить при помощи команды Options[Plot]. Вот примеры использования некоторых из них:

Frame -> TrueЗаключает рисунок в рамку
PlotRange -> {-5, 5}Задает диапазон по оси OY
Ticks -> {{-Pi, 0, Pi}, Automatic}Задает отметки на оси OX
PlotLabel -> "Sin[x]/x"Задает заголовок рисунка


Пример

На следующем рисунке изображен график функции arctg x и две его горизонтальные ассимптоты (PI/2 и -PI/2). Опция PlotStyle задает параметры каждого графика в отдельности, а остальные опции задают внешний вид всего изображения в целом. Переменная p2 используется затем для сохранения изображения.



p2=Plot[{ArcTan[x], Pi/2, - Pi/2}, {x, -10, 10}, PlotStyle -> {{RGBColor[0, 1, 0]}, {RGBColor[1, 0, 1], Dashing[{.015}]}, {RGBColor[1, 0, 1], Dashing[{.015}]}}, Ticks -> {Automatic, {-Pi/2, -Pi/4, Pi/4, Pi/2}}, PlotLabel->"f(x) = arctg(x)", PlotRange ->{-2, 2}]

Для сохранения в файле g2.gif полученного изображения в формате GIF использовалась функция Display:

Display["g2.gif", p2, "GIF"]

Функция ParametricPlot используется для рисования графиков функций, заданных параметрически. Отметим, что Mathematica по умолчанию отображает графические объекты таким образом, что отношение высоты рисунка к его ширине равно величине, обратной золотому сечению (около 0.618034). Для сохранения естественных пропорций изображения следует указывать опцию AspectRatio -> Automatic. После этого круг выглядит действительно кругом, а не овалом. Ниже приведены примеры, демонстрирующие построение параметрически заданных кривых.

ParametricPlot[{Sin[t], Cos[t]}, {t, 0, 2Pi}] ParametricPlot[{Sin[t], Cos[t]}, {t, 0, 2Pi}, AspectRatio -> Automatic] ParametricPlot[{Sin[3t], Cos[2t]}, {t, 2Pi/3, 4Pi/3}, AspectRatio -> Automatic] ParametricPlot[{{Sin[2t], Sin[3t]}, {0.5*Sin[t], 0.5*Cos[t]}}, {t, 0, 2Pi}, AspectRatio -> Automatic]

Для построения графиков в полярной системе координат следует предварительно загрузить модуль расширения Graphics, после чего использовать функцию PolarPlot:

<<Graphics`Graphics` PolarPlot[phi, {phi,0,10Pi}] PolarPlot[Cos[t], {t,0,2 Pi}] PolarPlot[Cos[a]^2 -Sin[a]^2,{a,0,2Pi}] PolarPlot[Sin[5t],{t,0,2 Pi}] PolarPlot[1-Sin[fi],{fi,0,2Pi}]

Функции Plot3D и ParametricPlot3D являются основными инструментами программы Mathematica для изображения трехмерных графических объектов.


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

Plot3D[Sin[xy], {x, 0, 4}, {y, 0, 4}, PlotPoints -> 40, Mesh ->False, FaceGrids ->All, AxesLabel -> {"Length", "Width", "Height"}]

ParametricPlot3D[ {u Cos[u](4 + Cos[u+v]), u Sin[u](4 + Cos[u+v]), u Sin[u + v]}, {u, 0, 3Pi},{v, 0, 3Pi}, PlotPoints ->{60, 12}]

Следующие изображения построены при помощи модуля расширения Graphics

Построение икосаэдра

<<Graphics`Polyhedra` Show[Polyhedron[Icosahedron], Boxed -> False]


Лист Мебиуса - пример односторонней поверхности <<Graphics`Shapes` Show[Graphics3D[ MoebiusStrip[2, 0.5, 150], Boxed ->False]]

Сфера с отверстием

<<Graphics`ContourPlot3D` ContourPlot3D[ Cos[Sqrt[x^2+y^2+z^2]], {x, -2, 2}, {y, -1.5, 2}, {z, -2, 2}, Boxed -> False, PlotPoints ->{3,15}]


Задания

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