11д 2012-2013

MacOS (подготовил Конев Александр - ученик 10 д класса) - документ и презентация
WindowsOS (подготовил Ягунов Тимофей - ученик 10 д класса)
OS Linux (подготовил Ласковый Никита - ученик 10 д класса)
DOS (подготовила Фёдорова Алина - ученица 10 д класса)

Численные методы для решения математических задач

1. Метод Монте-Карло для вычисления площади фигуры
2. Вычисление функций с помощью ряда Тейлора
3. Решение систем алгебраических уравнений методом Гаусса и итерационными методами
4. Нахождение корней уравнения нелинейной функции
5. Вычисление определенных интегралов

Технический проект

Этапы выполнения технического проекта
1) Разработка технического задания на проект
2) разработка электронной версии проекта
3) подготовка пояснительной записки и презентации проекта
4) защита проекта
5) рецензия на проект

Требования к техническому проекту
Проект в общем случае должен состоять из трёх частей:
- электронная версия;
- пояснительная записка к проекту;
- электронная презентация проекта к докладу.

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

Структура пояснительной записки
Пояснительная записка состоит из следующих частей:
1. Титульный лист;
2. Техническое задание;
3. Аннотация;
4. Оглавление;
5. Введение;
6. Содержательная часть пояснительной записки;
7. Заключение;
8. Список литературы и других информационных источников;
9. Приложения.

Титульный лист является первой страницей отчёта и служит источником информации, необходимой для обработки и поиска документа. На титульном листе приводят следующие сведения:
1) наименование организации;
2) наименование работы;
3) тема;
4) данные об исполнителе;
5) данные о руководителе;
6) место и дата составления отчёта.

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

Аннотация - содержит краткую характеристику проекта, тему, проблему. Можно указать аудиторию, которой данная работа будет интересна.

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

Содержательная часть пояснительной записки должна иметь
следующие подразделы:
1) разработка модели (название модели);
2) описание компьютерного эксперимента;
3) анализ результатов исследования;
4) проверка результатов на соответствие целям.

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

Список литературы и других информационных источников
содержит перечень:
1) используемых книг с указанием имени автора, названия издательства, места и времени издания;
2) статей в периодических изданиях с названием издания, номером и годом выпуска;
3) Интернет-ресурсов с адресами их размещения.

Приложения включают материалы иллюстративного и вспомогательного характера. Приложение может содержать:
1) дополнительные расчёты;
2) распечатки текстов программ;
3) дополнительные таблицы и рисунки;
4) распечатки файлов электронных таблиц, баз данных;
5) распечатки графических объектов.
На все приложения в пояснительной записке должны быть даны ссылки. Приложения обозначают заглавными буквами русского алфавита, начиная с А, за исключением букв Ё, 3, И, О, Ч, Ь, Ы, Ъ. Например: Приложение Б. Каждое приложение следует начинать с нового листа (страницы) с указанием наверху страницы слова «Приложение» и его обозначения.

Общие требования по оформлению пояснительной записки
Пояснительная записка должна быть выполнена на странице формата А4 (210 x 297 мм) с одной стороны листа. Набор текста осуществляется шрифтами гарнитур Times New Roman (основной текст) и Arial (заголовки), кегль 14, начертание обычное, цвет чёрный, междустрочный интервал - полуторный, выравнивание по ширине, интервалы перед и после абзаца – 0 пт, отступы слева и справа от границ страницы – 0 см. Текст следует набирать, соблюдая размеры полей: левое - 30 мм, правое - 10 мм, верхнее - 15 мм, нижнее - 20 мм. Абзацы в тексте начинают отступом, равным 1 см. Страницы должны быть пронумерованы, номер страницы указывается в правом нижнем углу. Текст пояснительной записки подразделяется на разделы, подразделы, пункты. Каждый раздел рекомендуется начинать с новой страницы. Разделы должны иметь порядковые номера в пределах текстового документа, обозначенные арабскими цифрами и записанные с абзацного отступа. Подразделы и пункты должны иметь нумерацию в пределах каждого раздела или подраздела. Если раздел или подраздел состоит из одного пункта, этот пункт также нумеруется.

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

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

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

Примеры проектов:

- база данных
- сайт
- игра
- приложение в Lazarus
- реклама
- 3D-графика
- анимационный ролик
- видео-проект

Построение графиков функции с помощью Chart

Построить график функции y=f(x) на заданном отрезке [a, b]. Предусмотреть выбор границ отрезка, количество точек и вид функции.

Построение параметрических функций

x=f(t), y=g(t), где t меняется от 0 до 2Pi.
Например, x=a cos t; y=b sin t - построит эллипс с радиусами a и b.
Более подробно можно посмотреть здесь.
Домашнее задание: Написать приложение по пострению графика параметрической функци с выводом шкалы и подписей на ней.

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

Например, для функции y = a sin bx задать a и b и построить график на заданном отрезке.
Домашнее задание: Написать приложение по пострению произвольного графика функции с выводом шкалы и подписей на ней.

Движение объектов по заданной траектории

