Реферат по предмету "Информатика, программирование"


Программа "Морской бой"

Введение
Программа «Морской бой» –чисто игровая программа, предназначена для удовлетворения игровых потребностейпользователя. Она требует использования мыши, так как только с ее помощьюпользователь может размещать на игровом поле корабли и «стрелять» по кораблям противника.
Постановказадачи: Разработать программу, реализующую игру «Морской бой» в режимепользователь – компьютер. В процессе реализации данной задачи использоватьосновные свойства объектно-ориентированного программирования (в обязательномпорядке создать несколько классов (свойство инкапсуляции), которые будутвзаимодействовать между собой и, если будет необходимо, использовать такжедругие свойства ООП).
Цель: Достичь реализацииданной задачи наиболее оптимальными методами и с минимальной тратой ресурсов.
Возможностипрограммы: С помощью данной программы пользователь может насладиться игрой«Морской бой» в режиме пользователь – компьютер.

Описание предметной области
Предметнаяобласть данного проекта – игра «Морской бой». Она реализуется с помощью нажатийна клавиши мыши (размещение кораблей и выстрелы по кораблям противника, удачныепопадания фиксируются желтым цветом).
Правила игрыследующие: в поле 10х10 пользователь расставляет свои корабли (корабли недолжны лежать друг на друге, стоять рядом, пересекаться). Точно так жекомпьютер на своем игровом поле расставляет свои корабли. Количество кораблей10, а именно: один четырехпалубный (одна палуба соответствует одной клеткеигрового поля), два трехпалубных, три двухпалубный и четыре однопалубных. Послерасстановки кораблей пользователь и компьютер поочередно «стреляют» по клеткамигрового поля противника. Если кому-либо из них удалось попасть во вражескийкорабль, то, согласно правилам, ход не переходит к противнику (если игрок попалв корабль противника, то он имеет право еще одного выстрела) до следующегопромаха. Победа достается тому, кто первым уничтожит все корабли противника.Ниже приводится диаграмма прецедентов, на которой изображены варианты действийдля пользователя и компьютера. Описание классов
 
С целью болееудобного проектирования, настройки, и разделения отдельных исполняемых операций,программа построена на классах, которые взаимодействуют между собой. Использованиеклассов дает улучшенной понимание кода, а значит настройку и последующуюмодификацию исходного кода программы.
В даннойпрограмме четко прослеживаются группы функций, которые из-за выполняемых нимиопераций стоит объединить в классы. Проанализировав предметную область программыможно выделить следующие классы:
-        Flot
-        AI
-        Referee
-        HandersOfEvents
Класс Flot – класс, который содержитданные о кораблях (количество кораблей, поле на котором следует размещатькорабли и т.д.);
Класс AI – так называемый классискусственного интеллекта, размещает корабли противника;
Класс Referee – наследник класса AI, который проверяетсостояние кораблей и флотов пользователя и компьютера;
Класс HandersOfEvents – наследник класса Referee. Это единственный классв данной программе, который взаимодействует с формой напрямую.
Также впрограмме используется структура Ship, которая содержит данные о количестве палубкорабля, расположении частей корабля, следит за состоянием корабля в целом. />// класс Flot
classFlot
{
public:
int i, j, n; // переменные,используемые в циклах
bool destroy; // флаг,проверяющий наличие флота
TImage *Im; // поле, накотором мы рисуем
Shipship[10]; // количество кораблей
Flot(TImage *I)
{
destroy= false;
Im= I;
n= 1;
for(i = 0; i
{
if(i
if(i
if(i == 0) n = 4;
ship[i].destroy= false;
ship[i].col_deck= n;
ship[i].decks= new bool[n];
ship[i].desp_of_part= new TPoint[n];
}
}
intGetStatus();
}; />// класс AI
classAI
{
public:
intGeneration (Flot *CPU, int col_ship, int col_deck); // размещение кораблей противника
};/> // класс Referee
classReferee: public AI
{
public:
inti, j, target_player, target_CPU;
boolnet1 [10] [10], net2 [10] [10], game_over;
Flot*player, *CPU;
Referee()
{
for(i = 0; i
for(j = 0; j
{
net1[i] [j] = true;
net2[i] [j] = true;
}
game_over= false;
target_player= 0;
target_CPU= 0;
}
intGoChecking (int x, int y, int n); // запуск функции проверки
int Check (bool net[10] [10], int x, int y); // проверкапопадания в старую или новую ячейку
int GoScaning (int x, int y, int n); // запуск функциисканирования
int Scan (Flot *fl, int x, int y); // сканирование(проверка) попадания в корабль
int Miss (int x, int y, int n); // отмечаниеячейки в которую попали (но не в корабль)
intEndRaund (int n); // конец игры
}; />// класс HandlersOfEvents
classHandlersOfEvents: public Referee
{
public:
boolplay;
intcol_deck, col_ship, i, j, k;
HandlersOfEvents(TImage *Im1, TImage *Im2)
{
play= false;
col_deck= 4; col_ship = 1;
player= new Flot(Im1);
CPU= new Flot(Im2);
}
intPlay (TImage *Im1, TImage *Im2);
intMove();
intDesposition (int x, int y, TMouseButton Button); // размещение кораблей
intDraw (String key, int x, int y, int n); // рисование
intShootPlayer (int x, int y, int n); // выстрел игрока
int Shoot (int x, int y); // выстрелкомпьютера
}; />// структураShip
struct Ship
{
bool destroy; // флагуничтожения корабля
int col_deck; // количествопалуб
bool *decks; // массив палуб
TPoint *desp_of_part; // расположениечастей (палуб) корабля
};
 Основные алгоритмы
Нижев виде схем Насси-Шнейдермана представлены алгоритмы основных функций,используемых в программе, а именно: Функция Draw (Рис. 3), Функция ShootPlayer (x, y, n) (Рис. 4), Функция Shoot (x, y, n) (Рис. 5). Функция Disposition или Generation (Рис. 6)
Определить значение key, x, y
/>/>                                                                                Key = промах
Да                                                                                                                                                                                Нет
Нарисовать промах в ячейке х, у
/>
/>
                                                                                       Кеу = попадание
Да                                                                                                                                                                              Нет Нарисовать в ячейке х, у подбитую палубу
/>/>                                                                      Кеу = нарисовать корабль
Да                                                                                                                                                                             Нет і от 1 до количество палуб
/>/>                       По вертикали
Да                                                      Нет            Рисовать палубу в ячейке х, у+і Рисовать палубу в ячейке х+і, у /> /> /> />
Рис. 3Функция DrawПроверить куда пришлось попадание
/>/>                                         Мимо
/>/>Нет                                                                                                                                                      Да Нарисовать след от выстрела
                                                               В цель
Да                                                                                                                         Нет Запомнить, что туда уже стреляли Нарисовать подбитую палубу Сообщить о попадании в расстрелянную ранее ячейку Запомнить, что туда уже стркляли
Рис. 4 Функция ShootPlayer (x, y, n)
Запомнить результата выстрела в ShootPlayer
/>/>                в ShootPlayer попадание
/>/>Да                                                                                                                                                                            Нет
Флот CPU уничтожен
Да                                                                         Нет бесконечно Генерация x, y, для CPU Конец раунда Выход Запомнить результат выстрела компьютера в ShootCPU Выход
/>/>в ShootCPU попадание
Да                                                                   Нет
/>/>Флот игрока
уничтожен
Да            Нет Прервать цикл Конец раунда Выход Выход
Рис. 5.Функция Shoot (x, y, n)
Количество палуб col_dec = 4
Количество кораблей col_ship = 1 col_ship /> i от 0 до 10 j от 0 до 10 j от 0 до col_dec
/>Может ли здесь находиться данная палуба?
Да                                                                                                                                Нет новые координаты корабля
col_ship = 1?
Да                                                                                                                                                         Нет col_dec = 3
/>/>                col_ship = 3?
Да                                                                                                                                                        Нет col_dec = 2
/>/>                col_ship = 6?
Да                                                                                                                                                        Нет col_dec = 1 col_ship = col_ship + 1
Рис. 6.Функция Disposition или GenerationТестирование
Чтобыпроверить корректность работы программы нужно провести тестирование. Бой спротивником продолжается до полной победы, т.е. пока не будут уничтожены все 10кораблей одного из противников.
Если первымсвои корабли потерял компьютер, игроку выводится сообщение о победе
/>
Рис. 7.Сообщение о победе

Если первымсвои корабли потерял игрок, ему выводится сообщение о проигрыше
/>
Рис. 8.Сообщение о проигрыше
В начале игрывыводится приглашение к расстановке кораблей:
/>
Рис. 9.Расстановка кораблей
Если игроквыполнил недопустимое действие (например, попытался «наложить» корабль накорабль) ему будет выведено предупреждающее сообщение о его ошибке.

/>
Еслирасстановка кораблей закончилась выводится приглашение к началу игры
/>
Рис. 10.Начало игры
В случаепромаха игроку выводится сообщение о промахе
/>
Рис. 11.Сообщение о промахе

В случаепопадания игроку выводится сообщение о попадании
/>
Рис. 12Сообщение о попадании
В случаепопадания в ячейку, которая уже обстреляна, игроку выводится сообщение спредложением выстрелить ещё раз
/>
Рис. 13.Сообщение о выстреле в обстрелянную ячейку
 
 

Анализ работы
В процессевыполнения данного курсового проекта были закреплены знания по использованиюклассов и использованию основ объектно-ориентированного программирования.
Конец игрыпредусмотрен в двух случаях: победа пользователя или победа компьютера. Также впроцессе написания программы были рассмотрены все варианты некорректной работыпрограммы, например: не размещает ли компьютер и пользователь корабли всоседних клетках, не ставит ли он корабли только в углах игрового поля, ненакладываются ли корабли один на другой. Также проверяется соответствиеколичества кораблей и палуб на них (1 четырехпалубный, 2 трехпалубных, 3двухпалубных, 1 однопалубных). Все вышеописанные неполадки были обнаружены иуспешно устранены.
Во времянаписания программы я получил навыки по использованию некоторых, ранее неиспользованных мной, компонентов среды программирования С++ Builder 6.
Также принаписании данного курсового проекта я закрепил свои знания в области написанияобъектно-ориентированных программ, содержащих взаимодействующие классы. Былиполучены новые знания о создании классов и работе с ними. Благодаря работе надпрограммой были закреплены знания распределения обязанностей между классами.
Приложение: />/>Текст программы
Текстпрограммы состоит из следующих модулей: UShipBattle.h, UShipBattle.cpp,ShipBattle.cpp
ShipBattle.cpp
 // –
#include
#pragmahdrstop
 //–
USEFORM(«UShipBattle.cpp», Form1);
 //–
WINAPIWinMain (HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
Application->CreateForm(__classid(TForm1), &Form1);
Application->Run();
}
catch(Exception &exception)
{
Application->ShowException(&exception);
}
catch(…)
{
try
{
throwException(«»);
}
catch(Exception &exception)
{
Application->ShowException(&exception);
}
}
return0;
}
 //–
UShipBattle.cpp
 // –
#include
#pragmahdrstop
#include«UShipBattle.h»
 //–
#pragmapackage (smart_init)
#pragmaresource «*.dfm»
TForm1*Form1;
 //–
__fastcallTForm1:TForm1 (TComponent* Owner)
:TForm(Owner)
{
HE= new HandlersOfEvents (Fild1, Fild2);
}
 //–
intFlot: GetStatus()
{
destroy= true;
for(j = 0; j
for(i = 0; i
if(ship[j].decks[i])
{
destroy= false;
return1;
}
return0;
}
 //–
intAI: Generation (Flot *CPU, int col_ship, int col_deck)
{
intx1, y1, k, i, j;
boolvertical = false, regen;
do{
randomize();
x1= rand()% 10;
y1= rand()% 10;
regen= false;
for(k = 0; k
for(i = 0; i
for(j = 0; j ship[i].col_deck; j++)
{
if(regen)break;
if(!vertical)
{
if((CPU-> ship[i].desp_of_part[j].x == x1 + k &&
CPU-> ship[i].desp_of_part[j].y == y1) || (x1 + k >= 10))
{
vertical= true;
regen= true;
continue;
}
if((CPU-> ship[i].desp_of_part[j].x – 1 == x1 + k ||
CPU-> ship[i].desp_of_part[j].x + 1 == x1 + k) &&
(CPU-> ship[i].desp_of_part[j].y – 1 == y1 ||
CPU-> ship[i].desp_of_part[j].y + 1 == y1))
{
vertical= true;
regen= true;
continue;
}
}
if(vertical)
{
if((CPU-> ship[i].desp_of_part[j].x == x1 &&
CPU-> ship[i].desp_of_part[j].y == y1 + k) ||
(y1+ k >= 10))
{
vertical= false;
regen= true;
continue;
}
if((CPU-> ship[i].desp_of_part[j].x – 1 == x1 ||
CPU-> ship[i].desp_of_part[j].x + 1 == x1) &&
(CPU-> ship[i].desp_of_part[j].y – 1 == y1 + k ||
CPU-> ship[i].desp_of_part[j].y + 1 == y1 + k))
{
vertical= true;
regen= true;
continue;
}
}
}
} while(regen);
if(!vertical)
for(i = 0; i
{
CPU-> ship [col_ship – 1].desp_of_part[i].x = x1 + i;
CPU-> ship [col_ship – 1].desp_of_part[i].y = y1;
}
else
for(i = 0; i
{
CPU-> ship [col_ship – 1].desp_of_part[i].x = x1;
CPU-> ship [col_ship – 1].desp_of_part[i].y = y1 + i;
}
return0;
}
 //–
intReferee: GoChecking (int x, int y, int n)
{
if(n == 1)
if(! Check(net1, x, y))
return0;
if(n == 2)
if(! Check(net2, x, y))
return0;
return1;
}
 //–
intReferee: Check (bool net[10] [10], int x, int y)
{
x/= 20; y /= 20;
if(! net[x] [y]) return 0;
return1;
}
 //–
intReferee: GoScaning (int x, int y, int n)
{
if(n == 1)
if(! Scan(player, x, y))
return0;
if(n == 2)
if(! Scan(CPU, x, y))
return0;
return1;
}
 //–
intReferee: Scan (Flot *fl, int x, int y)
{
x/= 20; y /= 20;
for(i = 0; i
for(j = 0; j ship[i].col_deck; j++)
if(fl -> ship[i].desp_of_part[j].x == x &&
fl-> ship[i].desp_of_part[j].y == y)
{
fl-> ship[i].decks[j] = false;
return0;
}
return1;
}
 //–
intReferee: Miss (int x, int y, int n)
{
x/= 20; y /= 20;
if(n == 1) net1 [x] [y] = false;
if(n == 2) net2 [x] [y] = false;
return1;
}
 //–
intReferee: EndRaund (int n)
{
if(n == 2)
Form1-> Panel2 -> Caption = «Вы победили!»;
if(n == 1)
Form1-> Panel2 -> Caption = «Вы проиграли!»;
game_over= true;
return0;
}
 //–
intHandlersOfEvents: Play (TImage *Im1, TImage *Im2)
{
Im1-> Enabled = true;
Im2-> Enabled = true;
return0;
}
 //–
intHandlersOfEvents: Desposition (int x, int y, TMouseButton Button)
{
if(play)return 0;
x/= 20; y /= 20;
for(k = 0; k
for(i = 0; i
for(j = 0; j ship[i].col_deck; j++)
{
if(Button == mbLeft)
{
if(player -> ship[i].desp_of_part[j].x == x + k &&
player-> ship[i].desp_of_part[j].y == y)
{
ShowMessage («Невозможно выполнитьдействие!»);
return 0;
}
if (x + k >= 10)
{
ShowMessage («Невозможно выполнитьдействие!»);
return0;
}
if((player-> ship[i].desp_of_part[j].x – 1 == x + k ||
player-> ship[i].desp_of_part[j].x + 1 == x + k) &&
(player-> ship[i].desp_of_part[j].y – 1 == y ||
player-> ship[i].desp_of_part[j].y + 1 == y))
{
ShowMessage («Невозможно выполнитьдействие!»);
return 0;
}
}
if(Button == mbRight)
{
if(player -> ship[i].desp_of_part[j].x == x &&
player-> ship[i].desp_of_part[j].y == y + k)
{
ShowMessage («Невозможно выполнитьдействие!»);
return 0;
}
if (y + k >= 10)
{
ShowMessage («Невозможно выполнитьдействие!»);
return0;
}
if((player-> ship[i].desp_of_part[j].x – 1 == x ||
player-> ship[i].desp_of_part[j].x + 1 == x) &&
(player-> ship[i].desp_of_part[j].y – 1 == y + k ||
player-> ship[i].desp_of_part[j].y + 1 == y + k))
{
ShowMessage («Невозможно выполнитьдействие!»);
return 0;
}
}
}
if(Button == mbLeft)
Draw(«position_h», x*20, y*20, 1);
else
Draw(«position_v», x*20, y*20, 1);
Generation(CPU, col_ship, col_deck);
if(col_ship == 1) col_deck –;
if(col_ship == 3) col_deck –;
if(col_ship == 6) col_deck –;
if(col_ship == 10) play = true;
if(play)Form1 -> Panel2 -> Caption = «Поехали»;
col_ship++;
return0;
};
 //–
intHandlersOfEvents: Shoot (int x, int y)
{
if(game_over) return 0;
intshoot_player = ShootPlayer (x, y, 2);
if(shoot_player > 0)
do{
x =rand()% 200;
y= rand()% 200;
intshoot_cpu = ShootPlayer (x, y, 1);
if(shoot_cpu > 0)
break;
if(shoot_cpu
player-> GetStatus();
if(player -> destroy || target_CPU > 19)
{
EndRaund(1);
return0;
}
} while(true);
else
{
if(shoot_player
CPU-> GetStatus();
if(CPU -> destroy || target_player > 19)
{
EndRaund(2);
return0;
}
}
return0;
}
 //–
intHandlersOfEvents: ShootPlayer (int x, int y, int n)
{
if(!play) return 0;
if(! GoChecking(x, y, n))
{
if(n == 2) Form1 -> Panel2 -> Caption = «Ещё раз! Туда уже стреляли!»;
return 0;
}
else if (! GoScaning(x,y, n))
{
Draw(«target», x, y, n);
Miss(x, y, n);
if(n == 2)
{
Form1-> Panel2 -> Caption = «Попал! Ещё раз!»;
target_player++;
}
elsetarget_CPU++;
return-1;
}
Miss(x, y, n);
if(n == 2) Form1 -> Panel2 -> Caption = «Мимо! Ход опонента»;
Draw(«miss», x, y, n);
return1;
}
 //–
intHandlersOfEvents: Draw (String key, int x, int y, int n)
{
TImage*Im;
x/= 20; y /= 20;
if(n == 1) Im = Form1 -> Fild1;
if(n == 2) Im = Form1 -> Fild2;
if(key == «target»)
{
Im-> Canvas -> Rectangle (x*20, y*20, x*20 + 20, y*20 + 20);
Im-> Canvas -> Brush -> Color = clYellow;
Im-> Canvas -> Rectangle (x*20, y*20 + 20, x*20 + 20, y*20);
Im-> Canvas -> Brush -> Color = clWhite;
}
if(key == «miss»)
{
Im-> Canvas -> Ellipse (x*20, y*20, x*20 + 20, y*20 + 20);
Im-> Canvas -> Ellipse (x*20 + 5, y*20 + 5, x*20 + 15, y*20 + 15);
}
if(key == «position_h»)
{
for(i = 0; i
{
Im-> Canvas -> Brush -> Color = clBlue;
Im-> Canvas -> Rectangle (x*20 + i*20, y*20, x*20 + 20 + i*20, y*20 + 20);
player-> ship [col_ship – 1].desp_of_part[i].x = x + i;
player-> ship [col_ship – 1].desp_of_part[i].y = y;
Im-> Canvas -> Brush -> Color = clWhite;
}
}
if(key == «position_v»)
{
for(i = 0; i
{
Im-> Canvas -> Brush -> Color = clBlue;
Im-> Canvas -> Rectangle (x*20, y*20 + i*20, x*20 + 20, y*20 + 20 + i*20);
player-> ship [col_ship – 1].desp_of_part[i].x = x;
player-> ship [col_ship – 1].desp_of_part[i].y = y + i;
Im-> Canvas -> Brush -> Color = clWhite;
}
}
return0;
}
 //–
void__fastcall TForm1: Fild2MouseDown (TObject *Sender,
TMouseButtonButton, TShiftState Shift, int X, int Y)
{
HE-> Shoot (X, Y);
}
 //–
void__fastcall TForm1: BitBtn2Click (TObject *Sender)
{
HE-> Play (Fild1, Fild2);
BitBtn2-> Visible = false;
BitBtn3-> Visible = true;
Panel2-> Caption = «Расставьте корабли»;
}
 //–
void__fastcall TForm1: Fild1MouseDown (TObject *Sender,
TMouseButtonButton, TShiftState Shift, int X, int Y)
{
HE-> Desposition (X, Y, Button);
}
 //–
void__fastcall TForm1: BitBtn3Click (TObject *Sender)
{
Panel2-> Caption = «Расставьте корабли»;
Fild1-> Picture -> LoadFromFile («net.bmp»);
Fild2-> Picture -> LoadFromFile («net.bmp»);
HE= new HandlersOfEvents (Fild1, Fild2);
}
 //–
UShipBattle.h
 // –
#ifndefUShipBattleH
#defineUShipBattleH
 //–
#include
#include
#include
#include
#include
#include
#include
#include
 //–
structShip
{
booldestroy;
intcol_deck;
bool*decks;
TPoint*desp_of_part;
};
classFlot
{
public:
inti, j, n;
booldestroy;
TImage*Im;
Shipship[10];
Flot(TImage *I)
{
destroy= false;
Im= I;
n= 1;
for(i = 0; i
{
if(i
if(i
if(i == 0) n = 4;
ship[i].destroy= false;
ship[i].col_deck= n;
ship[i].decks= new bool[n];
ship[i].desp_of_part= new TPoint[n];
}
}
intGetStatus();
};
classAI
{
public:
TPointdecks_[20];
intcol_decks_;
intGeneration (Flot *CPU, int col_ship, int col_deck);
};
classReferee: public AI
{
public:
inti, j, target_player, target_CPU;
boolnet1 [10] [10], net2 [10] [10], game_over;
Flot*player, *CPU;
Referee()
{
for(i = 0; i
for(j = 0; j
{
net1[i] [j] = true;
net2[i] [j] = true;
}
game_over= false;
target_player= 0;
target_CPU= 0;
col_decks_= 0;
}
intGoChecking (int x, int y, int n);
intCheck (bool net[10] [10], int x, int y);
intGoScaning (int x, int y, int n);
intScan (Flot *fl, int x, int y);
intMiss (int x, int y, int n);
intEndRaund (int n);
};
classHandlersOfEvents: public Referee
{
public:
boolplay;
intcol_deck, col_ship, i, j, k;
HandlersOfEvents(TImage *Im1, TImage *Im2)
{
play= false;
col_deck= 4; col_ship = 1;
player= new Flot(Im1);
CPU= new Flot(Im2);
}
intPlay (TImage *Im1, TImage *Im2);
intMove();
intDesposition (int x, int y, TMouseButton Button);
intDraw (String key, int x, int y, int n);
intShootPlayer (int x, int y, int n);
intShoot (int x, int y);
};
classTForm1: public TForm
{
__published:         //IDE-managed Components
TImage*Fild1;
TImage*Fild2;
TPanel*Panel1;
TBitBtn*BitBtn1;
TBitBtn*BitBtn2;
TBitBtn*BitBtn3;
TPanel*Panel2;
void__fastcall Fild2MouseDown (TObject *Sender,
TMouseButtonButton, TShiftState Shift, int X, int Y);
void__fastcall BitBtn2Click (TObject *Sender);
void__fastcall Fild1MouseDown (TObject *Sender,
TMouseButtonButton, TShiftState Shift, int X, int Y);
void__fastcall BitBtn3Click (TObject *Sender);
private:        //User declarations
public: //User declarations
__fastcallTForm1 (TComponent* Owner);
HandlersOfEvents*HE;
};
 //–
externPACKAGE TForm1 *Form1;
 //–
#endif/>/>/> 
Литература
1. А.Я. Архангельский. Программирование в C++ Builder 6. — ЗАО «Издательство
БИНОМ», Москва, 2005
2. Уильям Топп, УильямФорд. Структура данных в С++.-ЗАО «Издательство
БИНОМ», Москва, 2000
3. В.В. Подбельский.Язык С, С++. «Финансы и статистика», Москва, 2003
4. Т.А. Павловская.С/С++. «Питер», Санкт-Петербург, 2002


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

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.

Сейчас смотрят :

Реферат Нарушения зрения детей
Реферат Американский бурый пеликан
Реферат Пути совершенствования системы управления персоналом на РУПП "Белорусский автомобильный завод"
Реферат КУЛЬТУРА ПОВЕДЕНИЯ ЗА СТОЛОМ ИСТОРИЯ И СОВРЕМЕННОСТЬ
Реферат Театры Санкт-Петербурга
Реферат DO11 проблеми та перспективи розвитку людського капіталу в світі та в україні
Реферат Экономический анализ бухгалтерского баланса коммерческой организации
Реферат Участие прокурора в гражданском судопроизводстве
Реферат Agency Analysis Of The Cia Essay Research
Реферат Биография О.М. Савина (писателя)
Реферат Антонова Анна Алексеевна Проект урок
Реферат Правовое регулирование внешнеэкономических сделок. Характеристика отдельных видов внешнеэкономич
Реферат Судебная власть в системе разделения властей 2
Реферат Хроника внешней политики независимого Казахстана с Королевством Саудовская Аравия
Реферат Правильные и полуправильные многогранники