пятница, 10 июля 2009 г.

Решение задач в Прологе

Лабораторная работа №2
Решение задач в Прологе

1. (о бездомном животном) Бутси – коричневая кошка. Корни – черная кошка. Мак – рыжая кошка. Флэш, Ровер, Спот – собаки, Ровер – рыжая, а Спот – белая. Все животные, принадлежащие Тому и Кейт, имеют родословную. Том владеет всеми черными и коричневыми животными. Хозяин всех собак небелого цвета, которые не являются собственностью Тома, – Кейт. Алан владеет Мак, если Бутси не принадлежит Кейт и если Спот – без родословной. Флэш – пятнистая собака. У каких животных нет хозяев?
Рекомендуется использовать предикаты:
• cat(X) {X – кошка}
• dog(X) {X – собака}
• color (X, Y) {X имеет цвет Y}
• master(X, Y) {X – хозяин Y}
• rod(X) {X имеет родословную}
• animal(X) {X – животное}


2. (о фирме) Дан фрагмент программы на Прологе, в которой хранятся сведения о работниках фирмы.

Predicates
???
Clauses
worker (barbara).
worker (john).
worker (charles).
worker (diana).

money (barbara, 500).
money (john, 200).
money (charles, 210).
money (diana, 150).

boss (barbara, john).
boss (john, charles).
???
Goal
???

Предикаты в программе переводятся так:
• worker(X) {X – работник}
• money (X, Y) {X получает зарплату в размере Y}
• boss(X, Y) {X – непосредственный руководитель Y}

Постройте с их помощью правила для следующих новых предикатов:
• below(X, Y) {X – подчинённый Y}
• middle(X) {X – одновременно руководитель и подчинённый}
• near(X, Y) {X и Y находятся рядом по служебной лестнице,
то есть либо первый начальник второго, либо наоборот}
• bigMoney(X) {X получает хорошую зарплату, больше 200}
• more(X, Y) {зарплата у X больше, чем у Y}
• happyWorker(X) {X получает больше своего начальника}

В разделе запросов спросите у Пролога:
• Руководителем Джона является Чарльз?
• Кто является подчинённым Барбары?
• Кто является руководителем?
• Кто никем не руководит?
• У кого из работников зарплата больше, чем 300?
• Какой работник самый высокооплачиваемый?
• Кто является главным руководителем?

Что означают следующие запросы? Какие ответы на них выдаст Пролог?
• money(barbara, 500).
• bigMoney(_).
• near(john,Y), happyWorker(Y).
• worker(X), not(boss(X,_)), not(below(X,_)).
• worker(X), not(more(X,_)), money(X,M).
• boss(X,charles), money(X,M).
• worker(X), not(middle(X)).
• below(X,_), not(below(_,X)).
• worker(X), not(more(X,_)).

3. (о чём-то) Сформулируйте задачу, которую решает программа long_novel. pro. Объясните, как Пролог находит решение (к каким предикатам происходит обращение, какие значения принимают переменные).

4. (об автомобилях) Составьте программу, в которой хранятся данные об автомобилях некоторого магазина (марка, год выпуска, цвет, цена). Например,
car (ferrari, 2001, red, 2000).
car (bmv, 2000, black, 3500).
car (mustang, 1995, brown, 2500).
car (reno, 2002, darkBlue, 4000).
car (volvo, 1981, white, 1500).
car (zapor, 1981, yellow, 150).
car (volga, 1981, grey, 500).
car (audi, 2006, red, 5000).
car (mersedes, 2006, blue, 7000).
car (ford, 2006, green, 9000).
Найдите:
• все автомобили красного цвета, выпущенные не ранее 2000 года и ценой не более 2000;
• все автомобили, новее, но дешевле мустанга;
• самую старую машину;
• самую дорогую;
• самую новую;
• самую дешёвую.

5. (о вреде пива!) Пусть заданы четыре предиката:

drinker(X) {X - любитель выпить}
go(X, B) {X посещает бар B}
give(B, P) {в баре B подают пиво сорта P}
like(X, P) {X нравится пиво P}

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