Если известна зависимость изменения координат y=f(x), то ее можно применить для изменения местоположения объекта. Например, фигура Shape1 движется по траектории синусоиды. В этом случае нужно определить диапазон изменения по x и по y, сделать масштабирование и сдвиг в положительную часть, преобразовать координаты в целочисленные значения(функция round).
Для синусоиды значение функции изменяется от -1 до 1, т.е. диапазон равен 2. Эту величину нужно распределить (раздвинуть) на всю высоту окна height, т.е. умножить у на height/2 (сделать масштабирование по у). Предварительно значение у нужно сдвинуть в положительную часть, т.е. 1-у (так как ось top перевернута, то у вычитаем, т.е. переворачиваем ось). Проверим:
для у=1: 1-у=0
для у=-1: 1-у=2.
Точно также для х: если взяли отрезок от -5 до 6, то диапазон равен 11. Эту величину нужно распределить (раздвинуть) на всю ширину окна width, т.е. умножить x на width/11 (сделать масштабирование по х). Предварительно значение х нужно сдвинуть в положительную часть, т.е. 5+х. Проверим:
для х=-5: 5+х=0
для х=6: 5+х=11.
Получим формулы для перемещения объекта:
x:=x+0.1;
y:=sin(x);
Shape1.top:=round((1-y)*form1.height/2);
Shape1.left:=round((5+x)*form1.width/11);
Запишите это в процедуру обработки события OnTimer для Timer1, добавьте условие на выход за границы окна и включите таймер. Ваша фигура теперь будет двигаться по синусоиде.
Точно также можно сделать для параболы или других функций.
Для движения по окружности можно воспользоваться ее параметрическим представлением:
r:=3; //радиус круга
a:=a+0.1;//угол наклона
x:=r*cos(a);
y:=r*sin(a);
Shape1.top:=round((r-y)*form1.height/(2*r));
Shape1.left:=round((r+x)*form1.width/(2*r));

Домашнее задание: Написать приложение "Модель солнечной системы", где для изображения планет используйте Image, а для перемещения - траекторию эллипса, для которого радиусы для х и у имеют разное значение. Можно реализовать и другие аналогичные модели: "Спуск с горки" (одна ветвь гиперболы), "Полет шмеля" (параметрическая функция x=sin(2*a), y=cos(3*a)), "Полет ракеты на Луну"(обратная функция к параболе).


Движение объектов с помощью Timer и события OnKeyDown

Timer
Для организации движения графического объекта или другого объекта можно использовать Timer, который с помощью события OnTimer выполняет через заданный интервал Interval (в мс) соответствующие команды, например, изменение местоположения картинки. Свойство Enabled включает (true) или выключает (false) выполнение этой процедуры.
Пример:
Размещаем Timer1 (на вкладке System)), картинку Image1 (на вкладке Additional) и кнопку Button1 "Play" для запуска движения. 
В событии OnClick для кнопки включаем/выключаем таймер:
if timer1.enabled then begin
Timer1.Enabled:=false;
Button1.Caption:='Play';
end else
Timer1.Enabled:=true;
Button1.Caption:='Stop';
end;
В событии OnTimer организуем перемещение картинки:
if Image1.Left+10>form1.Width then 
Image1.Left:=0 
else 
Image1.Left:=Image1.Left+10;
Таймер можно создать для нескольких объектов одновременно, меняя интервал и включая и выключая движение. Например, для четырех картинок использовать различное перемещение и интервал.

OnKeyDown
Для организации движения с помощью клавиатуры используем событие OnKeyDown для формы (если нет другой компоненты с фокусом ввода, например, кнопка или текстовое окно):
Код клавиши можно узнать по аргументу Key типа Word, например, так:
Showmessage(Inttostr(key));
Далее по коду определяем перемещение картинки:
If key=37 then Image1.left:=Image1.left-10; //  движение влево
If key=38 then Image1.top:=Image1.top-10; //движение вверх
If key=39 then Image1.left:=Image1.left+10; //  движение вправо
If key=40 then Image1.top:=Image1.top+10; //движение вниз
Совмещая эти два способа перемещения можно добиться различных игровых ситуаций.

Домашнее задание: Написать приложение для игры с использованием таймера и обработки клавиатуры OnKeyDown: "Морской бой" (сбиваем ракетами появляющиеся случайным образом корабли), "Гоночки" (на встречу стоящей внизу машине двигаются  в случайном порядке автомобили, а с помощью клавиатуры меняем ее местоположение), "Арканоид" (шарик отталкивается от ракетки и "сбивает" кирпичики), "Змейка" (змейка двигается и поедает появляющиеся случайным образом "съедобные" картинки, при этом можно показать движение враждебных змейке объектов, которые перемещаются случайным образом по всему полю).

Создание сайта

С помощью сервиса sites.google.com (учебник по сайтостроению в google) создать сайт с названием "Виртуальная рабочая тетрадь по информатике ученика 11 д класса Фамилия Имя". Подготовить материал по теме "Форма экзамена по информатике". Включить страницы:
  1. Введение (обоснование формы экзамена)
  2. Темы и ЗУН (знания, умения и навыки, которые проверяете на экзамене)
  3. Примеры решений и ответы
  4. Вариант(ы) экзамена
  5. Рецензия (готовится одноклассником)
На сайте должны соблюдаться авторские права, т.е. если используете материал с какого-то сайта - укажите ссылку на него.

Для изменения макета сайта, навигации и т.д. выберите Еще - Управление сайтом или Изменить макет сайта.

На сайте можно вставлять формы, документы, рисунки и другие файлы как в виде ссылок, так и в виде встраиваемого кода HTML:
  • Для офисных документов: Файл-Опубликовать в Интернете, затем скопировать код в формате HTML.
  • Для формы: Форма-Встроить форму в веб-страницу, затем скопировать код в формате HTML.
  • Для картинки: Вставить - Изображение или Фотография Picasa или Слайд шоу Picasa Web.
  • Для видео: Вставить - Видео - Видео Google или YouTube или Видео из документов Google
Пример встраиваемого контента смотри на сайте: https://sites.google.com/site/mckorchuganova/home/sites-google-kontent
Таблица результатов

Динамическое создание компонент. Массивы компонент.

