WWW.DISS.SELUK.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА
(Авторефераты, диссертации, методички, учебные программы, монографии)

 

1

© К. Поляков, 1995-2009

Программирование на языке Си

Глава III.

Разработка программ

1. Проектирование программ 2

Этапы разработки программ

Программирование «снизу вверх»

Структурное программирование

2. Построение графиков и работа с ними _ 7 Структура программы

Способы задания функций

Системы координат

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

Как найти точки пересечения?

Штриховка замкнутой области

Площадь замкнутой области

3. Вычислительные методы Целочисленные алгоритмы

Многоразрядные целые числа

Многочлены

Последовательности и ряды

Численное решение уравнений

Вычисление определенных интегралов

Вычисление длины кривой

Оптимизация

4. Моделирование _ Что такое модель?

Виды моделей

Вращение

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

Математическое моделирование физических процессов

5. Сложные проекты Зачем нужны проекты?

Как создать проект?

Пример проекта

http://kpolyakov.narod.ru © К. Поляков, 1995- ПI. Разработка программ 1. Проектирование программ Этапы разработки программ Постановка задачи Постановка задачи – наиболее важный этап разработки программы. Обычно сначала она формулируется на естественном языке, причем при выполнении коммерческого проекта все требования к программе необходимо закрепить в договоре в письменной форме.

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

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

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

Эта задача плохо (некорректно) поставлена, поскольку не заданы исходные данные (стоимость нового компьютера, стоимость ремонта каждый год, и т.д.). Вот еще примеры плохо поставленных задач1:

• Винни Пух и Пятачок построили ловушку для слонопотама. Удастся ли его поймать?

• Винни Пух и Пятачок пошли в гости к Кролику. Сколько бутербродов с медом может съесть Винни, чтобы не застрять в двери?

• Малыш и Карлсон решили по-братски разделить два орешка – большой и маленький.

Как это сделать?

• Аббат Фариа решил бежать из замка Иф. Сколько времени ему понадобится для этого?

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

Разработка модели данных Одна из основных проблем в практическом программировании – правильно построить формальную модель задачи (на языке математики и логики), определить нужную структуру данных (переменные, массивы, структуры) и взаимосвязи между ними. Большинство наиболее серьезных ошибок в программах вызваны именно ошибками в выборе модели данных.

Разработка алгоритма На этом этапе необходимо выбрать или разработать заново алгоритм.

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

Алгоритм должен учитывать выбранную ранее модель данных. Иногда приходится возвращаться к предыдущему шагу, поскольку для того, чтобы использовать выбранный алгоритм, А.Г. Гейн и др., Информатика, учебник для 8-9 кл. общеобразоват. учреждений, М.: Просвещение, 1999.

http://kpolyakov.narod.ru © К. Поляков, 1995- Программирование на языке Си удобнее организовать данные по-другому, например, использовать структуры вместо нескольких отдельных массивов.

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

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

Важным также является выбор языка программирования. Большинство профессиональных программ сейчас составляется на языке Си (точнее, на его расширении Си++), реже – на Visual Basic или Delphi.

Отладка программы Отладка – это поиск и исправление ошибок в программе.

На английском языке отладка называется debugging, что дословно означает «извлечение жучков». Легенда утверждает, что на заре развития компьютеров (в 1940 г.) в контакты электронных реле компьютера МАРК-II залетела моль (bug), из-за чего он перестал работать.

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

• просматривать и изменять значения переменных в памяти, а также регистры процессора.

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

Разработка документации Очень важно правильно разработать документацию, связанную с программой. Чаще всего требуется руководство пользователя (User manual), иногда (когда поставляются исходные тексты программы) – руководство программиста (Programmer’s manual), подробное описание алгоритма и особенностей программы. Эти документы надо составлять на простом и понятном языке, так чтобы их мог читать не только автор программы.

Тестирование программы Тестирование – это проверка программы специально обученными людьми – тестерами.

Цель тестирования – найти как можно больше ошибок, которые не смог найти разработчик.

Различают две ступени тестирования профессиональных программ:

• альфа-тестирование – это тестирование сотрудниками той же фирмы, в которой работает команда разработчиков;

• бета-тестирование – тестирование предварительной версии в других фирмах и организациях; часто бета-версии программ для тестирования свободно распространяются через Интернет.

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

