Литература
Стефен Моррис. Объектно-ориентированное программирование. Серия «Enter». – Ростов-на-Дону: «Феникс», 1997.
Скляров В.А. Язык С++ и объектно-ориентированное программирование. – Мн.: Выш. шк., 1997.
Фаронов В.В. Турбо Паскаль 7.0. Начальный курс/ Учебное пособие. – М.: «Нолидж», 1997.
Бондарев В.М., Рублинецкий В.И., Качко Е.Г. Основы программирования. – Харьков: Фолио; Ростов н/Д: Феникс, 1998.
Марченко А.И., Марченко Л.М. Программирование в среде TurboPascal7.0. – К.: ВЕК+, М.: ДЕСС, 1999.
Грызлов В.И., Грызлова Т.П. Турбо Паскаль 7.0 – М.: ДМК, 1998.
Бабушкина И. А. Практикум по объектно-ориентированному программированию./ Бабушкина И. А., Окулов С. М. – М.: БИНОМ, Лаборатория Знаний, 2004. – 366 с.
Задания по объектно-ориентированному программированию Минимальный уровень:
Для получения зачета по теме «Объектно-ориентированное программирование» необходимо выполнить следующие задания:
Набрать, отладить и проверить работу программы «Аквариум»;
Модифицировать программу, добавив метод движения для рыб;
«Поселить» в аквариуме созданный вами объект, придумать его свойства и методы, а также взаимодействие с рыбами.
Максимальный уровень:
Для получения зачета на этом уровне вам необходимо самостоятельно решить одну из предложенных задач, используя описание объектов и принципы ООП.
Задачи:
Решить задачу «Аквариум» в графическом режиме, используя следующие рекомендации для развития задачи и изменения законов обитания рыб:
определить объект «аквариумная рыбка», имеющий свойства (координаты, скорость движения, размер, цвет, направление движения) и методы Init (устанавливает значения полей и рисует рыбу на экране методом Draw), Draw (рисует рыбу в виде уголка с острием в точке с координатами (x, y) и направленного острием по ходу движения), Look (проверяет несколько точек на линии движения рыбы. Если хоть одна точка отличается по цвету от воды, возвращаются ее цвет и расстояние до рыбы), Run (перемещает рыбу в текущем направлении на расстояние, зависящее от скорости. Иногда случайным образом меняет направление движения рыбы. Если рыба видит препятствие, направление движения меняется, пока препятствие не исчезнет из поля зрения рыбы).
объединить «съедобных» рыб и «хищников» в две стаи. Позвольте пользователю пополнять стаи, вводя рыб с клавиатуры.
позволить «хищникам» поедать «съедобных» рыб как только они их увидят или догонят (на ваше усмотрение).
Составить программу для игры в шашки. Шашка каждого цвета выступает в качестве отдельного объекта. Характеристики шашки – цвет и позиция на доске. Методы – перемещение. Не забудьте о таких объектах, как «дамки».
Волчий остров (Ван Тассел Д. Стиль, разработка, эффективность, отладка и испытание программ. М.: Мир, 1981.)
Волчий остров размером 20 * 20 заселен дикими кроликами, волками и волчицами. Имеется по несколько представителей каждого вида. Кролики довольно глупы: в каждый момент времени они с одинаковой вероятностью 1/9 передвигаются в один из восьми соседних квадратов (за исключением участков, ограниченных береговой линией) или просто сидят неподвижно. Каждый кролик с вероятностью 0.2 превращается в двух кроликов. Каждая волчица передвигается случайным образом, пока в одном из соседних восьми квадратов не окажется кролик, за которым она охотится. Если волчица и кролик оказываются в одном квадрате, волчица съедает кролика и получает одно "очко". В противном случае она теряет 0.1 "очка". Волки и волчицы с нулевым количеством очков умирают.
В начальный момент времени все волки и волчицы имеют 1 очко. Волк ведет себя подобно волчице до тех пор, пока в соседних квадратах не исчезнут все кролики; тогда если волчица находится в одном из восьми близлежащих квадратов, волк гонится за ней. Если волк и волчица окажутся в одном квадрате и там нет кролика, которого нужно съесть, они производят потомство случайного пола.
Запрограммируйте предполагаемую экологическую модель, понаблюдайте за изменением популяции в течение некоторого периода времени.
Задача об инфекции стригущего лишая (Ван Тассел Д. Стиль, разработка, эффективность, отладка и испытание программ. М.: Мир, 1981.)
Промоделируйте процесс распространения инфекции стригущего лишая по участку кожи размером n * n (n — нечетное) клеток. Предполагается, что исходной зараженной клеткой кожи является центральная. В каждый интервал времени пораженная инфекцией клетка может с вероятностью 0,5 заразить любую из соседних здоровых клеток. По прошествии шести единиц времени зараженная клетка становится невосприимчивой к инфекции, возникший иммунитет действует в течение последующих четырех единиц времени, а затем клетка оказывается здоровой. В ходе моделирования описанного процесса выдавать текущее состояние моделируемого участка кожи в каждом интервале времени, отмечая зараженные, невосприимчивые к инфекции и здоровые клетки.
Игра "Две лисы и 20 кур"
На поле указанной формы (см. рисунок ниже) находятся две лисы и 20 кур. Куры могут перемещаться на один шаг вверх, влево или вправо, но не назад и не по диагонали. Лисы также могут перемещаться только на один шаг, но также и вверх — как вниз, влево и вправо. Лиса может съесть курицу — как в игре в шашки: если в горизонтальном или вертикальном направлении за курицей на один шаг следует свободное поле, то лиса перепрыгивает через курицу и берет ее. Лисы всегда обязаны есть и, когда у них есть выбор, — они обязаны осуществлять наиболее длинное поедание. Если два приема пищи имеют одинаковую длину, осуществляется один из них — по выбору лисы.
Составить программу, которая играет за лис. Игрок перемещает кур. Партнеры играют по очереди, причем куры начинают. Они выигрывают партию, если девяти из них удается занять 9 полей, образующих верхний квадрат игры.
Начальное положение кур и лис изображено на рисунке.
|
|
|
|
| |||
|
|
|
| ||||
|
|
Л |
|
Л |
|
| |
К |
К |
К |
К |
К |
К |
К | |
К |
К |
К |
К |
К |
К |
К | |
|
К |
К |
К |
| |||
К |
К |
К |
|
Лисы выигрывают, если им удается съесть 12 кур, так как тогда оставшихся кур недостаточно, чтобы занять 9 верхних полей.
Морской бой
Составить программу, позволяющую играть в морской бой игроку с компьютером. Программа должна позволять расставлять корабли на поле 10 * 10, контролировать правильность их расстановки, делать противникам поочередно ходы и выдавать соответствующие информационные сообщения. Когда в качестве одного из игроков выступает компьютер, программа должна анализировать предыдущие ходы и следующий делать на основе проведенного анализа.