Данный способ предназначен для создания компонент во время выполнения программы, т.е. компоненты на форме размещаются не при проектировании формы, а при ее создании (например, в обработчике событий OnCreate). Иными словами - компоненты создаются в динамической области памяти "куче" и для этого нужно четко прописать в программе как с этими компонентами работать.
Часто этот способ применяется в игровых проектах, когда заранее не известно, сколько игроков, или при выборе разных уровней. Кроме этого, можно использовать массив компонент, чтобы более удобно обращаться к свойствам компонент по его номеру.
Каждый компонент является экземпляром класса или переменной, которая размещается в динамической памяти. Класс как тип описан в определенном модуле (как форма Form1 класса TForm1 описана в модуле Unit1). Этот модуль нужно подключить в строке Uses. Если вы не знаете какой именно модуль нужен для данного класс компонент, то можно сделать следующее:
  1. выбрать компоненту. которую вы хотите создать динамически; 
  2. разместите ее прообраз на форме, чтобы в приложении вставились нужные модули; 
  3. откройте необходимые обработчики событий;
  4. затем этот компонент можно удалить.
Описание динамических компонент:
Var 
   B:TButton; //кнопка
   E:array of TEdit; {массив текстовых окон, размер массива задается с помощью SetLength(E,n), где n - количество элементов, индексация элементов массива начинается от 0 до n-1.}
   Img:array[1..3,1..3] of TImage;{таблица картинок}

Создание динамических компонент и массива компонент:

Кнопка (игра "Поймай кнопку")
B:=TButton.Create(Form1); //создается экземпляр класса TButton на форме Form1 с помощью конструктора Create
B.Parent:=Form1;//для визуальных компонент связываем с родительской компонентой Form1 - там, где будет размещен компонент.
B.Top:=random(200);//устанавливаем свойства
B.Left:=random(200);
B.Width:=100;
B.Height:=20;
B.Caption:='Поймай меня';
B.OnMouseMove:=@Button1MouseMove;//Это имена процедур, которые заранее мы создали
B.OnMouseDown:=@Button1MouseDown;//Знак @ - взятие адреса процедуры
Далее в процедуре Button1MouseMove пишем изменение местоположения кнопки B, а в процедуре Button1MouseDown - выводим сообщение 'Молодец'.

Массив текстовых окон (игра "Угадай слово")
s:='tema';//задаем слово для угадывания (можно задать из массива слов, который хранится в текстовом файле вместе с описанием слова или ввести слово в другом текстовом окне, закрыв буквы от игрока как при вводе пароля)
l:=length(s);// определяем количество букв в слове. Для русских букв количество делим на 2 и при сравнение вместо s[i] указываем два символа s[i*2+1]+s[i*2+2].
k:=0;// количество правильно угаданных букв
SetLength(E,l);
for i := 0 to l-1 do begin
E[i]:=TEdit.Create(Form1); 
E[i].Parent:=Form1;
E[i].Top:=200;
E[i].Left:=22*i; //размещаем компоненты в строку
E[i].Width:=20;
E[i].Height:=20;
E[i].text:='';
E[i].tag:=i;//нумерация компонент
E[i].OnChange:=@Edit1Change;//создаем обработчик события на внесение данных в текстовом окне
Далее в процедуре Edit1Change пишем обработку правильности внесения букв:
 i:=(Sender as TEdit).tag;//определяем какая по индексу компонента из массива вызвала эту процедуру. Здесь Sender - указатель на объект, вызвавший это событие, т.е. в какое текстовое окно мы внесли изменения.
 if s[i]=E[i].Text then begin k:=k+1; E[i].Enabled:=False; end;//Если буква угадана верно, то отключаем  возможность ввода текста в этом окне.
if k=l then showmessage ('Молодец! Вы угадали!'); //если количество угаданных букв равно количеству букв в слове, то игра окончена.

Таблица картинок (игра "Мозаика")
for i := 1 to 3 do
for j := 1 to 3 do begin
Img[i,j]:=TImage.Create(Form1); 
Img[i,j].Parent:=Form1;
Img[i,j].Top:=random(300);
Img[i,j].Left:=random(300);
Img[i,j].Width:=50;//размеры картинки
Img[i,j].Height:=50;
Img[i,j].Picture.Loadfromfile(inttostr(i)+inttostr(j)+'.jpg');//загружаем картинки, заранее подготовленные с помощью графического редактора PaintBrush, которые хранятся в рабочем каталоге.
Img[i].tag:=i*10+j;//нумерация компонент состоит из двузначного десятичного числа, первая цифра которого указывает на номер строки, вторая - на столбец.
Img[i].OnMouseMove:=@Image1MouseMove;
Img[i].OnMouseDown:=@Image1MouseDown;
Img[i].OnMouseUp:=@Image1MouseUp;
end;
В процедуре Image1MouseDown пишем обработку нажатия на кнопку мыши:
drag:=true;//устанавливаем флажок для начала перемещения
x0:=x;//запоминаем текущее положение мыши
y0:=y;
В процедуре Image1MouseMove пишем обработку перемещения картинки, предварительно определив номер строки и столбца из свойства tag:
if drag then begin
 i:=(Sender as TEdit).tag div10;
 j:=(Sender as TEdit).tag mod 10;
 Img[i,j].top:= Img[i,j].top+Y-Y0;
 Img[i,j].left:=Img[i,j].left+X-X0;
end;
В процедуре Image1MouseUp снимаем флажок
drag:=false; 
и проверяем - правильно ли мы установили картинку. Перемещать картинки можно на подготовленный образ. Точность попадания картинки в нужное место определяем с  погрешностью плюс/минус 10 пикселов относительно точных координат, которые предварительно необходимо рассчитать и занести в массив записей, например, такой:
 Var A:array [1..3,1..3] of record 
     Top, Left: integer; 
    end;
Пример обработки попадания на место в процедуре Image1MouseUp:
if (abs(Img[i,j].top-a[i,j].top)<=10) and (abs(Img[i,j].left-a[i,j].left)<=10) then begin
 Img[i,j].top:=a[i,j].top;
 Img[i,j].left:=a[i,j].left;
 Img[i,j].Enabled:=false; //таким образом мы получим эффект прилипания картинки на нужное место
end;