ПI. Разработка программ Но, как справедливо указывал известный теоретик программирования Э. Дейкстра, «тестирование может показать лишь наличие ошибок, но не их отсутствие». Нередки случаи, когда новые входные данные вызывают «отказ» или приводят к неверным результатам работы программы, которая считалась полностью отлаженной.

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

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

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

Программирование «снизу вверх»

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

Достоинства:

• легко начать составлять программу «с нуля»;

• используя метод «от простого – к сложному» можно написать наиболее эффективные Недостатки:

• при составлении простейших процедур необходимо как-то связывать их с общей задачей;

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

• программа часто получается запутанной.

Структурное программирование Программирование «сверху вниз»

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

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

Достоинства:

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

Программирование на языке Си • структура программу получается простой и понятной.

Недостатки:

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

• повысить надежность программ; для этого нужно, чтобы программа легко поддавалась тестированию и не создавала проблем при отладке;

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

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

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

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

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

Принцип подчиненности. Взаимосвязь между частями программы должна носить подчиненный характер. К этому приводит разработка программы «сверху вниз».

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

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

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

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

• работа программного модуля не должна зависеть:

o от того, какому модулю предназначены его выходные данные;

o от того, сколько раз он вызывался до этого;

ПI. Разработка программ • размер программного модуля желательно ограничивать одной-двумя страницами исходного листинга (30-60 строк исходного кода);

• модуль должен иметь только одну входную и одну выходную точку;

• взаимосвязи между модулями устанавливаются по принципу подчиненности;

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

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

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

• имена переменных и модулей должны быть смысловыми, «говорящими»;

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

• желательно не допускать вложенности более, чем трех уровней;

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

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

• построить на экране оси координат и сделать их разметку;

• построить графики заданных двух функций;

• найти координаты указанных точек пересечения;

• заштриховать замкнутую область, ограниченную кривыми;

• вычислить площадь заштрихованной части.

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

// здесь объявляются константы и глобальные переменные // здесь записываются все функции и процедуры //-----------------------------------------------Основная программа //-----------------------------------------------main () initwindow ( 800, 600 ); // создать окно для графики Axes(); // построение и разметка осей координат Cross(); // поиск точек пересечения closegraph(); // закрыть окно для графики Таким образом, основная программа состоит только из вызовов процедур. Этих процедур еще нет, мы будем писать их последовательно одну за другой. Чтобы иметь возможность отлаживать программу по частям, закомментируем строчки с вызовами процедур, поставив в начале каждой строки две наклонные черточки (два слэша) //. После того, как очередная процедура составлена и записана (выше основной программы), надо убрать эти символы в соответствующей строчке основной программы, иначе она не будет вызываться.

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

ПI. Разработка программ • Каждая процедура и функция должна иметь заголовок («шапку»), в котором указывают o входные и выходные параметры, для функции – возвращаемое значение;

o процедуры и функции, которые она вызывает;

o процедуры и функции, которые вызывают ее.

Простейший пример «шапки» показан выше при описании структуры программы.

• Тело каждого цикла for, while, do-while, включая фигурные скобки, смещается вправо на 2-3 символа относительно заголовка, так чтобы начало и конец цикла были хорошо заметны. Открывающая скобка должна быть на том же уровне, что и закрывающая. Это позволяет сразу обнаруживать непарные скобки.

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

• Надо давать переменным осмысленные имена, чтобы их роль была сразу понятна. Так счетчик можно назвать count, переменную, в которой хранится сумма – summa и т.п.

• Чтобы облегчить чтение программы, полезно использовать пробелы в записи операторов, например воспринимается легче, чем эта же строка без пробелов.

Теперь, используя приведенные функции, можно составить процедуру, которая рисует график функции на экране:

void Plot() float x, h, xmin, xmax;

Таким образом, можно применить метод отрезка деления пополам, поскольку разность y-y1 меняет знак при переходе через *. Общую идею можно записать в виде следующего алгоритма:

• определить интервал углов [A,B], в котором находится угол *, соответствующий точке пересечения;

• найти середину интервала – угол C = (A+B)/2;

• вычислить (A) и соответствующие y(A) и y1(A) ;

• вычислить (C) и соответствующие y(C) и y1(C);

