Реферат: Помощь в обучении программированию - текст реферата. Скачать бесплатно.
Банк рефератов, курсовых и дипломных работ. Много и бесплатно. # | Правила оформления работ | Добавить в избранное
 
 
   
Меню Меню Меню Меню Меню
   
Napishem.com Napishem.com Napishem.com

Реферат

Помощь в обучении программированию

Банк рефератов / Программирование

Рубрики  Рубрики реферат банка

закрыть
Категория: Реферат
Язык реферата: Русский
Дата добавления:   
 
Скачать
Архив Zip, 33 kb, скачать бесплатно
Обойти Антиплагиат
Повысьте уникальность файла до 80-100% здесь.
Промокод referatbank - cкидка 20%!

Узнайте стоимость написания уникальной работы



Наше предложение для тех, кто хочет научиться программировать на Delphi, изучая исходники других программ!

Вы можете бесплатно скачать саму игру (ТЕТРИС), но обязаны заплатить 5 долларов за исходник программы. Вы получаете полный текст программы на Delphi и комментарии к ней! Всего за 5 долларов вы сможете изучить текст самой известной программы и понять, как создаются игры, такие как Tetris!

Мы дадим вам математический алгоритм программы! Теперь вы станете намного опытнее и сможете самостоятельно создавать программы и зарабатывать на этом деньги как в реальной жизни, так и в интернете!

Избегайте своих ошибок, мы научились правильно программировать и поможем
научить этому вас!

www.tetriswithsource.com

Описание модулей

TetrisP - Основной файл проекта

Tetris00 - Модуль содержит основную форму проекта (TMainForm). Производит связку между нажатиями горячих клавиш и кнопок панели управления с вызовом процедур обработки соответствующих событий находящихся в модуле Tetris02 и вызовам процедур прорисовки поля.

Tetris01 - Модуль содержит определение ячейки поля (TFieldCell), как записи о цвете и номере отображаемой в ячейке текстуры. А также реализацию игрового поля (класс TField) - позволяющего проводить отрисовку и простейшие операции над игровым полем.

Tetris02 - Модуль содержит реализацию алгоритма игры (класс TTetrisGame), обрабатывает события от таймера, ведет статистику (время игры, количество выпущенных фигур, удаленных линий). Создает фигуру случайным образом фигуру которая будет активной в течении следующего промежутка времени и производит с ней непосредственное взаимодействие. Отлавливает все логические ошибки происходящие во время игры и связанные например с попыткой запустить уже активную игру.

Tetris03 - Модуль содержит методы по работе со всеми фигурами используемыми в проекте и учитывает все их особенности реализации. (классы фигур TXXXXFigure).

Tetris04 - Модуль содержит определение констант используемых в программе и процедуру генерации цвета случайным образом с учетом того что цвет не должен будет сливаться с пустой ячейкой поля.

Tetris05 - Модуль содержит форму настроек (TOptionsForm) позволяющую отображать список существующих фигур читать и устанавливать их свойство Enabled.

Tetris06 - Модуль содержит определение структуры (TFigureInfo) для хранения необходимой информации о существующей фигуре, массив записей этого типа с описанием всех фигур проекта (для возможности отображения в форме настроек и выбора фигуры случайным образом), а также методы по доступу к этим данным

Tetris07 - Модуль обеспечивает многоязыковую поддержку. Он содержит в себе определение всех строковых констант используемых в сообщениях проекта и позволяет создавать исполнимый файл с сообщениями как на английском так и на русском языке.


Описание классов

TMainForm - класс основной формы проекта. Включает в себя такие объекты, как

MainToolBar

панель инструментов (TToolBar*)

Расположена на форме в правой части и содержит в себе набор кнопок (btnXXXX)

btnXXXX

кнопки (TButton*)

Расположены на панели инструментов и предназначены для удобного вызова заданных процедур

MainImageList

список изображений (TImageList*)

Содержит изображения иконок используемых кнопками (btnXXXX)

MainActionList

список действий (TActionList*)

Содержит перечень действий (actXXXX) используемый программой

actXXXX

действия (TAction*)

Предназначена связи кнопок (btnXXXX), горячих клавиш и вызова заданных процедур

MainPanel

панель (TPanel*)

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

MainImage

изображение (TImage)*

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

MainStatusBar

строка состояния (TStatusBar)*

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

fReg

реестр (TRegistryDef*)

Предназначена для работы с реестром - сохранением настроек программы между сеансами работы

fField

игровое поле (TField)

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

fOptionsForm

форма настроек (TOptionsForm)

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

fGame

игра (TTetrisGame)

Реализует алгоритм игры

(* - помечены стандартные объекты Delphi)


TFieldCell - запись содержащая информацию об каждой ячейке игрового поля.

Color

longint

Цвет в ячейке если не используется текстура

FigureNum

integer

Номер фигуры которая попадает в данную ячейку. 0 - если фигуры нет

TextureNum

smallint

Номер текстуры в ячейке. Отрицательные числа соответствуют текстурам бомб


TField - класс игровое поле. Включает в себя такие объекты, как

fBomb

Список объектов (TObjectList)

Предназначен для хранения списка текстур бомб

fTexture

Список объектов (TObjectList)

Предназначен для хранения списка текстур непустых клеток

fImage

Изображение (TImage)

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

fFieldMatrix

Матрица (TFieldMatrix)

Предназначена для хранения массива с данными типа TFieldCell о клетках.

поля:

fFieldSize

Размер ячейки (integer)

Хранит размер ячейки поля в пикселах

свойства:

FieldCountX

Число ячеек по X (integer)

Позволяет определить размер поля в количестве ячеек вдоль X

FieldCountY

Число ячеек по Y (integer)

Позволяет определить размер поля приспособленный для игры в количестве ячеек вдоль Y *

FieldRealCountY

Число ячеек по Y (integer)

Позволяет определить фактический размер поля в количестве ячеек вдоль Y

FieldVisibleCountY

Число ячеек по Y (integer)

Позволяет определить видимый размер поля в количестве ячеек вдоль Y

* Фактически размерность массива по X совпадает с тем что отображается на экране, по Y ситуация другая. Фактически в памяти поле представлено по Y с большим размером (+ReservedLines). Это вызвано необходимостью хранить данные о фигуре которая только начала падать и находится вне пределов видимости в верних строках и тем что именно по занятости хотя бы одной ячейки верхних ReservedLines строк определяется окончена игра или нет. Фактический размер определяется FieldRealCountY, допустимый для нахождения фигур FieldCountY. В то же время на экране может отображаться любое число строк от 1 до FieldRealCountY. Поэтому присутствует еще одно свойство FieldVisibleCountY, которое как раз и определяет сколько строк видно пользователю. В частности этот момент использовался при отладке - когда на экране было все поле целиком, фигура начинала падать не с самого верха и игра заканчивалась когда фигура застревала на верхних ReservedLines строках, а не обязательно достигнув верхней границы.

методы:

ClearAll

Очистка игрового поля, путем занесения 0 во все ячейки

ClearCell (x,y:integer)

Очистка ячейки (x,y) путем занесения 0 в эту ячейку

SetAtCell (x,y:integer;const Cell:TFieldCell)

Установка в ячейку (x,y) значения Cell. Т.е. логическое получение занятой ячейки

GetAtCell (x,y:integer)

Получение значения из ячейки (x,y)

ClearAt (x,y:integer;CurCell:PFieldCell=nil)

Определяет свободна ли ячейка (x,y) логически и если указан CurCell то ячейка считается свободной даже когда там находится значения совпадающее с CurCell.

DelFullLine

Удаление одной из полностью занятых строк.

IsOverflow

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

DeleteFigure(FigureNum:integer)

Удаление с поля фигуры с номером FigureNum. Используется при падении Бомбы-2

DrawToImage

Прорисовка текущего состояния поля


Игра может находится в одном из логических состояний:

gmNothing

Игра не начата

gmActive=1

Игра идет

gmSuspend=2

Игра приостановлена

gmEnded=3

Игра завершена

gmAborted=4

Игра прервана пользователем

gmGraphicError

Игра завершена с ошибкой во время рисования

gmCreateFigureError

Игра завершена с ошибкой создания фигуры


TTetrisGame - класс реализующий алгоритм игры. Включает в себя такие объекты, как:

fFiguresEnum

управление набором фигур (TFigureEnumManager)

Реализует хранение и доступ к массиву существующих фигур

fField

игровое поле (TField)

Предназначено для хранения указателя на объект игровое поле

fCurrentFigure

текущая фигура (TBaseFigure)

Предназначено для хранения указателя на текущую фигуру и проведения с ней всяких операций типа вращения

fTimer

таймер (TTimer*)

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

поля:

fQuickCoef

коэффициент ускорения (integer)

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

fInProcess

статус игры (byte)

Предназначено для хранения статуса игры

fFigNum

количество фигур (integer)

Предназначено для хранения числа выпущенных фигур и отображении в статистике

fTimerClicks

время игры (integer)

Предназначено для хранения времени игры и отображении в статистике

fDeletedLines

число удаленных линий (integer)

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

fOldTimer

интервал таймера (integer)

Интервал таймера до ускорения или 0 если таймер находится не в ускоренном режиме

события:

TimerTick(Sender:TObject)

Событие от таймера. Происходит через заданный интервал времени

методы:

SetInProcess(AInProcess:byte)

Установка статуса игры. Использование данного метода, а не непосредственный доступ к полю гарантирует установку только допустимых значений и своевременное изменение строки статуса в основной форме

LogicalError(ErrMsg:PChar)

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

InitCurrentFigure;

Создание текущей фигуры случайным образом. Указатель на текущую фигуру остается в fCurrentFigure

Start

Запуск игры или продолжение после приостановки

Stop

Остановка игры

Pause

Приостановка игры

NotActive:boolean

Проверяет не находиться ли игра в состоянии игры, если да выдается сообщение

IsGoing(ShowMsg:boolean=true)

Проверяет не активна ли игра. если нет и ShowMsg то выдается сообщение

ClearAll

Вызов очистки игрового поля, обнуление fFigNum, fDeletedLines, fTimerClicks

GetTextStatus:string

Получение статистики по игре в текстовом виде для вывода на экран

RotateAgainst

Проверка активна ли игра и есть ли текущая фигура, если да то происходит поворот фигуры

RotateAlong

MoveLeft

Проверка активна ли игра и есть ли текущая фигура, если да то происходит сдвиг фигуры

MoveRight

GetInfo

Получения статуса игры в текстовом виде для отображения в строке статуса

DoFall

Реализация метода падения (вызывается по клавиши вниз)

StartQuickFall(Quick:boolean=true)

Если Quick то установка режима ускоренного падения, нет возврат к обычному

* Основными процедурами являются: TimerTick, DoFall

TimerTick

Реакцию на событие от таймера можно представить следующим образом:

Проверить есть текущая фигура Assigned(fCurrentFigure)

Если есть проверить может ли она сдвинуться на клетку вниз fCurrentFigure.CanDown

Если может, то сдвинуть fCurrentFigure.Down

Иначе обрабатываем ситуацию упал (для бомб падение предполагает очистку других ячеек поля) fCurrentFigure.Falled

Если нет, то проверяется заполненность хотя бы одной из линий поля полностью

Если таковая находится то она удаляется fField.DelFullLine

Иначе проверяется заполненность ячеек из вернего уровня fField.IsOverflow

Если хотя бы одна занята - игра заканчивается

Иначе создается очередная фигура случайным образом InitCurrentFigure

DoFall

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

Проверить есть текущая фигура Assigned(fCurrentFigure)

Если есть то пока она может сдвигаться вниз (fCurrentFigure.CanDown)

сдвигать ее вниз (fCurrentFigure.Down)

обрабатываем ситуацию упал (для бомб падение предполагает очистку других ячеек поля) fCurrentFigure.Falled

RotateAgainst, RotateAlong

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

Проверить идет ли игра и есть текущая фигура IsGoing and Assigned(fCurrentFigure)

Если есть то повернуть фигуру fCurrentFigure:=fCurrentFigure.Rotate

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

TBaseFigure - класс базовая фигура позволяющий задать очертания фигуры и методы по ее перемещению, повороту. Включает в себя следующие поля

Cell

ячейка (TFieldCell)

Описание основной ячейки - цвет, текстура, номер находящийся в ней.

Xbase

координата по X (integer)

Координаты базовой точки фигуры на поле

Ybase

координата по Y (integer)

DownLimit

отступ снизу (integer)

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

RightLimit

отступ справа (integer)

LeftLimit

отступ слева (integer)

методы:

Rotate(AlongClock:boolean)

Реализует поворот фигуры по или против часовой стрелки

CanDown

Определяет - может ли фигура упасть на одну клетку вниз

Down

Реализует фактического падения фигуры

Move(Left:boolean;AField:TField)

Реализует фактическое перемещение фигуры вправо или влево.

Falled

Реализует реакцию после того как фигура упала. Перекрыто в бомбе и очищает клетку под ней

MakeCurrent

Реализует фактическое рисование фигуры на поле

IsEmptyCell

Определяет свободна ли клетка (i,j) на поле

IsEmptyAndOnFieldCell

Определяет входит ли клетка (i,j) на поле и свободна ли она. При таком подходе работает быстрей чем два вызова - отдельная процедура "входит ли на поле" и "свободная ли она"

ClearCell(i,j:integer)

Реализует очистку одной клетки (i,j)принадлежащей фигуре

FillCell(i,j:integer)

Реализует рисование в определенную клетку (i,j)

AfterInit

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

CheckEach(Proc:TCheckProc;Xabs,Yabs:integer)

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

ClearCurrent

Обеспечивает стирание фигуры с поля (перед шагом вниз/влево/вправо/падения)

GetTwinFigure(AlongClock:boolean)

Обеспечивает получение фигуры-близнеца. Т.е той фигуры, которая получается после поворота данной под углом 90 или -90 градусов. Перекрыто в конкретных потомках. Если нет, то поворот не осуществляется. Например для квадрата.

SetBaseCell

Обеспечивает установку конкретного номера текстуры в потомке, таким образом обеспечивается одна фигура, один цвет.

Основными методами являются

Rotate

Получить фигуру близнец. (GetTwinFigure)

Если фигура близнец есть (TwinConstructor<>nil)

то создаем фигуру близнец на основе своих параметров TwinConstructor.CreateTwin

проверяем не залазит ли созданная фигура на клетки занятые другими фигурами Twin.CheckEach

Если не залазит то

Очистить все клетки занятые текущей фигурой (ClearCurrent)

Нарисовать во все клетки фигуры близнеца (Twin.MakeCurrent)

Возвратить как результат выполнения функции созданного близнеца (Rotate:=Twin)

Освободить ресурсы занятые текущей фигурой (Free)

Иначе если залазит то удалить созданного близнеца (Twin.Free)

Возвратить как результат выполнения функции себя, так поворот не удался и фигура падает в прежнем виде (Rotate:=self)

CanDown

Проверить не выходит ли нижняя граница фигуры за пределы поля (Ybase>DownLimit) и проверить не попадают ли в случае перемещения вниз клетки данной фигуры на клетки другой фигуры CheckEach(IsEmptyCell,Xbase,Ybase-1)

Down

Очистить все клетки занятые фигурой (ClearCurrent)

Уменьшить координату по Y базовой точки

Нарисовать во все клетки фигуры (MakeCurrent)

Move

Если движение фигуры налево

Проверить не выходит ли левая граница фигуры за пределы поля (Xbase>LeftLimit) и проверить не попадают ли в случае перемещения клетки данной фигуры на клетки другой фигуры CheckEach(IsEmptyCell,Xbase-1,Ybase)

Если не попадает то

Очистить все клетки занятые фигурой (ClearCurrent)

Уменьшить координату по X базовой точки

Нарисовать во все клетки фигуры (MakeCurrent)

Если движение фигуры направо

Проверить не выходит ли правая граница фигуры за пределы поля (Xbase

Если не попадает то

Очистить все клетки занятые фигурой (ClearCurrent)

Увеличить координату по X базовой точки

Нарисовать во все клетки фигуры (MakeCurrent)

MakeCurrent

Для всех клеток принадлежащих фигуре вызвать метод по рисованию ячейки (FillCell)

ClearCurrent

Для всех клеток принадлежащих фигуре вызвать метод по стиранию ячейки (ClearCell)



Используются следующие потомки класса TBaseFigure

TOneCellFigure

Одноклеточная фигура

TBombFigure

Бомба

TBombFigureExtra

Бомба-2

TTwoCellFigureH

Двухклеточная фигура расположенная горизонтально

TTwoCellFigureV

Двухклеточная фигура расположенная вертикально

TThreeCellFigure13

Трехклеточная прямая фигура расположенная горизонтально

TThreeCellFigure20

Трехклеточная прямая фигура расположенная вертикально

TThreeCellFigure12

Трехклеточный уголок. Соответствие цифр расположению фигуры на площади следующее:

0

3 1

2

TThreeCellFigure23

TThreeCellFigure30

TThreeCellFigure01

TFourCellBend0145

Четырехклеточный изгиб извилистая дорога. Соответствие цифр расположению фигуры на площади следующее: 0 1 2

3 4 5

6 7 8

TFourCellBend1436

TFourCellBend0347

TFourCellBend3412

TFourCellG1036

Четырехлеточная фигура типа буквы L или Г. Соответствие цифр расположению фигуры на площади следующее: 0 1 2

3 4 5

6 7 8

TFourCellG1476

TFourCellG0125

TFourCellG0345

TFourCellG0147

TFourCellG0367

TFourCellG3012

TFourCellG3452

TFourCellT0

Четырехлеточная фигура типа буквы Т. Соответствие цифр расположению выпирающей клетки фигуры на площади следующее:0

3 1

2

TFourCellT1

TFourCellT2

TFourCellT3

TFourCellFigureH

Четырехклеточная прямая фигура расположенная горизонтально

TFourCellFigureV

Четырехклеточная прямая фигура расположенная вертикально

TFourCellBox

Квадрат 2х2

Базовая точка


Перекрытие виртуальных методов для реализации конкретной фигуры (например TThreeCellFigure23) осуществляется следующим образом:

AfterInit

LeftLimit:=1

DownLimit:=1

Установка значений отступов для данной фигуры. влево на единицу и вниз на единицу

CheckEach

Proc(Xabs,Yabs-1)and Proc(Xabs,Yabs)and

Proc(Xabs-1,Yabs)

Вызов процедуры Proc для конретных ячеек. Обычно вызываются процедуры для этих ячеек по рисованию, стиранию, проверки отсутствия в данной ячейке другой фигуры.

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

1) на одну ниже по Y,

2) в том же месте что и базовая

3) на одну левее по X

GetTwinFigure

if AlongClock then

GetTwinFigure:=TThreeCellFigure30

else

GetTwinFigure:=TThreeCellFigure12

Если вращение вдоль часовой стрелки то фигурой-близнецом будет TThreeCellFigure30

Если против часовой то TThreeCellFigure12

SetBaseCell

Cell.Color:=RandomColors[25];

Cell.TextureNum:=26

Установка определенных значений для текста и текстуры фигуры данного типа

Для остальных фигур перекрытие осуществляется аналогично.


TOptionsForm - класс формы настроек. Включает в себя такие объекты как:

MainPageControl;

Закладки (TPageControl*)

Расположен на форме настроек, включает в себя закладки (tabFigures)

tabFigures

Закладка (TTabSheet*)

Расположена на MainPageControl, содержит на себе (FiguresListView)

FiguresListView

Просмотр списков (TListView*)

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

FiguresImageList

список изображений (TImageList*)

Содержит список изображений используемый списком (FiguresListView) для отображения пиктограмм фигур

(* - помечены стандартные объекты Delphi)

методы:

InitData

Помещает данные о разрешенных фигурах в список, отображаемый на форме

DoneData

Берет данные о разрешенных фигурах из списка, отображаемого на форме


TFigureInfo - запись содержащая информацию о фигуре используемой при случайной генерации

Fig

TFigure

Тип одной из существующих фигур

Enabled

Boolean

Определяет разрешено ли создание данной фигуры

FigureHint

string

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

Icon

integer

Индекс иконки в списке иконок для отображения в форме настроек


TFigureEnumManager - класс управляющий массивом записей типа TFigureInfo. Включает в себя следующие методы:

GetExistingFigure(Index:integer)

Получение информации об определенной фигуре

LoadFiguresInfo(Reg:TRegistryDef)

Запись в реестр (registry) для сохранения настроек между сеансами работы

SaveFiguresInfo(Reg:TRegistryDef)

Чтение из реестра

GetIndexByName(const Name:ShortString)

Получение индекса фигуры в массиве по ее имени

GetAmount

Получение общего числа фигур в массиве

CreateRandomFigure

Получение фигуры случайным образом



1Архитектура и строительство
2Астрономия, авиация, космонавтика
 
3Безопасность жизнедеятельности
4Биология
 
5Военная кафедра, гражданская оборона
 
6География, экономическая география
7Геология и геодезия
8Государственное регулирование и налоги
 
9Естествознание
 
10Журналистика
 
11Законодательство и право
12Адвокатура
13Административное право
14Арбитражное процессуальное право
15Банковское право
16Государство и право
17Гражданское право и процесс
18Жилищное право
19Законодательство зарубежных стран
20Земельное право
21Конституционное право
22Конституционное право зарубежных стран
23Международное право
24Муниципальное право
25Налоговое право
26Римское право
27Семейное право
28Таможенное право
29Трудовое право
30Уголовное право и процесс
31Финансовое право
32Хозяйственное право
33Экологическое право
34Юриспруденция
 
35Иностранные языки
36Информатика, информационные технологии
37Базы данных
38Компьютерные сети
39Программирование
40Искусство и культура
41Краеведение
42Культурология
43Музыка
44История
45Биографии
46Историческая личность
47Литература
 
48Маркетинг и реклама
49Математика
50Медицина и здоровье
51Менеджмент
52Антикризисное управление
53Делопроизводство и документооборот
54Логистика
 
55Педагогика
56Политология
57Правоохранительные органы
58Криминалистика и криминология
59Прочее
60Психология
61Юридическая психология
 
62Радиоэлектроника
63Религия
 
64Сельское хозяйство и землепользование
65Социология
66Страхование
 
67Технологии
68Материаловедение
69Машиностроение
70Металлургия
71Транспорт
72Туризм
 
73Физика
74Физкультура и спорт
75Философия
 
76Химия
 
77Экология, охрана природы
78Экономика и финансы
79Анализ хозяйственной деятельности
80Банковское дело и кредитование
81Биржевое дело
82Бухгалтерский учет и аудит
83История экономических учений
84Международные отношения
85Предпринимательство, бизнес, микроэкономика
86Финансы
87Ценные бумаги и фондовый рынок
88Экономика предприятия
89Экономико-математическое моделирование
90Экономическая теория

 Анекдоты - это почти как рефераты, только короткие и смешные Следующий
Сегодня пришло смс с номера мамы:
"Привет, положи пожалуйста, мне деньги на телефон. Мама".
Я минут 5 думал, как именно меня пытаются развести...
Anekdot.ru

Узнайте стоимость курсовой, диплома, реферата на заказ.

Обратите внимание, реферат по программированию "Помощь в обучении программированию", также как и все другие рефераты, курсовые, дипломные и другие работы вы можете скачать бесплатно.

Смотрите также:


Банк рефератов - РефератБанк.ру
© РефератБанк, 2002 - 2017
Рейтинг@Mail.ru