Домашнее задание: 
Написать приложение для игры с использованием динамического создания компонент или массива компонент, например: "Мозаика", "Найди пару" (с Image), "Поле чудес", "Кто хочет стать миллионером" (c Edit), "Крестики и нолики", "Пятнашки" (c Button).

Графический редактор

Рисование на канве:
задание цвета линии:
   Image1.Canvas.Pen.Color:=clRed; (название цвета можно узнать из свойств Color любой визуальной компоненты)
задание цвета фона:
 Image1.Canvas.Pen.Color:=RGBtoColor(Red,Green,Blue); (перевод из режима GRB в цветовое значение, палитру Red, Green, Blue можно задать с помощью SpinEdit.Value, у которого задать свойства Min=0, Nax=255)
задание цвета пикселу:
 Image1.Сanvas.Pixels[x,y]:=Image1.Сanvas.Pen.Color;
задание длины линии:
 Image1.Canvas.Pen.Width:=10;
очистка холста заданными цветом заливки:
 Image1.Canvas.Rectangle(ClientRect);
рисование линии заданным цветом карандаша:
  Image1.Canvas.Line(x0,y0,x,y);(здесь заданы координаты начала и конца линии)
рисование прямоугольника заданным цветом карандаша и заливки:
 Image1.Canvas.Rectangle(x0,y0,x,y);(здесь заданы координаты левого верхнего и правого нижнего угла прямоугольника)
рисование эллипса заданным цветом карандаша и заливки:
 Image1.Canvas.Ellipse(x0,y0,x,y);(здесь заданы координаты левого верхнего и правого нижнего угла прямоугольника, в который вписан эллипс)
рисование треугольника:
 var Tr: array[1..4] of TPoints;
 Tr[1].x:=10; Tr[1].y:=10;
 Tr[2].x:=1; Tr[2].y:=100;
 Tr[3].x:=100; Tr[3].y:=1;
 Tr[4].x:=10; Tr[4].y:=10;
 Image1.Canvas.Polyline(Tr);
рисование треугольника с заливкой:
  var Tr: array[1..3] of TPoints;
 Tr[1].x:=10; Tr[1].y:=10;
 Tr[2].x:=1; Tr[2].y:=100;
 Tr[3].x:=100; Tr[3].y:=1;
 Image1.Canvas.Polygon(Tr);
заливка ограниченной области заданным цветом заливки:
 Image1.Canvas.FloodFill(x,y,color_border, fsBorder);(здесь color_border цвет границы, до которой происходит заливка пикселей, начиная с координаты (x,y) )
 Image1.Canvas.FloodFill(x,y,color_surface, fsSurface);(здесь color_surface цвет фона, по которому происходит заливка пикселей, начиная с координаты (x,y) )

Методы рисования с помощью мыши:
Var Drag: Boolean;
      X0,Y0: Integer;
событие OnMouseDown для Image1
Drag:=true; (мышка нажата, значит можно рисовать)
X0:=X; Y0:=Y; (запомним первоначальные координаты мыши)
событие OnMouseUp для Image1
Drag:=false; (мышка опущена, значит не рисуем)
событие OnMouseMove для Image1
 If Drag then (если мышка нажата, то рисуем, например, точками или линиями)
  begin
    Image1.Сanvas.Pixels[x,y]:=Image1.Сanvas.Pen.Color;
  Image1.Canvas.Line(x0,y0,x,y);x0:=x;y0:=y;
  end;

Сохранение  рисунка на канве в файл:
If SavePictureDialog1.Execute then
   Image1.Picture.SaveToFile(SavePictureDialog1.Filename);
Открытие рисунка из файла на канву:
If OpenPictureDialog1.Execute then
   Image1.Picture.LoadFromFile(OpenPictureDialog1.Filename);

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

Компьютерные сети


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

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

Интерактивная презентация

Презентация

Фракталы

Мир фракталов
Пример программы, созданный Ласковым Никитой.

23.11.2012

Домашнее задание: упражнения на рекурсию на стр. 254 №1-4.

21.11.2012

Использование MS Excel для решения задач оптимального планирования.
Нужно определить значение плановых показателей с учетом ограниченности ресурсов при условии достижения стратегической цели. Это и будет оптимальным планом.

Задание 1.
Школьный кондитерский цех готовит пирожки и пирожные. В силу ограниченности емкости склада за день можно приготовить в совокупности не более 700 изделий. Рабочий день длится 8 часов. Если выпускать только пирожные, за день можно произвести не более 250 штук, пирожков же можно произвести 1000, если при этом не выпускать пирожные. Стоимость пирожного вдвое выше, чем пирожка. Требуется составить дневной план производства, обеспечивающий кондитерскому цеху наибольшую выручку.
1. Разработаем математическую модель задачи.
Плановыми показателями являются: x — дневной план выпуска пирожков, y — дневной план выпуска пирожных.
Ресурсы производства: длительность рабочего дня — 8 часов, вместимость складского помещения  700 мест. Для простоты предполагаем, что другие ресурсы не ограничены.
Стратегическая цель — достижение максимальной выручки.
2. Подготовим электронную таблицу:
пирожки пирожные всего ограничения
максимально за день 1000 250
количество 5 5 10 700
цена 1 2 15
время на один продукт 0,48 1,92 12 480
3. Воспользуемся программой оптимизации «Поиск решения»:
MS Office 2007: Данные->Поиск решения (если такой команды нет, то ее можно добавить Файл — Параметры - Надстройки - Перейти— установить флажок Поиск решения)
MS Office 2003: Сервис — Поиск решения (если такой команды нет, то ее можно добавить Сервис — Настройки — установить флажок Поиск решения)
Open Office: Сервис - Решатель.
Задание 2.
Внести следующие изменения в имеющуюся модель: длительность рабочего дня 10 часов, максимальное количество пирожков 1500, максимальное количество пирожных 500, вместимость складского помещения — 900, количество пирожных должно быть не меньше количества пирожков

