Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Информатика

.pdf
Скачиваний:
24
Добавлен:
03.05.2015
Размер:
3.59 Mб
Скачать

131

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

Внутри пары <TR> …</TR> можно поместить заголовок ряда: <TH> текст заголовка </TH>. Как и в Word конструирование таблицы помогает аккуратнее расположить и оформить текст, особенно если он включает нетекстовые элементы (например, рисунки, графику).

Пример. Web-страничку (рис. 44), содержащую заголовки, различные шрифты, таблицу и рисунок,

Рис. 44

можно создать следующим HTML-кодом (рисунок и текст вопроса вставлены в отдельную таблицу):

<html> <head>

<meta http-equiv="Content-Type" content="text/html; charset=windows1252">

<title>ОПРЕДЕЛЕН 1048;Я</title>

<style type=text/css>

body {text-color:blue;background:#FFFF99} h1 {color:red}

dt {color:blue;text-decoration:underline} caption {color:brown}

th {color:brown} </style>

</head> <body> <h1

align=left><u>ОПРЕДЕЛЕ& #1053;ИЯ</u></h1>

132

<dl compact>

<dt>ТАКСОНОМИ 71;</dt>

<dd>принцип систематиз& #1072;ции</dd>

<dt>ПРИМИТИВ</dt> <dd>система

взглядов без должной детализаци& #1080;</dd>

</dl>

<table width=75% align=center bgcolor=#CCFF99 border=4 rules=all> <caption

align=center><b>ДРЕВНЯЯ ТАКСОНОМИЯ< /b></caption>

<tr> <th>Звери</th>

<td>Плотоядны 77;</td> <td>Травоядны 77;</td>

<td>Морские</td> </tr>

<tr> <th>Птицы</th>

<td>Летающие</td> <td>Бегающие</td>

<td>Плавающие</td

>

</tr> <tr>

<th>Рыбы</th><td>Наст 1086;ящие</td><td>Кост& #1080;стые</td><td>Двоя кодышашие</td>

</tr> <tr>

<th>Гады</th> <td>Крокодилы</td

>

<td>Черепахи</td> <td>Змеи</td>

</tr> </table>

<table width=80% height=30%> <tr height=30%>

<td width=40%><img src=BIGBIRD.BMP align=right></td> <td width=40%><font size="18" color=#FF0066>А

это кто по- вашему?</font></td>

</tr> </table> </body> </html>

Здесь вся кириллица заменена кодами.

133

5.3. ФРЕЙМЫ

Язык HTML позволяет создать еще одну отличительную конструкцию: объединить в одном документе несколько документов, сохранив при этом возможность их совместного и раздельного просмотра, включая взаимные и перекрестные ссылки. Фрейм (frame – рамка) – это способ разбиения просматриваемой страницы на прямоугольные части. Способ задается парным тэгом <FrameSet>, который имеет атрибут Cols="m, n" (где m и n - ширина каждой из двух вертикальных частей экрана) или Rows="m, n" (если экран разбивается на две горизонтальные части). Полезно иметь в виду, что сумма m + n должна быть равна соответствующему размеру экрана, поэтому эти размеры лучше указывать в процентах. Можно указать атрибут, например, Cols="25%,*,2*", который означает, что экран разбивается на три части: первая занимает 25% экрана, вторая и третья – остальные 75%, причем третья занимает в два раза больше места, чем вторая. Атрибуты Border=n и BorderColor=цвет (или шестнадцатеричный код цвета) определяют толщину (в пунктах) и цвет границы между областями. Непарный тэг <frame> "открывает" информацию части экрана (по порядку: слева направо и сверху вниз): можно вводить произвольные тексты, таблицы, картинки и т. д., таким образом, каждая часть экрана оформляется как отдельный документ. Каждый из построенных документов может быть связан с остальными. Для построения этой связи полезно использовать атрибут name="…" тэга <frame> и тогда необходимую засылку в нужную часть можно выполнить тэгом <A> с атрибутом target="имя части". Если есть необходимость заполнить фрейм некоторым готовым HTML-документом, то следует использовать тэг <frame> с атрибутами src="адрес вводимого документа" и target="имя фрейма". Рассмотрим следующий пример.

Пример. Построим Htm – документ с использованием фреймов. Тема документа – моя семья. Разобьем экран сначала на две равные вертикальные части. Вторую обозначим "frC", первую разобьем на две равные горизонтальные части, обозначив верхнюю "frA", нижнюю – "frB". Заготовим документ "Part_С.htm", который будет загружен во фрейм "frС", содержащий полезные общие сведения о семье. Общую схему кода этого документа можно представить следующим образом:

<html>

<!- - необходимая часть, заполняемая редактором --> <head> <title> Part_С </title> </head>

<body>

<h2 align=center>

<!- - красный заголовок -->

<font color=red> Как мы живем </font> </h2>

<!- - далее произвольная информационная часть - ->

134

. . .

</body>

</html>

(в угловых скобках <! - - комментарий - -> не воспроизводится браузером).

Далее, заготовим файлы фотографий членов семьи, например, в формате .jpg (или .gif, .tiff, .xbm) и на каждого члена семьи небольшой документ для загрузки фотографии. Возьмем для примера отца и назовем документ father.htm:

<html>

… <! - - заголовки - -> <body>

<h2 align=center> Портрет отца </h2>

<image align=bottom src="(адрес файла)....jpg"> </body>

</html> .

Пусть наша семья состоит из родителей и троих детей (два брата и сестра). Подготовим документ, загружаемый во фрейм "frA":

<html>

<head > <title> Part_A </title> </head> <body>

<!- - подчеркнутый заголовок - ->

<h2> <u> <center> Моя семья </center> </u> </h2> <UL> <!- - список - ->

<Li> <b> <i> Родители </i> <b> <!- - жирный курсив - -> <UL> <!- - подсписок - ->

<Li> <a href="father.htm" target="frB">

Отец </a>

<!- - загрузка фотографии при щелчке мышкой по слову "Отец" - -> <Li> <a href="mother.htm" terget="frB">

Мать </a>

<!- - загрузка фотографии при щелчке мышкой по слову "Мать" - -> </UL>

<Li> <b> <i> Дети </i> <b> <UL>

<Li> <!- - подсписок детей - > </UL>

</UL>

</body> </html> .

Наконец, соберем все в едином документе "Main.htm" с кодом:

<html>

<head> <title> Main </title> </head>

<!- - разбиение экрана на две вертикальные рамки - -> <frameset cols="50%,50%">

<!- - разбиение первой части на две горизонтальные половины - ->

<frameset rows="50%,50%">

<frame src="Part_A.htm" name="frA">

135

<frame src="Part_B.htm" name="frB"> <!- - документы в окна загружены - ->

</frameset>

<frame src="Part_C.htm" name="frC"> </frameset>

</html>

(здесь документ Part_B.htm содержит один заголовак "Фото"; эту строчку можно опустить). Созданный таким образом документ состоит из трех связанных частей (фреймов): в левой верхней части – список членов семейства, в правой – все, что хотелось сообщить о семье. При щелчке мышкой по какому-нибудь элементу списка в левом нижнем фрейме появляется соответствующая фотография с подходящей надписью.

HTML-документы позволяют использовать так называемые "плавающие" фреймы. Они остаются на той же странице просмотра, занимая место наподобие поля вставленного рисунка в Word. Плавающий фрейм определяется парным тэгом <IFrame> с атрибутами align= выравнивание (left, center, right), height= высота в пунктах или процентах от общего экрана, width= ширина фрейма, src="адрес загружаемого документа". Содержимое плавающего фрейма можно менять в зависимости от состояния основного документа (документ в документе). Если загружаемый документ не помещается в поле фрейма, то последний снабжается полосой прокрутки.

Безусловно, некоторые текстовые редакторы имеют, как уже отмечалось выше, достаточно подробное меню, набор шаблонов для автоматизации создания Web-документов. Базовые знания HTML существенно упрощают и облегчают эту работу. Кроме того, HTML допускает использование Visual Basic (в слегка урезанном варианте – так называемый VBScript, а также JavaScript), а вместе с ним уже известные элементы управления, подпрограммы и макросы. Все это позволяет превратить Web-документ в очень "живое" Internet-приложение.

136

6. Элементы вычислений в Mсd

В целом мы уже знакомы с некоторыми основными приемами работы в Mcd. Соберем теперь разрозненную информацию воедино.

6.1. КРАТКИЙ ОБЗОР

Переменные – типа Double, String, Complex.

Окончания "b", "o", "h" обозначают число в двоичном, восьмеричном или шестнадцатеричном виде (например, A2Ch обозначает

16-чное число 12+2∙16+10∙256, т.е. 2604).

Константы: ∞ = 10307, tol = 10-3 (точность числ. методов), ORIGIN = 0 (начало индексации, можно менять!), % = 0.01, i (или j) = -1.

Операторы: 1) присваивание ":=" (на рабочем листе, клавиша Shift "ж"), "" (в блоках, клавиша "{"),