• goodBar(X, B) {если X- любитель выпить, ходит в бар B, и там есть хотя бы один сорт пива,
которое ему нравится}
• badBar(X, B) {если X- любитель выпить, ходит в бар B, но там нет ни одного сорта пива,
которое ему нравится}
• happyDrinker(X) {если пиво, которое предпочитает любитель выпить X, подают, по крайней
мере, в одном из баров, которые он посещает}
• deadDrinker(X) {если в любом из баров, которые посещает любитель выпить X, подают
подходящее пиво}

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


6. (о числах) Имеется шесть четырёхзначных чисел. Найдите всевозможные цепочки, содержащие все эти числа, такие, что последняя цифра предыдущего числа совпадает с первой цифрой следующего.
Код решения:
Predicates
number (integer)
solve (integer, integer, integer, integer, integer, integer)

Clauses
% перечисляем данные числа
number (7013).
number (9532).
number (2084).
number (4237).
number (3569).
number (2374).
% цепочка X1,X2,X3,X4,X5,X6 является решением, если X1,X2,X3,X4,X5,X6 – различные числа из нашего набора, и каждый раз последняя цифра предыдущего числа совпадает с первой цифрой следующего
solve(X1,X2,X3,X4,X5,X6):-
number(X1), number(X2), X2<>X1, X1 mod 10= X2 div 1000,
number(X3), X3<>X1,X3<>X2, X2 mod 10= X3 div 1000,
number(X4), X4<>X1,X4<>X2,X4<>X3, X3 mod 10= X4 div 1000,
number(X5), X5<>X1,X5<>X2,X5<>X3,X5<>X4, X4 mod 10= X5 div 1000,
number(X6), X6<>X1,X6<>X2,X6<>X3,X6<>X4,X6<>X5, X5 mod 10= X6 div 1000.
Goal
solve(X1,X2,X3,X4,X5,X6).

Здесь (как и в любой из уже решённых задач) мы описали только то, что дано и что найти, но не как находить. Это берёт на себя Пролог. На Паскале пришлось бы, кроме данных и результата, прописывать и алгоритм решения (который, конечно, нужно было бы сначала придумать и затратить на это время). В этом и состоит отличие декларативных языков программирования (типа Пролога) от императивных (типа Паскаля).
• Объясните, как Пролог находит решение в этой задаче.
• В разделе Goal cпросите, есть ли цепочка, которая начинается, например, с числа 7013.

7. (о враждующих рыцарях) Однажды мажордом короля Артура обнаружил, что к обеду за круглым столом приглашено 6 рыцарей (a, b, c, d, e, f). При этом пары рыцарей a и b, c и d, e и f, b и e враждовали друг с другом. Определите все способы рассадки рыцарей такие, чтобы никакие два врага не сидели рядом?

Отличный Справочник по фирмам - полная информация

«Локальные сети Ethernet 10 Мбит/с»