• если значения y(A)- y1(A) и y(C)- y1(C) имеют разные знаки (есть пересечение), повторить поиск на интервале [A,C], иначе искать на [C,B] ;

• поиск заканчивается, когда длина интервала [A,B] будет меньше заданной точности.

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

void Spiral( float phi, float &x, float &y ) x = rho * cos(phi); // вычисляем декартовы координаты ПI. Разработка программ Эту процедуру надо вызвать два раза — один раз для угла A, второй раз — для C. Полностью функция, вычисляющая координаты x и y точки пересечения приведена ниже. Точность eps определяется как диапазон углов [A,B], при котором процесс прекращается.

void SolvePolar( float phiA, float phiB, float phiC, xA, yA, xC, yC, fA, fC;

while ( fabs(phiB-phiA) > eps ) { phiC = (phiA + phiB) / 2.; // средний угол Spiral ( phiA, xA, yA ); // (xA,yA) для угла phiA Spiral ( phiC, xC, yC ); // (xC,yC) для угла phiC if ( fA*fC < 0 ) phiB = phiC; // сужаем интервал поиска Функции, заданные в параметрическом виде Пусть теперь одна кривая задана в параметрической форме, а вторая – в явном виде. Независимой переменной является параметр t. Поэтому, построив графики, надо определить интервал значений параметра [tA,tB], внутри которого находится корень уравнения. Далее корень находим методом деления пополам диапазона изменения параметра. Пусть функции Fx(t) и Fy(t) вычисляют значения координат параметрической кривой для заданного t. Тогда алгоритм выглядит так:

• найти tC — середину интервала [tA,tB];

• определить координат кривой (xA,yA) и (xC,yC) для значений параметра tA и tC;

• сравнить значения yA и yC со значениями второй функции в точках xA и xC; если разности имеют разный знак, то пересечение есть на интервале [tA,tС], если они одного знака, тогда пересечение есть на интервале [tC,tB].

void SolveParameter( float tA, float tB, float tC, xA, yA, xC, yC, fA, fC;

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

• выбрать независимую переменную, по которой будет проводиться поиск решения;

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

• найти интервал [A,B] изменения независимой переменной, такой, что внутри него содержится точка пересечения, и выбранная функция не меняет знак нигде, кроме точки пересечения;

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

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

• выберем в качестве независимой переменной;

• функция, меняющая знак в точке пересечения: x()- x0;

• определяем по графику интервал [A,B];

• применяем метод деления пополам.

точки пересечения с вертикальной прямой вычисляются почти так же. В этом случае независимой переменной является параметр и координаты xA и xC рассчитываются с помощью функции Fx(t).

Штриховка замкнутой области В данном разделе вы научитесь делать штриховку простейших геометрических фигур на плоскости. Везде предполагается, что надо сделать ровно N линий штриховки (не считая границ фигуры). Для большинства программ потребуется шаг штриховки — расстояние между линиями. Если на интервале длиной L надо провести N линий, не считая границ, то шаг будет раL вен, так как интервалов на 1 больше, чем линий.

ПI. Разработка программ Найдем уравнение нужной прямой. Пусть известны координаты стенки ( x0, y 0 ) и ( x1, y1 ).

Тогда можно определить угол и коэффициент Постоянная b определяется из условия прохождеy > kx + b Для этой цели можно также использовать точку случая, по известной точке.

Для того, чтобы определить скорость и направление полета после столкновения, рассмотрим схему справа. Пусть шарик летит под углом i к горизонту (это значит, что его вектор Программирование на языке Си скорости составляет угол i с горизонтальным лучом). На его пути находится препятствие в виде плоской стенки, имеющей угол наклона. Определим угол полета шарика i +1 после отскока от стенки, считая, что угол падения шарика (угол между направлением полета и перпендикуляром к плоскости) равен углу отражения. Из элементарных геометрических соображений получаем Из первого выражения сразу находим, а из второго – '. Все вычисления с углами в программе лучше вести в радианах.

В расчетах надо учесть потерю кинетической энергии при неупругом ударе. Например, если шарик теряет 10% энергии и при ударе его скорость равна v, скорость после отскока определяется из энергетического равенства Алгоритм пересчета параметров движения:

Дано: v,, Найти: v, после столкновения.

1. Вычислить угол.

2. Вычислить новый угол направления вектора 3. Вычислить модуль вектора скорости v '.

Обратите внимание, что в этих расчетах считается, что изменение скорости и направления происходит мгновенно, т.е., текущее время t и координаты шарика не y = kx + b меняются.

Для того, чтобы учесть размеры шарика, надо «сдвинуть» плоскость в сторону шарика на расстояние, равное его радиусу и моделировать отталкивание центра шарика от этой невидимой плоскости (штриховая линия на рисунке). По рисунку видно, что штриховая линия y = kx + b1 «поднимается» относительно исходной на расстояние c, которое можно вычислить из прямоугольного треугольника Столкновение со сферой рассчитывается так же, как и столкновение с плоскостью, касательной к этой сфере в точке удара. Для того, чтобы учесть размеры шарика, надо моделировать отталкивание центра от невидимой сферы, радиус которой R равен сумме радиусов шарика r и реальной сферы R.

ПI. Разработка программ Пусть известны координаты центра сферы ( x0, y 0 ) и координаты центра шарика ( x, y ).

При столкновении должно выполняться равенство Тогда коэффициент наклона касательной (имеющей уравнение y = kx + b ) определяется из прямоугольного треугольника (см. рисунок) а коэффициент b можно определить из условия прохождения касательной через точку ( x, y ) :

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

Программирование на языке Си 5. Сложные проекты Зачем нужны проекты?

Все наши прошлые программы представляли собой один единственный файл. Реальные программы состоят из множества отдельных файлов, которые включают тысячи строк кода и используют дополнительные функции, записанные в библиотеках (в Dev-C++ библиотеки имеют расширение *.a). Для того, чтобы построить из всех этих файлов программу (исполняемый файл с расширением *.exe) используют проекты.

Проект – это файл, в котором определяется, из каких файлов и как именно (с какими параметрами компилятора и компоновщика) собирается программа.

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

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

Рекомендуется разбивать программу на модули так, чтобы длина каждого модуля была не более 100-200 строк, иначе становится сложно искать в нем нужную функцию или процедуру.

В Dev-C++ файлы проектов имеют расширение *.dev. Для каждого проекта желательно выделять отдельную папку (каталог), потому что иначе будет очень сложно разбираться в многочисленных файлах (какие к какому проекту относятся).

Как создать проект?

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

• выбрать пункт верхнего меню Файл – Создать – Проект;

• в появившемся окне выбрать тип проекта Empty Project (пустой проект), ввести имя проекта и щелкнуть по кнопке ОК:

• появится окно сохранения проекта; здесь нужно выбрать ПКМ отдельную папку и сохранить в нее файл проекта First.dev;

• теперь в левой части окна нужно включить вкладку Проект, где появится название проекта (папка); если нажать на правую кнопку мыши, появляется контекстное меню, в котором можно Создать файл (новый), Добавить к проекту (существующий файл), Удалить из проекта (файл, котоhttp://kpolyakov.narod.ru ПI. Разработка программ рый уже есть в проекте).

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

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

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

Начнем новый проект Bubble.dev и запишем его в отдельную папку. Создадим два новых файла:

main.cpp основная программа func.cpp вспомогательные функции Основная программа Файл main.cpp практически повторяет старую программу, но не содержит процедур.

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

void Draw ( int color );

int random(int n);

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

Программирование на языке Си Процедуры и функции Если просто поместить в файл func.cpp тексты функции random и всех процедур, при трансляции мы получим сообщения об ошибках, потому что 1) графические функции (setcolor и др.) неизвестны;

2) константа N, массивы X и Y, а также радиус пузырьков r неизвестны.

Чтобы убрать первую группу ошибок, нужно подключить заголовочный файл graphics.h.

Ошибки второго типа устраняются, если в начале файла func.cpp объявить все необходимые константы, переменные и массивы:

#include int X[N], Y[N], r = 3;

// random - случайные числа в интервале [0,n-1] int random(int n) { return rand() % n; } // Init – начальная случайная расстановка // Draw – рисование и стирание void Draw ( int color ) // Sdvig – перемещение вверх // Zamena – вместо вылетевших появляются новые void Zamena ()

Похожие работы:

«Пояснительная записка Краткая характеристика дисциплины 1.1 Рабочая программа дисциплины Уголовное право составлена в соответствии с государственным образовательным стандартом высшего профессионального образования по специальности 030501.65 Юриспруденция Цель дисциплины: помочь развитию юридического мышления студентов; привить навыки умело ориентироваться в вопросах квалификации преступлений; использовать в полном объеме накопленные знания в соответствующих областях своей юридической или иной...»

«МИНИСТЕРСТВО СЕЛЬСКОГО ХОЗЯЙСТВА РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования КУБАНСКИЙ ГОСУДАРСТВЕННЫЙ АГРАРНЫЙ УНИВЕРСИТЕТ РАБОЧАЯ ПРОГРАММА дисциплины Международные экономические отношения глобальной экономики для бакалавров направления 080100.62 Экономика подготовки Профиль Мировая экономика Факультет, на котором проводится обучение Экономический Кафедра – Экономики и внешнеэкономической разработчик деятельности...»

«2 СОДЕРЖАНИЕ I. Аналитическая часть 3 1. Общие сведения об образовательной организации 3 2. Образовательная деятельность 3 3. Научно-исследовательская деятельность 16 4. Международная деятельность 23 5. Внеучебная деятельность 23 6. Материально-техническое обеспечение 29 II. Результаты анализа показателей самообследования 34 3 1. Общие сведения об образовательной организации Полное наименование: Орский гуманитарно-технологический институт (филиал) федерального государственного бюджетного...»

«ПРАВИТЕЛЬСТВО САНКТ-ПЕТЕРБУРГА ПОСТАНОВЛЕНИЕ от 23 сентября 2010 года N 1256 О Программе гармонизации межкультурных, межэтнических и межконфессиональных отношений, воспитания культуры толерантности в Санкт-Петербурге на 2011-2015 годы (программа Толерантность) В целях совершенствования системы формирования толерантного сознания и поведения, воспитания культуры мира, обеспечения атмосферы межнационального мира и согласия и профилактики правонарушений в Санкт-Петербурге Правительство...»

«БЮЛЛЕТЕНЬ НОВЫХ ПОСТУПЛЕНИЙ (БИБЛИОГРАФИЧЕСКИЙ УКАЗАТЕЛЬ КНИГ, ПОСТУПИВШИХ В БИБЛИОТЕКУ в ноябре 2013 года) Автоматика Системы автоматического управления Архитектура Архитектура различных зданий Архитектурные формы Градостроительство Ландшафтная архитектура Вычислительная техника Вычислительные сети Защита информации Информатика Компьютерные программы Ноутбук Операционные системы Персональный компьютер Программное обеспечение Языки программирования Геодезия Инженерная геодезия Геология...»

«ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ Филиал ГОУ ВПО СГУТ и КД в г. Анапе Директор филиала И.И.Ашкинадзе Речевая коммуникация рабочая программа дисциплины (ОФО) Закреплена за кафедрой: Общих гуманитарных и социально-экономических дисциплин Специальность: Социально-культурный сервис и туризм Учебный план: 100103 Часов по ГОСу (из РУП): 140 140 Часов по рабочему учебному плану: Часов по прим. программе: Часов по рабочей программе: Часов на самостоятельную работу по ППД: Часов на самостоятельную...»

«1 Пояснительная записка (8 класс) Тематическое планирование по истории России и Всеобщей истории для 8 класса составлено на основе содержания Федерального компонента Государственного образовательного стандарта, Базисного учебного плана 2004 года и Государственных программ по истории. На изучение истории в 8 классе отводится 70 часов, т. е. 2 часа в неделю. В программе сочетаются два курса – истории России и Всеобщей истории; изучение курсов последовательное: I полугодие – Всеобщая история – 30...»

«ОБ ИТОГАХ РЕАЛИЗАЦИИ В 2013 ГОДУ ОРГАНАМИ УПРАВЛЕНИЯ МОЛОДЕЖНОЙ ПОЛИТИКОЙ ГОРОДСКОГО ОКРУГА И МУНИЦИПАЛЬНЫХ РАЙОНОВ ОБЛАСТИ ПРИОРИТЕТНЫХ НАПРАВЛЕНИЙ ГОСУДАРСТВЕННОЙ МОЛОДЕЖНОЙ ПОЛИТИКИ Реализация деятельности по молодежной политике в Новгородской области осуществляется в соответствии с федеральными нормативноправовыми документами, программами и стратегиями развития. Основополагающими документами для организации работы с молодежью являются Стратегия государственной молодежной политики в...»

«Московский государственный технический университет имени Н.Э. Баумана НАУЧНО-ОБРАЗОВАТЕЛЬНОЕ СОРЕВНОВАНИЕ ШАГ В БУДУЩЕЕ, МОСКВА Пятнадцатая научная конференция молодых исследователей ШАГ В БУДУЩЕЕ, МОСКВА – 2012 СБОРНИК АННОТАЦИЙ Том II МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ имени Н.Э. БАУМАНА ЦЕНТР ДОВУЗОВСКОЙ ПОДГОТОВКИ НАПРАВЛЕНИЕ ШАГ В БУДУЩЕЕ, МОСКВА РОССИЙСКОЙ НАУЧНО-СОЦИАЛЬНОЙ ПРОГРАММЫ ДЛЯ МОЛОДЕЖИ И ШКОЛЬНИКОВ ШАГ В БУДУЩЕЕ АННОТАЦИИ НАУЧНО-ИССЛЕДОВАТЕЛЬСКИХ РАБОТ

«ПОЯСНИТЕЛЬНАЯ ЗАПИСКА Программа вступительного испытания по конституционному праву составлена на основе федерального государственного образовательного стандарта высшего профессионального образования по направлению подготовки 030900.62 Юриспруденция (квалификация (степень) бакалавр), утвержденного приказом Министерства образования и науки Российской Федерации от 4 мая 2010 г. № 464. Для успешного освоения магистерской программы поступающие на базовом уровне в области конституционного права...»

«ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ГОРОДА МОСКВЫ СРЕДНЯЯ ОБЩЕОБРАЗОВАТЕЛЬНАЯ ШКОЛА № 718 ЗЕЛЕНОГРАДСКОГО ОКРУЖНОГО УПРАВЛЕНИЯ ОБРАЗОВАНИЯ ДЕПАРТАМЕНТА ОБРАЗОВАНИЯ ГОРОДА МОСКВЫ РАБОЧАЯ ПРОГРАММА по географии Класс 6 (2 часа в неделю) Составитель: учитель географии Тимохина Е.И. 2013-2014 учебный год Пояснительная записка Рабочая программа разработана на основе: стандарта основного общего образования по географии (базовый уровень), примерной программы основного общего...»

«ВВЕДЕНИЕ Вертикальное электрическое зондирование геологической среды (ВЭЗ) постоянным током (глубины исследований до нескольких сот метров) относится к широко применяемым методам электроразведки. За последние 50 лет развитие этого метода прошло через три этапа, каждый из которых характеризуется своим представлением о строении изучаемых объектов, уровнем теоретических разработок, техническими возможностями интерпретации. На начальном этапе (40-е - начало 70-х годов) использовались модели...»

«МИНИСТЕРСТВО СЕЛЬСКОГО ХОЗЯЙСТВА РФ Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования Кубанский государственный аграрный университет УЧЕБНО-МЕТОДИЧЕСКИЙ КОМПЛЕКС по дисциплине Б1.В.ДВ.4Введение в специальность Код и направление 111100.62 Зоотехния подготовки Профиль нет подготовки Квалификация бакалавр (степень) выпускника Зоотехнологии и менеджмента Факультет Ведущий Кощаев Андрей Георгиевич преподаватель Кафедра-разработчик Биотехнологии,...»

«АННОТАЦИИ РАБОЧИХ ПРОГРАММ ДИСЦИПЛИН УЧЕБНОГО ПЛАНА ПО НАПРАВЛЕНИЮ ПОДГОТОВКИ 060101 ЛЕЧЕБНОЕ ДЕЛО С.1. ГУМАНИТАРНЫЙ, СОЦИАЛЬНЫЙ И ЭКОНОМИЧЕСКИЙ ЦИКЛ Аннотация рабочей программы дисциплины Б.1 Философия Цель изучения Развитие у студентов интереса к фундаментальным знаниям, дисциплины стимулирование потребности к философским оценкам исторических событий и фактов действительности, усвоение идеи единства мирового историко-культурного процесса при одновременном признании многообразия его форм....»

«МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ МИНИСТЕРСТВО ИНОСТРАННЫХ ДЕЛ РОССИЙСКОЙ ФЕДЕРАЦИИ УТВЕРЖДАЮ ЗАМЕСТИТЕЛЬ МИНИСТРА ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ В.Д.ШАДРИКОВ п/п “ 14 “ марта 2000 г. Номер государственной регистрации 42 мжд/сп _ ГОСУДАРСТВЕННЫЙ ОБРАЗОВАТЕЛЬНЫЙ СТАНДАРТ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ Специальность 030602 – СВЯЗИ С ОБЩЕСТВЕННОСТЬЮ Квалификация Специалист по связям с общественностью Вводится с момента утверждения Москва 1. ОБЩАЯ ХАРАКТЕРИСТИКА СПЕЦИАЛЬНОСТИ...»

«СЕВЕРО-ВОСТОЧНОЕ ОКРУЖНОЕ УПРАВЛЕНИЕ ОБРАЗОВАНИЯ ДЕПАРТАМЕНТА ОБРАЗОВАНИЯ ГОРОДА МОСКВЫ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ГОРОДА МОСКВЫ ГИМНАЗИЯ №1539 129626, г. Москва, ул. Староалексеевская, дом 1, E-mail: [email protected] телефон/факс: (495) 687-44-06 ОКПО 26443568, ОГРН 1027739445645, ИНН/КПП 7717082680/771701001 РАБОЧАЯ ПРОГРАММА ПО РУССКОМУ ЯЗЫКУ, ФГОС 6 КЛАСС на 2013-2014 учебный год Автор-составитель: Чубарова Галина Георгиевна учитель русского языка и...»

«МИНИСТЕРСТВО СЕЛЬСКОГО ХОЗЯЙСТВА РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования Саратовский государственный аграрный университет имени Н.И. Вавилова СОГЛАСОВАНО УТВЕРЖДАЮ Заведующий кафедрой Декан факультета _ /Молчанов А.В./ /Васильев А.А./ _ 20 г. 30 августа 2013 г. РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) ОСНОВЫ УПРАВЛЕНИЯ Дисциплина ВОДНЫМИ БИОРЕСУРСАМИ 111400.68 Водные биоресурсы и Направление подготовки аквакультура...»

«МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ Московский государственный горный университет Кафедра технологии, механизации и организации открытых горных работ УТВЕРЖДАЮ Проректор по методической работе и качеству образования В. Л. Петров _2011 г. РАБОЧАЯ УЧЕБНАЯ ПРОГРАММА ПО ДИСЦИПЛИНЕ СД.Ф.15. ТЕХНОЛОГИЯ ГОРНОГО ПРОИЗВОДСТВА СД.Ф.15.01. ТЕХНОЛОГИЯ ОТКРЫТЫХ ГОРНЫХ РАБОТ Направление подготовки 130400...»

«Основные итоги деятельности Министерства образования и науки Кабардино-Балкарской Республики в 2012-2013 учебном году и задачи на 2013-2014 учебный год Содержание Раздел I. Характеристика деятельности системы образования Кабардино-Балкарской Республики Раздел II. Обеспечение доступности и качества образовательных услуг 2.1. Дошкольное образование 2.2. Общее образование 2.3. Основные итоги проведения ЕГЭ в 2013 году 2.4.Специальное образование и обеспечение социальных гарантий отдельным...»

«ПРОГРАММА ВСТУПИТЕЛЬНОГО ЭКЗАМЕНА ПРИ ПРИЕМЕ НА ПОДГОТОВКУ НАУЧНО-ПЕДАГОГИЧЕСКИХ КАДРОВ В АСПИРАНТУРЕ. ПО СПЕЦИАЛЬНОСТИ 14.03.06 – ФАРМАКОЛОГИЯ, КЛИНИЧЕСКАЯ ФАРМАКОЛОГИЯ История фармакологии. Определение фармакологии, ее место среди других медицинских и биологических наук. Основные этапы развития фармакологии. Развитие лекарствоведения в России. Рукописные травники и лечебники. Первые аптеки. Учреждение Аптекарского приказа. Издание первой фармакопеи. Создание руководств по фармакологии (Н....»






 
2014 www.av.disus.ru - «Бесплатная электронная библиотека - Авторефераты, Диссертации, Монографии, Программы»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.