2)вычисление (вывод значения) "=" (на рабочем листе, "="), "" (в символьных вычислениях, клавиша Ctr "."),

3) обработка условия (клавиша "}")

 

, альтернатива

 

опера-

усло-

 

вие

 

тор

 

 

вводится оператором "Otherwise" (клавиша Ctr "}"), не путать с функцией if (, , ), возвращающей результат действия, где на первом месте стоит условие, на втором – оператор, выполняемый при этом условии, на третьем – альтернативный оператор.

4)логическое "=" (толстое) вводится клавишей Ctr "=",

5)многоточие (знак ранжированных значений, кл. ";" ) "..",

6)верхний индекс (степень) – Shift "6",

7)нижний индекс – клавиша "[" (не путать с "подписью" – кл. ".": например, после ввода "a[10" и "a.10" на рабочем листе в обоих

случаях появится выражение a10, но в первом случае это элемент массива, во втором – отдельная переменная),

8)верхний индекс в угловых скобках (кл. Ctr "6") Mопределяет номер столбца матрицы (в данном случае матрицы М),

9)знак транспонирования (это не степень!) вводится клавишей Ctr + "1",

10)цикл пересчета "for ■ ■.." (клавиша Ctr+Shift "Э") допускает прямой и обратный ход (отсутствует форма "Step"), а также вариант "for ", где а – произвольный вектор-строка.