Лабораторная работа
«Локальные сети Ethernet 10 Мбит/с»
Цель работы
Изучить технологии создания локальных сетей Ethernet 10 Мбит/с.
Порядок работы
1. Создать локальную сеть Ethernet 10Base-5.
2. Создать локальную сеть Ethernet 10Base-2.
3. Создать локальную сеть Ethernet 10Base-T.
4. Создать локальную сеть Ethernet 10Base-FL.
Указания к выполнению работы
1. Создать локальную сеть Ethernet 10Base-5.
1.1. Прочитать Олифер В.Г., Олифер Н.А. «Компьютерные сети», глава 12, раздел «Спецификации физической среды Ethernet» (стр. 408–418).
1.2. Ваша цель – связать локальной сетью Ethernet 10Base-5 два компьютерных класса по 10 компьютеров в каждом.
1.3. Создайте в программе NetCracker два компьютерных класса и назначьте трафик между ними (см. Лабораторную работу «Знакомство с NetCracker»).
• Создайте новый проект. Установите альбомную ориентацию страницы (Sites – Site Setup – Layout). Сохраните проект.
• Поместите на рабочее поле проекта один компьютер, например, IBM PC 700 Series (LAN workstations – PCs – IBM). Назовите его, например, 400-01 (двойной щелчок – Device Setup – Name).
• Установите в компьютер сетевую карту EtherLink II/16 фирмы 3Com (LAN adapters – Ethernet – 3COM Corp).
• Скопируйте созданный компьютер в буфер обмена. Вставьте его из буфера 9 раз. Присвойте новым компьютерам соответствующие имена (400-02, 400-03, …). Это будет первый компьютерный класс.
• Создайте второй компьютерный класс из 10 компьютеров таким же образом. Назовите компьютеры 401-01, 401-02, …
• Назначьте трафик типа LAN peer-to-peer traffic между парами компьютеров 400-01 и 401-01, 400-02 и 401-02 и т.д. (кнопка Set Traffic на панели инструментов). Точно так же назначьте обратный трафик между компьютерами 401-01 и 400-01, 401-02 и 400-02 и т.д.
• Проверьте установленный трафик (Меню Global – Data Flow).
1.4. Постройте локальную сеть Ethernet 10Base-5.
• Поместите на рабочую область два сегмента «толстого» Ethernet (Generic LANs – Thick Ethernet Segment).
• Соедините все компьютеры первого класса с одним сегментом, а компьютеры второго класса – с другим (Link devices). Посмотрите тип используемого протокола (Protocol), среду передачи (Media), пропускную способность (Bandwidth) и длину кабеля (Cable Length). Обратите внимание на цвет проводников (коаксиальный кабель – черный цвет).
• Свяжите оба сегмента между собой с использованием повторителя или трансивера, например трансивера фирмы D-Link Systems – DE-852 (Media adapters and connectors and transceivers).
• Для соединения между сегментами назначьте показ статистики средней загруженности и использования сети (правая кнопка – Statistics – Average workload, Average utilization в процентах и индикатор).
• У вас должна получиться примерно следующая схема:

• Запустите анимацию (Start).
1.5. Определите пределы пропускной способности сети.
• Измените трафик (пункт меню Global – Profiles). Выделите профиль LAN peer-to-peer traffic и нажмите на кнопку Edit. В открывшемся окне установите Transaction Size (Размер транзакции) от 600 до 1100 байт. Подтвердите из-менение профиля трафика.
• Запустите анимацию. Отметьте изменение параметров загруженности и использования сети.
• Составьте таблицу:
Трафик, байт Средняя загруженность, Мбит/с Среднее использование, % Работа се-ти
500-1000 1,2 11,6 Да
1000-1500
1500-2000
2000-2500
2500-3000
3000-3500
3500-4000
4000-4500
4500-5000
В последнем столбце ставьте «Да», если пакеты пересылаются (сеть работает). Иначе ставьте «Нет».
• Выясните профиль трафика, производительность и коэффициент использование сети, при которых она перестает работать.
1.6. Определите максимальный диаметр сегмента сети.
• Два раза щелкните на проводнике, соединяющем сегмент Ethernet с трансивером. Установите в поле Cable Length длину кабеля в метрах.
• Выясните максимальную длину кабеля.
2. Создать локальную сеть Ethernet 10Base-2.
2.1. Ваша цель – связать локальной сетью Ethernet 10Base-2 два компьютерных класса по 10 компьютеров в каждом.
2.2. Сохраните файл с локальной сетью Ethernet 10Base-5 под другим именем (чтобы сохранить установленный трафик).
2.3. Постройте локальную сеть Ethernet 10Base-2.
• Используйте сегменты «тонкого» Ethernet (Generic LANs – Think Ethernet Segment) и трансивер, например ISOLAN Coaxial Transceiver (3C1114-3) фирмы 3Com (Media adapters and connectors and transceivers).
• Назначьте показ статистики.
• Запустите анимацию.
2.4. Определите пределы пропускной способности сети.
• Составьте и заполните таблицу, аналогичную таблице в п. 1.5.
• Выясните профиль трафика, производительность и коэффициент использование сети, при которых она перестает работать.
2.5. Определите максимальный диаметр сегмента сети.
3. Создать локальную сеть Ethernet 10Base-Т.
3.1. Ваша цель – связать локальной сетью Ethernet 10Base-Т два компьютерных класса по 10 компьютеров в каждом.
3.2. Сохраните файл с локальной сетью Ethernet 10Base-2 под другим именем.
3.3. Постройте локальную сеть Ethernet 10Base-Т.
• Используйте концентраторы (hubs) соответствующего стандарта.
• Обратите внимание на изменившийся цвет проводников (используется витая пара вместо коаксиального кабеля).
• Назначьте показ статистики.
• Запустите анимацию.
3.4. Определите пределы пропускной способности сети.
• Составьте и заполните таблицу, аналогичную таблице в п. 2.5.
• Выясните профиль трафика, производительность и коэффициент использование сети, при которых она перестает работать.
3.5. Определите максимальный диаметр сегмента сети.
4. Создать комбинированную локальную сеть Ethernet 10Base-Т – Ethernet 10Base-FL.
4.1. Ваша цель – объединить компьютеры в двух класса локальной сетью Ethernet 10Base-Т и связать классы оптоволоконным Ethernet.
4.2. Сохраните файл с локальной сетью Ethernet 10Base-T под другим именем.
4.3. Постройте комбинированную локальную сеть.
• Замените существующие концентраторы (hubs) на концентраторы, у которых имеются два типа портов: не менее десяти – 10Base-T и не менее одного – 10Base-FL.
• Соедините порты 10Base-FL концентраторов между собой. Обратите внимание на цвет проводников между концентраторами (используется оптоволоконный кабель).
• Назначьте показ статистики.
• Запустите анимацию.
4.4. Определите пределы пропускной способности сети.
• Составьте и заполните таблицу, аналогичную таблице в п. 2.5.
• Выясните профиль трафика, производительность и коэффициент использование сети, при которых она перестает работать.
4.5. Определите максимальное расстояние между классами.
Требования к отчету
1. Подготовиться к проверочной работе по технологиям Ethernet 10 Мбит/с.
2. Таблицы значений пропускной способности и коэффициента использования неструктурированной и структурированной сетей для разного объема трафика.
3. Сравнительная таблица технологий Ethernet 10 Мбит/с:
Параметр 10Base-5 10Base-2 10Base-T 10Base-FL
Кабель
Топология
Максимальная длина сегмента, м
Максимальный диаметр сети (при исполь-зовании повторителей), м
Максимальное число станций в сегменте
Пропускная способность, Мбит/с
Критическая пропускная способность (при которой сеть «падает»), Мбит/с
Достоинства
Недостатки
Контрольные вопросы
1. Что обозначает правило «5-4-3»?
2. Что обозначает правило «4-х хабов»?
3. Почему коаксиальный кабель обеспечивает больший размер сегмента, чем витая пара, а оптоволоконный кабель больший, чем коаксиальный?


Turkish lira reached its highest level in three weeks, as stocks and prices of bonds increased on Thursday. As the signs of the possible recovery of the US economy were reveled, it became clear to market traders that the Turkish prices of stocks are at their bottom. Turkish can be rich!

Professionals say, that increasing consumer spending in the United States are a clear indicator of economic pick up in the biggest economy in the world, meaning that further recovery is coming up in the next months.

Услуги

Лабораторная работа №1
Знакомство с Microsoft Visual Studio 2005.

Цели работы:
1. Научиться работать со средой программирования Microsoft Visual Studio 2005: создание и открытие проектов, отладка проектов.
2. Познакомиться с набором файлов, входящих в состав проектов Visual Studio.
3. Знакомство с языком C#.

Задание 1. Запустить Visual Studio и создать новый проект.

Указание к выполнению
1. Через Пуск – Программы – Microsoft Visual Studio 2005 – Microsoft Visual Studio 2005 запустите Visual Studio.
2. Выберите меню File – New – Web Site. В открывшемся окне New Web Site выберите шаблон (template) ASP.NET Web Site, расположение (Location) File System и язык Visual C#. Укажите путь для сохранения файлов проекта d:\users\<группа>\MyWebSite. Нажмите OK.
При этом будет создан web-сайт MyWebSite с одним проектом MyWebSite (внутри солюшена может быть создано несколько проектов, как независимых, так и взаимосвязанных между собой). Также автоматически в проект добавляется web-страница default.aspx, которая отображается в source режиме.
3. Для компиляции и запуска проекта нажмите F5 или выберите пункт меню Debug – Start Debugging. При запуске web-приложения появится окно, предлагающее разрешить запуск приложения с возможностью отладки.
4.