Задание 3.
Решить задачу о школьном кондитерском цехе в новой постановке. Пусть цех производит 4 вида продукции:
-       пирожки (максимально возможно произвести 2000 штук в день, если ничего больше не производить);
-       шанежки (максимальный выпуск 1600 штук в день);
-       булочки (максимальный выпуск 1000 штук в день);
-       пирожные (максимальный выпуск 500 штук в день).
Соотношение стоимости изделий таково: пирожок/булочка — 2/1, пирожок/шанежка — 1/2, пирожок/пирожное — 1/4. Емкость склада равна 1100 изделий. Длительность рабочего дня 8 часов. Составить оптимальный план выпуска продукции исходя из той же цели достижения максимальной выручки.

Домашнее задание:
Задача. Едем на экскурсию
На экскурсию едут 11 классов в четырех автобусах: 6а-23, 6б-17, 6в-14, 6г-7, 7а-18, 7б-5,  7в-19, 7г-22, 8а-21, 8б-11, 8в-15. Класс может ехать в каком-либо автобусе только целиком. Необходимо рассадить в 4 автобуса все классы так, чтобы в каждом автобусе ехало не более 45 человек.
Задача. Распределение грузов

Необходимо загрузить товары на 3 грузовика: станки 11 штук по 850 г, трубы 4 упаковки по 1930 г, буровое оборудование 2 ящика по 1700 г, отделочный камень 4 ящика по 1250 г , промышленные электромоторы 7 штук по 730 г, кабель 5 бухт по 1100 кг. Распределите товар так, чтобы загрузка каждой из автомашин не превышала 12 тонн более чем на 100—150 килограммов.

 17.11.2012

Рекурсивные подпрограммы - это подпрограммы, которые в своем теле содержат вызов самой себя.Чтобы такая подпрограмма не зациклилась, необходимо предусмотреть условие останова (выхода из подпрограммы). 
Глубина рекурсии - это количество вызовов такой подпрограммы при выполнении программы. Причем каждый раз при вызове подпрограммы  в памяти компьютера создает заново все локальные переменные подпрограммы. 
Некоторые рекурсивные подпрограммы можно переписать с помощью цикла.
Примеры:
1. генерация всевозможных комбинаций чисел заданной длины N
uses SysUtils;
var n,i:integer;
   S:string;
procedure generation(N:integer);
var i: integer;
begin
  if N=0 then writeln(S)
  else 
    for i:=0 to 9 do begin
       S:=S+inttostr(i);
       generation(N-1);
       delete(S,length(S),1);
    end;
end;
begin
 readln(N);
 S:='';
 for i:=1 to 9 do
 begin
   S:=S+inttostr(i);
   generation(N-1);
   delete(S,length(S),1);
  end;
end.
2. вычисление N! (N факториал)
var N,F:integer;
function factorial(N:integer):integer;
begin
  if N=0 then factorial:=1
  else factorial:=N*factorial(N-1);
end;
begin
  readln(N);
  F:=factorial(N);
  writeln(F); 
end.
3. вычисление наибольшего общего делителя двух натуральных чисел a и b по алгоритму Евклида.
var a,b,c:integer;
function NOD(a,b:integer):integer;
begin
  if a=b then NOD:=a
  else if a<b then NOD:=(a,b-a) else NOD:=(a-b, b); 
end;
begin
  readln(a,b);
  c:=NOD(a,b);
  writeln(C);
end.
Домашнее задание:
1. Проверить 3 программы с рекурсивными процедурами: генерация кода, факториал, НОД. 
2. Определить наибольшее число N, при котором факториал правильно считает.
3. Написать программу вычисления НОД и НОК для заданных N натуральных чисел.

12.11.2012

Домашнее задание: Учебник Фиошина 2 часть. стр. 19-22. Выполнить задание в электронных таблицах

20.10.12

Очередь - это организация данных по принципу первый вошел-первый вышел (First  Input - First Output (FIFO )). Очередь можно представить как перекладывание колоды карт с верхней  позиции на нижнюю, естесственная очередь к кассе, циклический сдвиг строки и т.д.
Организация типа "очередь" так же как для списка.