11)цикл с предусловием "While (условие)" – других циклов нет,

 

 

137

 

 

 

 

12) блок операторов

вводится из меню "Add Line" или клавишей

 

 

 

 

 

"]" (правая квадратная скобка), для добавления блока в оператор (или увеличения блока) достаточно выбрать мышкой место (или определить законченную область) и щелкнуть "Add Line" (или нажать "]" на клавиатуре), например, условный оператор if после выделения левого "места" и нажатия "]" превраща-

if

ется в

 

 

,

 

 

 

 

 

 

 

 

 

 

13)"Break" (кл. Ctr "{") выполняет "принудительный" выход из циклов,

14)греческие буквы вводятся как соответствующие латинские

споследующим нажатием Ctr "g" (либо из меню).

Функции: 1) встроенные (калькулятор или Меню

вставка f(x)),

2) пользовательские, определяются следующим образом:

ариф. выр.

_

 

имя (аргументы – не обязательно) :− функция

, перемен-

 

 

блок прогр.

ные справа от знака присваивания должны входить в число аргументов (слева) или быть определенными ранее (т.е. левее и (или) выше). Например, функция f(x) x+sin(ω∙x+c) не определена, если переменные ω и с не были определены ранее (вычислены или приняли значения), х – фиктивная (свободная) переменная (ее определять не обязательно). Переменные, определенные внутри функции, не доступны вне ее.

Mсd допускает рекурсивное определение функции (через ранее вычисленные значения).

1 при |x| < 0.0001,

Примеры. 1) Вычислим функцию f(x) = x x с помощью

f( /2) cos( /2) иначе

_

кода f(x) :− if (|x| < 0.0001, 1, f(0.5∙x)∙cos(0.5∙x)).

2) Функцию, вычисляющую n-ое число Фибоначчи fn = fn-1 + fn-2,

_

f0 = f1 = 1, легко определить кодом f(n) :− if(n < 2, 1, f(n-1) + f(n-2)).

Индексированные объекты (векторы, матрицы, тензо-

ры) определяются двояко:

1)меню "матрицы" (клавиша Ctr "m") позволяет ввести требуемый шаблон для заполнения,

2)при известных функциональных свойствах объекта можно

определить границы массива (например, m ..., n ...) и задать ранжированные индексные переменные, полагая в этом случае (при ORIGIN = 0) i 0..m-1, j 0..n-1, после чего мо-

138

жно задавать значения объекта присваиванием: Obi, j ...

Например, пусть необходимо определить матрицу А, имеющую 100 строк и столбцов, диагональные элементы которой равны 4, соседние 1, осталь-

ные нули. Положим m 100 n 100 i 0..m-1 j 0..n-1

