« Поставить закладку » « Сделать стартовой »

« Форумы » « Блоги » « Статьи » « Новости » « Файлы » « Realcoding IRC » « Site map » « Поиск »


Главная Главная
Анонсы Анонсы
Форумы Форумы
Каталог Каталог
Поиск Поиск
Опросы Опросы
Книжный магазин Книжный магазин
Реклама на сайте
Публикации Публикации
Партнеры Партнеры
Карта Карта сайта
Рассылки Рассылки
RSS экспорт
Настройки Настройки
О нас пишут О нас пишут
Контакты Контакты
Гостевая книга Гостевая книга


ПнВтСрЧтПтСбВс
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
    Популярное
Часть VI. Порты и файлы

Описание функций C (Си) / C++ - cprintf

Функция DeleteAtom

Функция SetMapperFlags

Создание содержания справочной системы

Транзакции и обновление базы данных

Создание системных ловушек Windows на Borland C++ Builder 5

Оптимизация построения дерева из базы данных в .NET

Функция CreateMenu

Формулы массива




    Архив файлов



    Сообщества

    Документация

    Кто на сайте
Вы не зарегистрированы.
Имя:

Пароль:

Запомнить

Регистрация позволит Вам пользоваться дополнительными сервисами.
Сейчас на сайте:
Гостей: 164
Пользователей: 0

Статьи:: Интернет технологии :: Учебник по JavaScript :: Глава 15. Процедурный тип данных и функция eval.



отправить ссылку другу версия для печати  Обсудить на форуме

Глава 15. Процедурный тип данных и функция eval.



Глава 15
Процедурный тип данных и функция eval

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

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

function f1(x) 

{ var у 

у=х*х*х-1 

return у }

Рис 15.1. График функции fl

Если использовать методы объекта Math, то функцию fl можно описать следующим образом:

function f1(x) 

{ var у

y=Math.pow(x,3)-1

return у }

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

function f2(x) 

{ var у

у=(х-1)*(x-D+1 

return у }

Рис 15.2. График функции f2

Описание функции f 2 может быть и таким:

function f2(x) 

{ var у

у= Math.pow(x-l,2)+l 

return у }

Во многих языках программирования разрешается рассматривать функции fi и f2 как процедурные константы, а в программе описать переменную процедурного типа, значение которой во время выполнения программы может меняться. Такие переменные связываются во время выполнения программы с разными процедурами. Процедурные константы и переменные можно использовать в качестве фактических параметров. В нашем случае ситуация была бы такой: в программе описана функция, которая вычисляет значение в точке, определяемой пользователем. Функция, задаваемая пользователем, передается в качестве параметра. Иногда в аналогичных случаях говорят, что процедура или функция рассматриваются как данные. Идея единства данных и подпрограмм занимает одно из основных мест в объектно-ориентированном программировании. В языке JavaScript идея процедурных типов данных реализована с помощью функции evai. Функция eval получает в качестве параметра строку. Если строка представляет собой выражение языка JavaScript, то вычисляется ее значение и возвращается как результат функции evai.

  Вычисление значения пользовательской функции

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

Функция, точка и вычисленное значение указываются в текстовых полях формы, как показано на рис. 15.3.

Рис 15.3. Значение задаваемой функции в точке

Для того чтобы определить значение функции, график которой изображен на рис. 15.1, достаточно задать функцию формулой х*х*х-1 или формулой Math.pow(x, 3) -1. Если же нас интересует значение в некоторой точке функции, график которой изображен на рис. 15.2, то надо ввести формулу (х-1)*(х-1)+1 или Math.pow(x-l,2)+l.

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

if (Math.abs(x)<l)

{y=Math.sqrt(l-x*x)} 

else

if (x <-l) {y=x+l} 

else {y=x-l}

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

if (Math.abs(х)<1)

{у= х*х} 

else

if (х <-1) {у=х+2}

else {y=l}

Метод eval может быть использован для выполнения операторов языка JavaScript, включенных в строку параметра. Таким образом, при задании функции можно вводить не только формулу, как мы поступали ранее, но и операторы. Для получения значений в заданных точках функций, графики которых изображены на рис. 15.4 и 15.5, можно ввести в поле формы соответствующие условные операторы. Таким образом, используя метод eval, мы получили возможность задавать в качестве исходных данных функцию, и тем самым решать целый класс однотипных задач.

Рис 15.4. График сложной функции (вариант 1)
 
Рис 15.5. График сложной функции (вариант 2)

  Формирование таблицы значений пользовательской функции

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

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

Листинг 15.1. Построение таблицы знйчений функции

<HTML> 

<HEAD>

<TITLE>Построение таблицы значений функции</TITLE> 

<script language="JavaScript"> 

<!-— //

function valfunc (objj )

{ var fs=obj.func.value

var m=Number(obj.left.value)

var n=Number(obj.rig.value)

var h=Number (obj.by.value)

var у

var x

var s="x         f(x)"+"rn"

for (var i=m; i<=n; i=i+h)

{x=i; y=eval(fs); s+=x+"       "+y+"rn"} 

obj.res.value=s 

}

//-—> 

</script> 

</HEAD> 

<BODY bgcolor="F8F8FF">

<Н4>Построение таблицы значений функции</Н4> 

<FORM name="form1"> 

<pre> 

Введите функцию:               <input type="text" size=20 name="func"><hr>

Введите левый конец интервала: <input type="text" size=8 name="left"><hr>

Введите правый конец интервала:<input type="text" size=8 name="rig"><hr> 

Введите шаг изменения аргумента:<input type="text" size=8 name="by"><hr> 

<input type="button" value=Вычислить' onclick="valfunc (form1) "><hr> 

Таблица значений функции:

<textarea cols=40 rows=10 name="res"></textarea><hr>

<input type="reset" value=Отменить> 

</pre>

</FORM>

</BODY>

</HTML>

На рис. 15.6 приведен результат выполнения сценария.

Рис 15.6. Таблица значений функции, задаваемой пользователем в текстовом поле формы

Для того чтобы получить значение функции у = 0,5 х cos(x) на интервале [0; 1] с шагом 0,05, следует заполнить соответствующие поля формы, причем, функцию надо задать как выражение JavaScript: 0.5*Math. cos (x).

  Определение принадлежности точки некоторой области

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

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

Рис 15.7. Область плоскости Р1


Рис 15.8. Область плоскости Р2


Рис 15.9. Область плоскости РЗ

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

  • Math.abs(y)+ Math.abs(x)<=1
  • х*х+у*у<=1
  • у>= Math.abs(x)

Полностью программа приведена в листинге 15.2.

Листинг 15.2. Принадлежит ли точка области, задаваемой пользователем

<HTML> 

<HEAD>

<TITLE>Принадлежит ли точка определенной области</TITLE> 

<script language="JavaScript"> 

<!-— //

function valfunc(obj) 

{ var fs=obj.func.value 

var x=Number(obj.x.value) 

var y=Number(obj.y.value) 

var z=eval(fs) 

var s="принадлежит области" 

if (!z) s= "не " +s

obj.res.value=s 

}

//-—>

</script> 

</HEAD> 

<BODY bgcolor="F8F8FF">

<H4Принадлежность точки выделенной области плоскости</Н4>

<FORM name="forml"> 

<pre>

Введите формулу, описывающую область: <input type="text" size=40 

name="func"><hr>

Введите x: <input type="text" size=8 name="x"><hr>

Введите у: <input type="text" size=8 name="y"><hr>

<input type="button" value=Вычислить onClick="valfunc(forml)"><hr>

Точка с заданными координатами <input type="text" size=30 name="res"><hr>

<input type="reset" value=Отменить> 

</pre>

</FORM> 

</BODY> 

</HTML>

  Вычисление корня уравнения методом итераций

Напишем программу, которая определяет корень уравнения вида х = J(x) с начальным приближением / и точностью eps методом итераций.

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

Листинг 15.3. Нахождение корня уравнения вида х - f(x) методом итераций

<HTML>

<HEAD>

<TITLE>Нахождение корня уравнения вида х = f(x)

методом итераций</TITLE>

<script language="JavaScript">

<!-—//

function iter(obj)

{ var d=document

var fs=obj.func.value 

var t=Number(obj.tv.value) 

var eps=Number(obj.epsv.value) 

var x=t; 

var y=eval(fs)

while (Math.abs(y-x) >= eps) 

{ x=y ; y= eval(fs) }

obj.res.value= x 

}

//-—> 

</script> 

</HEAD> 

<BODY bgcolor="F8F8FF">

<Н4>Нахождение корня уравнения вида х = f(х) методом итераций</Н4> 

<FORM name="forml"> 

<pre>

Введите функцию f(х): <input type="text" size=20 name="func"><hr> 

Введите начальное приближение: <input type="text" size=8 name="tv"><hr> 

Введите требуемую точность: <input type="text" size=8 name="epsv"><hr> 

<input type="button" value=Bычиcлить onClick="iter(forml)"><hr> 

Корень уравнения равен: <input type="text" size=20 name="res"><hr> 

<input type="reset" value=Отменить> 

</pre>

</FORM>

</BODY>

</HTML>

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

Напишите программу, которая находит корень уравнения вида f(x) = 0 методом деления отрезка пополам с заданной точностью eps.

Нас интересует интервал [a, b], на котором функция непрерывна и монотонна и на концах интервала принимает значения разных знаков. Тогда на этом интервале функция имеет ровно один корень и его можно приблизительно определить следующим образом. Разделить интервал [а, b] на две части точкой m = (а + b) / 2 и вычислить значение f(m). После этого из двух получавшихся интервалов [а, m] и [m, b] рассматривать тот, на концах которого функция принимает значения разных знаков, именно он содержит корень. Продолжить процесс поиска корня для вновь образованного интервала. Процесс будет закончен, когда длина очередного интервала станет меньше значения eps. Следовательно, любая точка интервала будет представлять значение корня с точностью eps.

Напишем сценарий, который для уравнения вида f(x) = 0  находит корень с точностью eps методом деления отрезка пополам. При этом пользователь должен задать функцию, точность и границы интервала (листинг 15.4).

Листинг 15.4. Метод деления отрезка пополам

<HTML> 

<HEAD>

<TITLE>Метод деления отрезка пополам</TITLE>

<script language="JavaScript">

<!--//

function binroot (obj) 

{ var fs=obj.func.value

var a=Number(obj.left.value) 

var b=Number(obj.right.value) 

var eps=Number(obj.epsv.value) 

var x=a

var fa = eval(fs) 

x=b

var fb = eval(fs) var fc var с

if (fa*fb < 0)

{ while (Math.abs(b-a) >= eps) 

{ c= (a+b)/2;

x=c; fc= eval(fs) 

if (fa*fc < 0)

{b=c; fb= fc } 

else

{a=c; fa=fc } 

}

obj.res.value= (a+b)/2 

x= (a+b)/2 

var tes = eval(fs) 

obj.test.value= tes 

}

else document.write("на концах отрезка значения одного знака") 

}

//--> 

</script> 

</HEAD> 

<BODY bgcolor="F8F8FF">

<H4> Метод деления отрезка пополам</Н4> 

<FORM name="form0"> 

<pre>

Введите функцию: <input type="text" size=30 name="func"><hr> 

Введите левьй конец отрезка: <input type="text" size=10 name="left"><hr> 

Введите правый конец отрезка: <input type="text" size=10 name="right"><hr> 

Задайте требуемую точность: <input type="text" size=10 name="epsv"><hr> 

<input type="button" value=Вычислить onClick="binroot(form0)"><hr> 

Корень уравнения равен: <input type="text" size=30 name="res"><hr> 

Тест: <input type="text" size=30 name="test"><hr> 

<input type="reset" value=Отменить> 

</pre>

</FORM> 

</BODY> 

</HTML>

Рис 15.10. Поиск корня уравнения методом половинного деления

Для того чтобы найти корень уравнения у = х4-3х+ 1 с точностью 0,001 можно взять интервал [0, 1], т. к. на концах этого интервала функция принимает значения разных знаков. Результат работы сценария приведен на рис. 15.10.

  Вычисление интеграла

Напишите программу, которая приближенно вычисляет интеграл

Приближенное значение интеграла можно получить, если на промежутке [а, b] функцию f заменить кусочно-линейной функцией, т. е. превратить задачу о вычислении площади криволинейной трапеции в задачу вычисления площадей прямолинейных трапеций. Чем больше количество элементарных отрезков, тем более точные вычисления. Разобьем отрезок [а, b] на равные промежутки а = x0 , x1, ... xn = b. Площадь трапеции, на отрезке [xi-1, xi] определяется формулой

Если интервал [а, b] разбит на равные промежутки, то длина такого промежутка равна р = (b — а)/п, а точки определяются по формуле xi = а + i x h. Формула приближенного вычисления интеграла аналогично формуле трапеций может быть записана так:

Задачу будем решать следующим образом. Интеграл вычислять по формуле трапеций, последовательно уменьшая шаг в два раза, пока последние вычисленные приближения интеграла не станут меньше чем заданное значение eps. Кроме того, значение подынтегральной функции в каждой точке будем вычислять лишь один раз. Пусть рассматриваемым отрезком будет интервал [0, 1], а первоначальное разбиение n = 10. Значения подынтегральной функции должны быть подсчитаны в точках 1/10, 2/10, ... , 9/10. При следующем разбиении п = 20, значения функции должны считаться в точках: 1/20, 2/20, 3/20, 18/20, 19/20. Для некоторых значении в этом интервале значения функции уже считались на предыдущем шаге. Поэтому программу следует составить так, чтобы функция вычислялась лишь в точках 1/20, 3/20, ... , 19/20.

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

Листинг 15.5. Вычисление значения интеграла по формуле трапеций

<HTML> 

<HEAD>

<TITLE>Вычисление значения интеграла по формуле трапеций</TITLE> 

<script language="JavaScript"> 

<!-— //

function integral(obj) 

{ var d=document

var fs=obj.func.value

var a=Number(obj.left.value)

var b=Number(obj.right.value)

var n=Number(obj.nv.value)

var eps=Number(obj.epsv.value)

var i1; var i2; var h; var s; var i

var fcur 

x=a

var fa=eval(fs)

x=b

var fb=eval(fs)

s=(fa+fb)/2; h=(b-a)/n

for (1=1; i<= n-1; i = 1+1)

{x=a+i*h ; fcur=eval(fs); s=s+fcur}

i1=s*h

n=n*2; h=h/2 

for (i=1; i<= n-1; i=i+2)

{x=a+i*h; fcur=eval(fs); s=s+fcur} 

i2=s*h

while (Math.abs(11-12) >= eps) 

{i1=i2;

n=n*2; h=h/2 

for (i=1; i<= n-1; i = i+2)

{x=a+i*h; fcur= eval(fs); s=s+fcur} 

i2=s*h 

}

obj.res.value=i2 

}

//-—> 

</script> 

</HEAD> 

<BODY bgcolor="F8F8FF">

<Н4>Численное интегрирование.

Вычисление интеграла методом трапеций</Н4> 

<FORM name="form0"> 

<pre>

Введите подынтегральную функцию: <input type="text" size=20 

name="func"><hr>

Введите левый конец промежутка интегрирования: <input type="text" size=8 

name="left"><hr>

Введите правый конец промежутка интегрирования: <input type="text" size=8 

name="right"><hr>

Задайте начальное разбиение: <input type="text" size=12 

name="nv"><hr>

Задайте требуемую точность: <input type="text" size=12 

name="epsv"><hr>

<input type="button" value=Вычислить onClick="integral(form0)"><hr>

Значение интеграла равно: <input type="text" size=20 

name="res"><hr>

<input type="reset" value=0тменить> 

</pre> 

</FORM>

</BODY>

</HTML>

  Определение типа выравнивания изображения

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

При выборе значения параметра выравнивания изображения возникает событие focus, реакцией на которое является вызов функции set. Второй параметр функции set применяется при формировании имени строковой переменной, значение которой помешается в соответствующее поле формы.

Рис 15.11. Значения параметров горизонтального выравнивания изображения

function set(obj,i) 

{obj.res.value=eval("s"+i) }

Если написать конструкцию

obj.res.value="s"+i

то в зависимости от значения i будет выведена строка so, si, ...., s5. Полностью HTML-код приведен в листинге 15.6.

Листинг 15.6. Объяснение действия при выбранном значении параметра

<HTML> 

<HEAD>

<TITLE>Расположение изображения относительно строки</TITLE>

<script>

<!-—

var s0="Верхняя граница изображения выравнивается"+

"по самому высокому элементу текущей строки" 

var s1="Верхняя граница изображения выравнивается "+

"по самому высокому текстовому элементу текущей строки"

var s2="Выравнивание середины изображения по базовой линии "+

"текущей строки" 

var s3="Выравнивание середины изображения посередине "+

"текущей строки" 

var s4="Выравнивание нижней границы изображения "+

"по базовой линии текущей строки" 

var s5="Выравнивание нижней границы изображения "+

"по нижней границе текущей строки" 

function set(obj,i)

{obj.res.value=eval("s"+i)} 

//-—> 

</script> 

</HEAD> 

<BODY bgcolor="F8F8FF">

<H3 align=center>Расположение изображения относительно строки</Н3> 

Выберите значение параметра, который Вас интересует 

<FORM name="form1"> 

<TABLE border=2>

<ТR><ТD><h4>Значения параметра выравнивания ALIGN</h4>

<ТD><h4>Действия при выбранном значении параметра:</h4> 

</TR> 

<TR><TD>

<input type="radio" name="m" value=0

onfocus="set(forml,0)">TOP <br> <

input type="radio" name="m" value=l

onfocus="set(forml,1)">TEXTTOP<br> 

<input type="radio" name="m" value=2

onfocus="set(forml,2)">MIDDLE<br> 

<input type="radio" name="m" value=3

onfocus="set(forml,3)">ABSMIDDLE<br> 

<input type="radio" name="m" value=4

onfocus="set(forml,4)">BOTTON или BASELINE<br> 

<input type="radio" name="m" value=5

onfcus="set (forml, 5) ">ABSBOTTON<br></TD> 

<TD><textarea name="res" cols=40 rows=4>

</textarea><br></TD></TR></TABLE><br> 

<input type="reset" value="Обновить"> 

</FORM>

</BODY>

</HTML>

  Упражнения

1. Напишите сценарий с функцией, которая определяет приближенное значение корня уравнения f(x) = 0 методом хорд с точностью eps. Найдите корни уравнения ех+ х — 2 = 0 на промежутке [0, 1] с точностью 10-4.

2. Напишите сценарий с функцией, определяющей корень уравнения f(x) = 0 на промежутке [а, b] с заданным начальным приближением x0 методом Ньютона. Найдите с помощью описанной функции корни уравнения tgx — р х х = 0 на промежутке [0; 3/2] для р =1,4(0,2)2,1, x0 = 1,5.

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

где h = (b - а)/п, хi = а + i x h - h/2 при заданном значении п. Подынтегральную функцию, промежуток и разбиение пользователь должен задавать с помощью формы.

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

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

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

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

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

• хотя бы одна из переменных а, b, с имеет значение false;

• ровно одна из переменных а, b, с имеет значение false;

• ровно две переменные из переменных а, b, с, имеют значение false;

• все переменные а, b, с имеют одинаковое значение;

• ни одна из логических переменных а, b, с не истинна;

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

• остаток от деления целого числа n на 7 равен либо 3, либо 7;

• два числа нечетны и разность между ними равна 2;

• сумма цифр заданного трехзначного числа п совпадает с самим числом;

• заданное четырехзначное число п является палиндромом;

• заданное трехзначное число п является числом Армстронга;

• первая и последняя цифра четырехзначного числа п совпадают;

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

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

• последовательность из пяти чисел а, b, с, d, e образует арифметическую прогрессию;

• пять чисел образуют возрастающую последовательность;

• пять чисел образуют строго возрастающую последовательность;

• пять чисел образуют строго убывающую последовательность;

• пять чисел образуют возрастающую последовательность;

• в последовательности есть два одинаковых числа;

• в последовательности три одинаковых числа;

• в последовательности нет одинаковых чисел;

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

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

• в последовательности из четырех чисел а, b, с, d только одно максимальное число;

• в последовательности из четырех чисел а, b, с, d чисел ровно два максимальных числа;

• в последовательности из четырех чисел а, b, с, d максимальное число совпадает с квадратом минимального числа;

• в последовательности из четырех чисел а, b, с, d первое минимальное число стоит на нечетном месте;

• в последовательности из четырех чисел а, b, с, d максимальное число и минимальное число идут подряд;

• значение а является наибольшим из четырех попарно различных значений а, b, с, d;

разность между максимальным и минимальным числом является числом, кратным 7.

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

• последовательность из пяти символов а, b, с, d, e является идентификатором;

• последовательность из пяти символов а, b, с, d, e является палиндромом;

• в последовательности из пяти символов а, b, с, d, e есть одинаковые буквы;

• в последовательности из пяти символов а, b, с, d, e все буквы различны;

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

• в последовательности символов а, b, с, d, e есть хотя бы одна цифра;

• в последовательности а, b, с, d, e есть две цифры, стоящие рядом;

• последовательность а, b, с, d, e представляет целое число, которое при делении на 7 дает в остатке 5;

• последовательность а, b, с, d, e представляет целое число, кратное 3;

• в последовательности а, b, с, d, e есть ровно три буквы;

• последовательность а, b, с, d, e представляет целое число, кратное 9.

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

• все экзамены сданы на 5;

• экзамены сданы на оценки 4 и 5, но не на все пятерки;

• имеется хотя бы одна тройка, но нет двоек;

• имеется хотя бы одна двойка;

• средний балл за все экзамены в пределах 3,5 и 4,5;

• сумма баллов за сессию либо меньше 3,5, либо более 4,75;

• среди оценок нет одинаковых;

• ровно две четверки;

• ровно три тройки.

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

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

• является ли треугольник равносторонним;

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

• является ли треугольник прямоугольным; является ли треугольник остроугольным; является ли треугольник тупоугольным.








Вышел MySQL 5.1.30, первый стабильный рели....

MySQL

После публикации 29 тестовых версий анонсирован первый стабильный релиз MySQL 5.1, пригодный для промышленной эксплуатации и обеспечивающий увеличение производительности для "тяжелых" SQL запросов, по сравнению с MySQL 5.0, примерно на 15-20%. Главные новшества появившиеся в MySQL 5.1:


Подробнее... | Рубрика: MySQL | Добавлено: 28.11.2008

Тестирование параллельных программ.

Тестирование

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


Подробнее... | Рубрика: Тестирование | Добавлено: 28.11.2008

Архитектура AMD64 (EM64T).

Архитектура AMD

Аннотация. В статье кратко рассматривается архитектура AMD64 компании AMD и ее реализация EM64T компании Intel. Описаны особенности архитектуры, ее возможности, достоинства и недостатки.


Подробнее... | Рубрика: Архитектура AMD | Добавлено: 27.11.2008

Остальные статьи:

Платформа 2009. Определяя будущее
Windows Vista Bridge Sample Library - упра...
Оптимизация 64-битных программ
Подгрузка через AJAX HTML-кода, содержащег...
Обзор нового релиза самой мощной Ajax библ...
Firebug 1.3 и 1.4 alpha — что нового и инт...
Релиз Microsoft Silverlight 2.0. Что новог...
XML документация в C#
Курсоры в MySQL 5
Microsoft опубликовала подробности о сесси...
Microsoft делится подробностями о том, что...
Тестируем новый javascript от нового брауз...
MySQL Query Cache
Использование провайдеров компиляции в As...
Чего мы ждем от C# 4.0
Delphi 2009 и C++Builder 2009
Джоэл Спольски и Джеф Этвуд запустили новы...
Поиск кода Google /* что нового? */
10 jQuery скриптов для улучшения интерфейс...
Генераторы отчетов FastReport 4 и QuickRep...


Цитата дня (все,добавить):

Портал фрилансеров

работа на дому


    Рубрикатор

Программирование

C/С++
Обучение
Windows API
XAML
Моделирование
Паттерны
Visual Basic 7 .NET
WxWidgets
Функции WinApi
Функции С++
Разработка под Mac OS
Eiffel
Visual Studio 2008
UI дизайн
Алгоритмы
Конкурсные статьи
Turbo Pascal
Visual Studio
CASE-средства
Visual Studio 2005
Без VCL
Delphi
Тех. документация
Тестирование
Software Testing
ООП
TCP/IP
Google Android
Windows Installer
.NET Framework
Драйвера
C# C Sharp
Справка
Проектирование
Информ. системы
Visual Basic
Assembler
Оптимизация кода
Gtk+
Компоненты
Реинжиниринг
Управление проектами
Extreeme programming
Lotus Notes
Алгебраическое проектирование


Интернет технологии

PHP
Perl
ASP
WAP
Cookies
SSI
CGI
Web Servers
VB Script
DNS
CSS
XML
Html
Java Script
Java2ME
Firewall
Flash
.htaccess
Apache
VRML
Протоколы
Поисковые системы
Технология JAVA
Учебник по PHP
Учебник по JavaScript
Учебник по XML
Java Q&A
AJAX
DHTML
XHTML
Dreamweaver
Web 2.0
Python
Вебмастеру
Cisco
Ruby on Rails
Silverlight

Базы данных

Access
InterBase
MySQL
Oracle
ADO .NET
Основы SQL
Учебник по Access 2002
MS
Microsoft FoxPro
Доступ к данным
XML в MS SQL Server 2000
ODBC и MyODBC
Обучение
Caché
DB2
PostgresSQL
Sybase
Теория
Хранилища данных
Безопасность
Реляционные данные
MySQL и mSQL

Остальное:

Разное
Обзоры книг
Безопасность
Графика и дизайн
Юмор
Linux
Фракталы
Microsoft Axapta
Многоядерность
Сети
Microsoft Office
Работа
MS-DOS
Криптография
Графика и игроделание
Новости SDK
Системы защиты
Учебник по AutoCad
CVS
Windows XP
Windows Server 2003
Windows Vista
Windows 7
Мероприятия