Функции работы с очередью(см. http://informatics.mccme.ru/moodle/mod/book/view.php?id=543&chapterid=278):
ADD - поставить в очередь (добавление элемента в конец списка)
REMOVE - покинуть очередь (удаление первого элемента из списка).

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

type PtrQueue=^Queue;
        Queue=Record
           Count:Integer;
           Sum:Real;
           Next:PtrQueue;
        end;
var First,Last:PtrQueue;C:integer; S:real;
procedure add(C:integer; S:real; Var First,Last:PtrQueue);
var Tmp:PtrQueue;
begin
   New(Tmp);
   Tmp^.Count:=C;
   Tmp^.Sum:=S;
   Tmp^.Next:=nil;  
   if Last=Nil then First:=Tmp
      else Last^.Next:=Tmp;
   Last:=tmp;
end;
procedure Remove(Var C:integer; Var S:real;
                 Var First,Last:PtrQueue);
var Tmp:PtrQueue;
begin
  if First=Nil then exit;
  Tmp:=First;
  C:=First^.Count;
  S:=First^.Sum;
  First:=First^.Next; 

  Dispose(Tmp);  
  if First=Nil then Last:=Nil;
end;
procedure Summa(Var C:Integer; Var S:Real;
                Var first,last:PrtQueue);

Var Sum:Real;
    Count:Integer;
begin
   S:=0;C:=0;
   While Last<>Nil do begin
     remove(count,sum,first,last);
     S:=S+sum;
     C:=C+count;
   end;
end;

BEGIN
   first:=nil;
   last:=nil;
   while not eof() do begin
      readln(c,s);
      add(C,S,First,Last);
   end;
   summa(c,s,first,last);
   writeln('Count=',C,' Summa=',S:0:4);
END.
Домашнее задание:
В игре в пьяницу карточная колода раздается поровну двум игрокам. Далее они вскрывают по одной верхней карте, и тот, чья карта старше, забирает себе обе вскрытые карты, которые кладутся под низ его колоды. Тот, кто остается без карт – проигрывает.
Для простоты будем считать, что все карты различны по номиналу, а также, что самая младшая карта побеждает самую старшую карту ("шестерка берет туза").
Игрок, который забирает себе карты, сначала кладет под низ своей колоды карту первого игрока, затем карту второго игрока (то есть карта второго игрока оказывается внизу колоды).
Напишите программу, которая моделирует игру в пьяницу и определяет, кто выигрывает. В игре участвует 10 карт, имеющих значения от 0 до 9, большая карта побеждает меньшую, карта со значением 0 побеждает карту 9.
Формат входных данных
Программа получает на вход две строки: первая строка содержит 5 карт первого игрока, вторая – 5 карт второго игрока. Карты перечислены сверху вниз, то есть каждая строка начинается с той карты, которая будет открыта первой.
Формат выходных данных
Программа должна определить, кто выигрывает при данной раздаче, и вывести слово first или second, после чего вывести количество ходов, сделанных до выигрыша. Если на протяжении 106 ходов игра не заканчивается, программа должна вывести слово botva.
Пример

Входные данные

Выходные данные
1 3 5 7 9
2 4 6 8 0
second 5

06.10.2012

Стек (Stack) - это организация данных по принципу последний вошел-первый вышел (Last Input - First Output (LIFO )). Стек можно представить как узкий стакан или колодец, куда помещаются шарики, или в виде пирамидки в игре Баше, или нанизывание бусин на нитку.
Организация типа "стек" так же как для списка.
Функции работы со стеком (см. http://informatics.mccme.ru/moodle/mod/book/view.php?id=543):
POP - втолкнуть в стек (добавление элемента вверх стека)
PUSH - вытолкнуть из стека (удалить элемент из вершины).

Пример: Правильная скобочная последовательность.
Рассмотрим последовательность, состоящую из круглых, квадратных и фигурных скобок. Программа дожна определить, является ли данная скобочная последовательность правильной.
Пустая последовательность явлется правильной. Если A – правильная, то последовательности (A), [A], {A} – правильные. Если A и B – правильные последовательности, то последовательность AB – правильная.
Формат входных данных
В единственной строке записана скобочная последовательность.
Формат выходных данных
Если данная последовательность правильная, то программа должна вывести строку yes, иначе строку no.
Пример



Входные данные



Выходные данные
([{}])
Yes
([)]
No
()()
Yes
())( 
No
program project3;   
Type
  PtrStack = ^RecStack; {описание стека}
  RecStack = record
            Data : char;
            Next : PtrStack;
  end;
Var
  top: PtrStack;{указатель на начало (вершину) стека}
Procedure Pop(D : char; Var A : PtrStack);{"втолкнуть" (добавить) в стек}
Var
  tmp : PtrStack;{временная переменная}
Begin
  new(tmp); {выделяем память под хранение нового элемента стека}
  tmp^.Data := D; {заполняем поля данных элемента}
  tmp^.Next := A; {новый элемент "связываем" со стеком}
  A := tmp; {созданный элемент определяем как вершину стека}
End;
Function Push(Var A : PtrStack) : char; {"вытолкнуть" (удалить) из стека}

Var
  tmp : PtrStack;{временная переменная}
Begin
  if A<>nil then begin {если стек не пустой}
    push:= A^.Data; {возвращаем значение поля данных Data}
    tmp := A; {запоминаем адрес вершины стека}
    A := A^.Next; {переносим вершину стека на следующий элемент}
    dispose(tmp); {освобождаем память, занятую уже ненужным элементом стека}
  end else
     push:=#0;
End;

Procedure Solve;
var tmp:char;{временная переменная}
Begin
  top:= Nil; {инициализация стека}
  while not eoln() do
  begin
        read(tmp);
        case tmp of
           '{','(','[':pop(tmp,top);
           '}':if push(top)<>'{' then begin write('No'); exit; end;
           ']':if push(top)<>'[' then begin write('No'); exit; end;
           ')':if push(top)<>'(' then begin write('No'); exit; end;
         end;
   end;
   if top=nil {если стек пустой, то это правильная скобочная последовательность}
      then
         write('Yes')
      else  begin
         write('No');
         while top<> nil do push(top);{очищаем память}
      end;
    end;
BEGIN
   Solve;
END.
Домашнее задание:
В постфиксной записи (или обратной польской записи) операция записывается после двух операндов. Например, сумма двух чисел A и B записывается как A B +. Запись B C + D * обозначает привычое нам (B + C) * D, а запись A B C + D * + означает A + (B + C) * D. Достоинство постфиксной записи в том, что она не требует скобок и дополнительных соглашений о приоритете операторов для своего чтения.
Формат входных данных
В единственной строке записано выражение в постфиксной записи, содержащее однозначные числа и операции +, -, *.
Формат выходных данных
Необходимо вывести значение записанного выражения.
Пример



Входные данные



Выходные данные
8 9 + 1 7 - *
-102

01.10.2012

Формы. Элементы управления: текстовое поле, переключатель, флажки, список. Создание формы "Анкета" и "Тест"

28.09.12

Списком (List) называется структура данных, каждый элемент которой посредством указателя связывается со следующим элементом.

Функции работы со списками (см. http://informatics.mccme.ru/moodle/mod/book/view.php?id=535):
ADD - вставка в начало списка (добавление элементов)
INS - вставка в середину списка по возрастанию ключа
DELFIRST- удаление первого элемента
DEL - удаление элемента списка по ключу
SHOW- вывод (просмотр) списка.
ERASE - освобождение списка

Пример: вывести целые числа в порядке возрастания.
program project1;
type  PtrSpisok=^RecSpisok;
      RecSpisok = record
           Data:integer;
           next:PtrSpisok;
      end;
var head:PtrSpisok;
      a:integer;

procedure Show(head:PtrSpisok);
var tmp:PtrSpisok;
begin
 tmp:=head; {Запомним адрес первого элемента списка}
  while tmp<> nil do  {Пока список не пустой}
  begin
    write(tmp^.data,' '); {выведем элемент списка}
    tmp:=tmp^.next; {Перейдем на следующий элемент списка}
  end;
end;

Procedure Add(D : integer; Var Head : PtrSpisok );
Var
  tmp : PtrSpisok ;
Begin
 New(tmp); {выделим место в памяти для переменной типа указатель на список PtrSpisok}
 tmp^.data := D; {заполним поле Data первого элемента}
 tmp^.Next := Head;  {заполним поле Next на указатель первого элемента Head}
 Head:= tmp;{установим указатель головы списка Head на первый элемент}
end;

Procedure Delfirst(Var Head : PtrSpisok );
Var
 tmp : PtrSpisok ;
Begin
 if Head<> nil then begin
  tmp := Head; {Запомним адрес первого элемента списка}
  Head := Head^.Next; {Теперь Head указывает на второй элемент списка}
  Dispose(tmp); {Освободим память, занятую переменной tmp^}
 end;
end;

Procedure Erase(Var Head : PtrSpisok );
Var
  tmp : PtrSpisok ;
Begin
  while Head<> nil do begin {До тех пор, пока список не пустой удаляем элемент с начала списка}
   tmp := Head;
   Head := Head^.Next;
   Dispose(tmp);
  end;
end;

Procedure Del(D: integer; Var Head : PtrSpisok);
Var
  tmp, dx : PtrSpisok ;
Begin

  tmp := head;
  dx  := Head;
  while tmp<>Nil do
    if tmp^.Data=D {Найдем адрес нужного элемента списка}
    then begin
          if tmp=head {Если это в начале списка}
          then
              delfirst(head)
          else begin  {Если в середине или в конце списка}
                dx^.Next := tmp^.Next;
                Dispose(tmp);
                tmp := dx^.Next;
           end;
    end
    else begin   {Переходим к следующему элементу}
          dx := tmp;
          tmp := tmp^.Next;
    end;
End;

Procedure Ins(D : integer; Var Head : PtrSpisok );
Var
  tmp,dx,px : PtrSpisok ;
Begin
 New(tmp);
 tmp^.data := D;
 tmp^.Next := Nil;
 if Head = Nil  {Если список пуст, то вставляем в начало}
  then
    Head := tmp
  else  Begin
    dx := Head;
    px := Head;
    while (dx<>Nil) and (dx^.data<=D) do  {Проверяем условие для вставки элемента в список, упорядоченный по возрастанию}
    Begin
      px := dx;
      dx := dx^.Next;
    End;
    if dx=Nil  {Если вставляем в конец списка}
    then
      px^.Next := tmp
    else begin
      tmp^.Next := dx;
      if dx=Head {Если вставляем в начало списка}
      then
         Head := tmp
      else       {Если вставляем в середину списка}
         px^.Next := tmp;
    end;
  end;
end;


begin
 head:=nil;
 read(a);
 add(a,head);
 while not eoln() do begin
   read(a);
   ins(a,head);
 end;
 readln;
 write('spisok:'); show(head); readln;
 erase(head);
end.

Домашнее задание:
Формат входных данных
В каждой строке сначала записан номер класса (число, равное 9, 10 или 11), затем (через пробел) – фамилия ученика.
Формат выходных данных
Необходимо вывести список школьников по классам: сначала всех учеников 9 класса, затем – 10, затем – 11. Внутри одного класса порядок вывода фамилий должен быть таким же, как на входе.
Пример
Входные данные
Выходные данные
9 Иванов
10 Петров
11 Сидоров
9 Григорьев
9 Сергеев
10 Яковлев
9 Иванов
9 Григорьев
9 Сергеев
10 Петров
10 Яковлев
11 Сидоров

26.09.12

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

22.09.12

Динамическая память. Понятие списка.

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

Память для динамических переменных выделяется в специальной области памяти, называемой кучей (heap), которой выделяется из памяти 1 Мб. Для того, чтобы потом работать с выделенной областью памяти, программа должна сохранить выданный адрес, который сохраняется в специальной адресной переменной типа указатель Pointer или ссылка на базовый тип, например,целый - ^Integer. Переменная этого типа хранит 4 байта для адреса.

Процедура New(P) - выделяет память из кучи и передает адрес на начало ячейки памяти в  переменную P.

Доступ к ячейке, где хранятся значения осуществляется так:

P^:=5;

Можно взять адрес любой переменной с помощью унарной операции @:

var A:integer;
      P:^integer;
begin
  p:=@a;
  p^:=7;
  write(a); //выведет число 7.
end.

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

Для освобождения памяти от занимаемых данных используют процедуру Dispose(P);

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

type
 PNode=^TNode;
 TNode=record
    Info:integer;
    Next:PNode;
 end;
var first:PNode;

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

procedure add(value:integer);
var tmp:pnode;
begin
  new(tmp);
  tmp^.info:=value;
  tmp^.next:=first;
  first:=tmp;
end;
function del:integer;
var tmp:pnode;
begin
if first=nil then result:=-1
else
begin
tmp:=first;
first:=first^.next;
result:=tmp^.info;
dispose(tmp);
end;
end;

procedure showlist;
var tmp:pnode;
begin
  tmp:=first;
   while tmp<>nil do
  begin
    showmessage(inttrostr(tmp^.info));
    tmp:=tmp^.next;
end;
end;
Домашняя работа: упражнение 4-5 из учебника Фиошина 2 часть

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

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

18.09.12

Примеры использования многоуровневых списков:
Задача 1. условие
     1) задание 1
     2) задание 2
     3) задание 3