A i, j if(i = j, 4, if(|i – j| = 1, 1, 0)). Результат можно проверить, вставив знак "=" после имени матрицы А.

Графики (см. рис. 45).

I. 2-мерный график:

а) декартов (X-Y график), б) полярный график.

II.3-мерный график.

а) график поверхности, б) график линий уровня,

в)

3-мерная гистограмма,

 

г)

3-мерное множество точек,

Рис. 45

д)

векторное поле.

 

Начиная с 12-й версии, Mсd допускает плоские графики с двумя осями ординат с независимой шкалой. На осях указываются соответствующие пары аргумент-функция (от указанного аргумента) или пары множеств {x}-{y}. На одном графике можно изобразить несколько функциональных зависимостей.

Пример 1. Плоский график функции

параметрически, вместе с асимптотами 0.5 (t+2)2-2 и t+1 представлен одним изображением парами

{x(t), y(t)}, {t, 0.5(t+2)2-2} и

{t, t+1} (по оси ординат ввод следующего графического объекта выполняется после запятой, как и по оси абсцисс, см. рис. 46).

Пример2. Полярный гра-

фик функции

 

1

 

exp

 

 

 

sin(πt)-1

r(t) =

1+0.2t

 

(трилистник) изображен на рис. 47.

x(t) =

(t-1)2

, y(t) =

t3-2t+2

, заданной

t

2t

 

 

 

Рис. 46

139

Форматирование графика (щелчок правой мышью по графику выбор "Формат")

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

Пример 3. Быстрое построение графика поверхности: определя-

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

Можно определить значения функции на прямоугольной равномерной сетке значений аргументов (с постоянным шагом) в виде матрицы (прямоугольной таблицы), тогда в нижней части рамки графика следует поставить имя этой матрицы. Можно, наконец, использовать встроенную функцию CreateMesh, которая сама формирует необходимые матрицы для изображения графика в нужном диапазоне данных (с заданной подробностью). Так, если было бы желательно посмотреть на графике поведение данной f(x,y) в области x [-2,2], y [0,3],

можно определить комплект матриц M

CreateMesh(f,-2, 2, 0, 3, 20, 30) с 20

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

Пример 4. Если поверхность задана параметрически, то ее следует оформить в виде вектора с тремя координатами (x, y, z). Построим график тора с большим радиусом R=10 и маленьким r = 4, лежащего в горизонтальной

плоскости. Введем параметры: u [0, 2π] –

угол поворота в плоскости тора, v [0, 2π] – угол поворота в вертикальной плоскости. То-

Рис. 47

Рис. 48

Рис. 49

Рис. 54

140

гда абсцисса точки поверхности будет предста-

влена функцией x = (R+r cos(v)) cos(u), ордината - функцией y = (R+r cos(v)) sin(u), аппликата z = r sin(v). В функции CreateMesh возьмем по 50 точек в области изменения каждого параметра. В результате получим следующий рисунок

(см. рис. 50).

Аналогично получаются линии уровня функции f (см. рис. 51) и 3-D распределение точек тора (рис. 52).

Рис. 51

 

Рис. 52

Рис. 50

Пример 5. Для построения графика (распре-

 

деления) плоского векторного поля полезно оп-

 

ределить две матрицы: одна – матрица абсцисс

 

векторов, другая – ординат. Пару этих матриц

 

(в скобках) следует поместить внизу рамки по-

 

ля графика. Так, например, для векторного по-

 

x2-y2

T

 

ля F(x, y) =

 

 

 

, y cos(x-y) в области [-2, 2]

 

2

 

2

 

x

+y

 

 

×[-3, 2] положим: n := 10, hx := 0.4, hy := 0.5, i :=

 

0..n, j := 0..n, Zi,j := F(i∙hx-2, j∙hy-3), Mi,j := (Zi,j)0,

 

Ni,j := (Zi,j)1. Выбрав в меню (см. рис. 45) гра-

 

фик векторного поля и указав внизу пару мат-

Рис. 53

риц (M, N), получим рис. 53.

 

Символьная математика: а) символьные преобразования, б) символьные вычисления.

Меню символьных преобразований вызывается выбором "шапочки" в меню "Математика" (рис. 54). Рассмотрим использование некоторых ключевых слов из этого меню (результат получается после ввода правой стрелки "→" – Ctr ".").

■ float, n позволяет вывести результат с n десятичными знаками (с плавающей запятой), например, π float, 12 → 1.77245385091.