Задание 2. Изучить файлы, вошедшие в проект.

Указание к выполнению
1. Откройте в проводнике каталог солюшена d:\Users\<группа>\MyWebSite.
2. Там видим файлы:
a. Web.Config – файл содержит параметры web-приложения.
b. Default.aspx – web-страница, описывающая интерфейс пользователя.
c. Default.aspx.cs – файл, содержащий обработчики событий элементов управления, находящихся на web-странице; данный файл обрабатывается сервером.
Каждый отдельный класс описывается файлом <имя класса>.cs, а каждая web-страница описывается двумя файлами: <имя>.aspx, <имя>.aspx.cs.




Задание 3. Познакомиться со средой Visual Studio.

Указание к выполнению
1. Ознакомьтесь с элементами среды программирования Visual Studio .
2. В окне Solution Explorer нажмите правую клавишу мыши на странице Default.aspx. В появившемся контекстом меню выберите View Code (Просмотр кода) для перехода к окну просмотра кода.
В открывшемся окне увидим следующий код:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}
}

Строки, начинающиеся со слова using, подключают пространства имен, содержащие требуемые объекты: классы, компоненты и т.д.
Далее следует public partial class _Default : System.Web.UI.Page { … } – описание класса web-страницы. Данный класс пока содержит лишь обработчик события Page_Load.

3. Перейдите обратно к просмотру страницы в design режиме. Добавьте на страницу с панели Tool Box следующие компоненты, находящиеся на закладке Standart (Стандартные): Button, CheckBox, Label, TextBox.
4. Измените свойство Text у компонентов Button и CheckBox как показано на рисунке. Поставьте свойствам Checked и AutoPostBack компонента CheckBox значение True.

5. Добавьте обработчик события Click компоненту Button. На панели Properties нажмите кнопку Events (События) (значок молнии). Найдите в списке событие Click, двойное нажатие в поле напротив события автоматически создаст его обработчик. В обработчик события добавьте текст:

label1.Text = textBox1.Text;

6. Аналогично добавьте обработчик события CheckedChanged компоненту CheckBox с текстом:
label1.Visible = checkBox1.Checked;


Должно получиться следующее:

7. Сохраните все изменения через меню File – Save All.
8. Запустите проект и посмотрите, что получилось.
9. Добавьте на форму еще одну кнопку с обработчиком события Click:
private void button2_Click(object sender, EventArgs e)
{
string caption = "Текущее время: " + GetCurrntTime();
this.Title = caption;
}
И опишите функцию GetCurrentTime:
private string GetCurrentTime()
{
DateTime date = DateTime.Now;
return date.ToLongTimeString();
}
10. Для отладки программы используются кнопки F10 и F11. Установите точку останова программы на серой вертикальной полосе слева от текста кода, как показано на рисунке ниже.

11. Запустите программу, нажмите добавленную кнопку. Посмотрите, что получилось.
12. Отладьте программу с помощью кнопки F10. Затем повторите операцию и отладьте программу с помощью кнопки F11. В чем разница?
13. Просматривать значение переменных можно в окне Locals (Debug – Windows - Locals) или в окне Watch1 (Debug – Windows – Watch – Watch1), доступных лишь в режиме отладки программы.

14. Добавьте в проект MyWebSite новую web-страницу. Для этого в окне Solution Explorer выделите проект MyWebSite и в контекстном меню выберите пункт Add New Item. В появившемся окне выберите шаблон Web Form и нажмите кнопку Add. В проект будет добавлена страница Default2.aspx

15. Положите на новую страницу два компонента TextBox , а также компонент Button и Label.

16. Добавьте в проект MyWebSite новый класс. В окне Add New Item выберите Class.
Замените текст в окне созданного класса следующим:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

///
/// Summary description for Class1
///

public class Class1
{
private int a = 0; // внутренняя переменная класса
private int b = 0; // внутренняя переменная класса
public int A // описание открытого свойства класса
{
set { a = value; } // свойство доступно для записи нового значения
}
public int B // описание открытого свойства класса
{
set { b = value; } // свойство доступно для записи нового значения
}
public void SetA(int newValue) // описание открытого метода - аналог свойства A
{
a = newValue;
}
public void SetB(int newValue) // описание открытого метода - аналог свойства B
{
b = newValue;
}
public void SetValues(int value1, int value2) // описание открытого метода
{
a = value1;
b = value2;
}
public int Result // описание открытого свойства класса
{
get { return a * b; } // свойство доступно для чтения
}
public int GetResult() // описание открытого метода - аналог свойства Result
{
return a * b;
}

public Class1()
{
}
}

17. Для кнопки Button создайте обработчик события Click со следующим кодом:
protected void Button1_Click(object sender, EventArgs e)
{
Class1 c = new Class1();
try
{
c.A = int.Parse(textBox1.Text);
c.B = int.Parse(textBox2.Text);
Label1.Text = c.Result.ToString();
}
catch
{
Label1.Text = "Введите корректные значения";
}
}

18. Чтобы иметь возможность перейти на страницу Default2.aspx со страницы Default.aspx, добавьте на вторую компонент HyperLink и установите значения следующих свойств: NavigateUrl = Default2.aspx, Text = Умножение.
19. Запустите проект, протестируйте работу страницы Default2.aspx.
20. Воспользуйтесь другими способами передачи параметров в класс Class1.


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

Введение в логическое программирование

Лабораторная работа №1
Введение в логическое программирование

1. (тренировочная задача)
• Запустите Visual Prolog (vip.exe).
• Создайте новый файл (File – New).
• Запишите логическую программу, позволяющую определить, смертен ли Сократ.
• Запустите программу на выполнение (Ctrl+G или G).

2. (о родственных отношениях)
2.1. Изобразите в виде схемы своё родословное дерево (должно включать не менее 8 родственников). Например,

2.2. Опишите это дерево с помощью фактов:
man(X) {Х есть мужчина}
woman(X) {X есть женщина}
parent(X,Y) {X есть родитель Y}
То есть перечислите всех мужчин в вашем дереве, всех женщин и все пары родитель-ребёнок, указывая конкретные имена. Например, man (pol). и т.д. woman(naomi). и т.д. parent(pol, ringo). и т.д.

2.3. Постройте правила для следующих более сложные отношений:
mother(X,Y) {Х есть мать Y}
father(X,Y) {Х есть отец Y}
child(X,Y,Z) {Х есть ребёнок Y и Z }
son(X,Y,Z) {Х есть сын Y и Z }
daughter(X,Y,Z) {Х есть дочь Y и Z }
grandmother(X,Y) {Х есть бабушка Y}
grandfather(X,Y) {Х есть дедушка Y}
sisterbrother(X,Y) {Х сестра или брат Y}
aunt(X,Y) {Х есть тётя Y}
motherInLaw(X, Y) {Х есть тёща Y}
cousins(X,Y) {Х двоюродная сестра или брат Y}
happy(X) {Х счастлив, если имеет по крайней мере двух детей}
ancestor(X, Y) {Х предок Y}

При этом можно использовать уже введенные факты man(X), woman(X), parent(X,Y) или построенные правила. Например, mother(X,Y):–woman(X), parent(X,Y) {X мать Y, если X женщина и X родитель Y}

2.4. “Спросите” у Пролога (подставьте свои имена):
• Отцом Ringo является Pol?
• Чей ребёнок George?
• Кто является бабушкой?
• Есть ли у Naomi племянница?
• У кого из женщин нет детей?
• Кто дедушка George, но не отец для Сlaudia?
• Счастлив ли отец Naomi?

2.5. Что означают запросы:
• daughter(claudia, john, jennifer).
• grandmother(X, George).
• grandmother(_, George).
• parent(X,_).
• grandfather(X,_), not(happy(X)).
• father(X,George),father (Y,X).

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

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

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