Задача 2. условие
     1) задание 1
     2) задание 2
     3) задание 3
Задача 3. условие
     1) задание 1
     2) задание 2
     3) задание 3

I. Семейство кошачьих
    а) тигр
    б) лев
    в) леопард
II. Семейство
    а)
    б)
    в)
III. Семейство
    а)
    б)
    в)

Список литературы (после заполнения сделать сортировку)
[1] Бунин И.А. «Господин из Сан-Франциско»
[2] Куприн А.И. «Поединок»
[3] Горький М. «Старуха Изергиль»
[4] Толстой А.Н. «Пётр Первый»
[5] Булгаков М А. «Белая гвардия»

Таблица (после заполнения сделать сортировку сначала по ФИО, затем по Классу; при этом нумерация не должна меняться)
ФИОКласс
1.
2.
3.
4.
5.


Выбрать стиль Заголовок1, Заголовок2, Заголовок3 и для заголовков оформить нумерацию:
Глава I. Информатика и информационные процессы
§ I.1.
п. 1.1.
п. 1.2.
п. 1.3.
§ I.2.
п. 2.1.
п. 2.2.
п. 2.3.
§ I.3.
п. 3.1.
п. 3.2.
п. 3.3.
Глава II. Технология работы с текстовой информацией
§ II.1.
п. 1.1.
п. 1.2.
п. 1.3.
§ II.2.
п. 2.1.
п. 2.2.
п. 2.3.
§ II.3.
п. 3.1.
п. 3.2.
п. 3.3.

Глава III. Социальная информатика
§ III.1.
п. 1.1.
п. 1.2.
п. 1.3.

§ III.2.
п. 2.1.
п. 2.2.
п. 2.3.

§ III.3.
п. 3.1.
п. 3.2.
п. 3.3.


Домашнее задание:
Подготовить документ с разными видами многоуровневых списков на примере заданий демо-версии ЕГЭ и ГИА.

14.09.12

Объявление динамического массива:
var  a:array of integer;  
Задание размерности:
  n:=spinedit1.value;
  setlength(a,n+1);   
Оценка сложности алгоритмов поиска:
1) простой поиск
2) поиск в упорядоченном массиве
3) поиск половинным делением

алгоритм 1005001000500010000
1
2
3
Домашнее задание: оценить сложность алгоритмов сортировки по количеству сравнений и перестановок.
1) - сортировка выбором
2) - сортировка обменом
3) - сортировка вставками

12.09.12

Оформить реферат в текстовом процессоре на тему "Дистанционное обучение по теме ..."
- Титульная страница
- Оглавление
- Разделы:
  1. Пояснительная записка (раскрыть тему ДО, цели, задачи, для кого предназначена, количество часов, приведите пример из интернета)
  2. Материал (в каком виде предоставлена теория, сколько часов на его изучение отводится, какие разделы освещены)
  3. Упражнения (в какой форме, какие виды заданий и как оценивается, приведите примеры)
  4. Консультации (в какой форме, приведите пример)
  5. Контроль знаний ( в каком виде, как оценивается, как учитывается в итоге, приведите примеры, что получаете — сертификат, место работы и т. д.)
Требование к оформлению:
Страница формата А4, все поля - 2 см, ориентация - книжная
Обычный текст: 14 пт, Times New Roman, отступ -1 см, междустрочный интервал - полуторный, выравнивание - по ширине, интревал перед и после - 0 пт
Заголовок: 16 пт, Arial, полужирный, отступ - 0 см, междустрочный интервал - полуторный, интервал перед и после - 12 пт, выравнивание - по центру.
Вставить номера страниц по центру внизу, кроме титульной.

Темы:
Бодров — Рисование
Фёдорова — Биология
Федорко — Химия
Шангина — История
Макеева — Физиология
Ягунов — Продажа продукции
Новикова — Кулинария
Ефремов — Жонглирование
Конев — Английский язык
Ушаров, Рошкованов — Вождение автомобиля
Брезгина — Методика написания сочинений на английском языке
Ласковый -
8.09.12
1. Найти все делители натурального числа и вывести в список. Если это простое число, то вывести сообщение.

2. Вывести все простые делители числа

3. Дано натуральное число n. Вывести n-е число Фибоначчи (1,1,2,3,5,8,…).

ф[n]=ф[n-1]+ф[n-2], ф[1]=ф[2]=1.


1. Каждый элемент квадратной матрицы размером n x n равны 1 или 0. Найти количество «островов», образованных единицами. Под «островом» понимается группа единиц, со всех сторон окруженная нулями или краями матрицы. Единицы относятся к одному острову, если из одной из них можно перейти к другой, «наступая» на единицы, расположенные в соседних клетках. Соседними клетками являются клетки,граничащие по горизонтали или вертикали.

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

3.09.12

Количество информации через вероятность:
Формула Хартли: i=log2(1/p) - для равновероятных событий
 Формула Шеннона: i = -(p1 log2(p1) + p2 log2(p2)+... + pn log2(pn) ) или i = p1 log2(1/p1) + p2 log2(1/p2)+... + pn log2(1/pn)  - для разновероятных событий
Таблица log2(N)
NiNiNiNi
10,00000174,08746335,04439495,61471
21,00000184,16993345,08746505,64386
31,58496194,24793355,12928515,67243
42,00000204,32193365,16993525,70044
52,32193214,39232375,20945535,72792
62,58496224,45943385,24793545,75489
72,80735234,52356395,28540555,78136
83,00000244,58496405,32193565,80735
93,16993254,64386415,35755575,83289
103,32193264,70044425,39232585,85798
113,45943274,75489435,42626595,88264
123,58496284.80735445,45943605.90689
133,70044294,85798455,49185615,93074
143,80735304,90689465,52356625,95420
153,90689314,95420475,55459635,97728
164,00000325,00000485,58496646,00000

Домашнее задание: