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


Бібліотека ASM-86 для перегляду графіки в стандартах BMP та PCX

Зміст
Вступ
1.    Постановка задачі
2.    Обґрунтування вибору методіврозв’язку задачі
3.    Алгоритм програми
4.    Реалізація програми
5.    Системні вимоги
6.    Інструкція для користувача
Висновки
Використана література
Додаток. Лістинг програми

Вступ
Теперкомп’ютери відіграють у житті людини все більшу та більш роль. Раніше, коли щене було комп’ютерів, чи вони були мало розповсюдженні, все робилося вручну.Коли комп’ютери одержали широке розповсюдження, комп’ютер став допомагатилюдині, бо він може багато операцій робити набагато швидше, ніж людина.
В наш час дужепопулярні графічні редактори, які дозволяють зберігати зображення в популярнихграфічних форматах. Але інколи потрібна невелика програма, яка дозволяєпереглядати графічні формати. Якщо ви хочете написати програму для зображеньстрого визначеного формату, щоб вона, наприклад, працювала удвічі швидше, ніж«Load from...» у PC Paintbrush, то ви повинні вивчити структурузаголовку та алгоритм стиснення даних для даного формату.

1. Постановка задачі
Розробити на мовіпрограмування ASM-86 бібліотеку, сумісну з мовою програмування Pascal дляперегляду графіки в стандартах: BMP, PCX.
2. Обгрунтування виборуметодів розв’язку задачі
Необхідно написати, бібліотеку бібліотеку, сумісну з мовою програмування Pascal для перегляду графіки встандартах: BMP, PCX.
Структура заголовків графіки в стандартах BMP та PCX, атакож алгоритми розшифрування даних в цих стандартах приводиться в багатьохкнижках, тож з вибором алгоритму у мене не виникло ніяких труднощів.
Формат файлу зображень(.PCX)Файли зображень зрозширеннями .PCX починаються з заголовка довжиною 128 байт. Звичайно ви можете ігнорувати цейзаголовок, якщо усі ваші зображення будуть мати однаковий дозвіл. Якщо ж вихочете обробляти зображення з різним дозволом і різною кількістю квітів, вам належитькоректно інтерпретувати інформацію, що знаходиться в даному заголовку. Частина файлу, що залишилася, із зображеннямскладається з закодованих графічних даних. При кодуванні використовуєтьсяпростий алгоритм, заснований на методі довгих серій. Ми залишаємо за собоюправо змінювати цей алгоритм із метою підвищення ефективності упакування даних.Якщо у файлі запам'ятовується кілька колірних шарів, кожен рядок зображеннязапам'ятовується по колірних шарах (у загальному випадку червоному-R,зеленому-G, синьому-B і шарую інтенсивності-I) за схемою, приведеної нижче:
Рядокзображення 0:
RRR...
GGG...
BBB...
III...
Рядокзображення 1:
RRR...
GGG...
BBB...
III...
Метод кодуванняполягає в наступному:
ДЛЯ кожного байтаX, прочитаного з файлу ЯКЩО обоєстарших біта X рівні 1, то = 6 молодшим биткам X = наступному байту за X ІНАКШЕ = 1 = X
Формат заголовка PCX
Зміщений.Позначення Довжина Опис/коментар
0 Manufacturer 1 Постійнийпрапор 10 = ZSoft .PCX
1 Version 1 Інформаціяпро версію:
0 = Версія 2.5
2 = Версія 2.8 зінформацією про палітру
3 = Версія 2.8без інформації про палітру
5 = Версія 3.0
2 Encoding 1 1 =.PCX кодування довгими серіями
3 Bits per pixel1 Число біт на піксел у шарі
4 Window 8 Розміризображення (Xmin, Ymin) — (Xmax, Ymax) у пікселах включно
12 HRes 2 Горизонтальнийдозвіл пристрою, що створює
14 VRes 2 Вертикальнийдозвіл пристрою, що створює
16 Colormap 48 Набірколірної палітри (див. далі текст)
64 Reserved 1
65 NPlanes 1 Числоколірних шарів
66 Bytes per Line2 Число байт на рядок у колірному шарі (для PCX-файлів завжди повинне бутипарним)
68 Palette Info 2Як інтерпретувати палітру:
1 =кольорова/чорно-біла,
2 = градаціїсірого
70 Filler 58 Заповнюєтьсянулями до кінця заголовка
Декодуванняфайлів у форматі PCX
Спочаткувизначите розмір зображення, обчисливши
[XSIZE = Xmax — Xmin + 1] і [YSIZE = Ymax — Ymin + 1].
Потім обчислите, скількибайтів потрібно для збереження одного незжатого рядка розгорнення зображення:
TotalBytes =NPlanes * BytesPerLine
Відзначимо, що оскількизавжди використовується ціле число байтів, можливе існування невикористовуванихданих наприкінці кожного рядка розгорнення. TotalBytes показує скількохпам'ятей повинне бути доступно для декодування кожного рядка розгорнення,включаючи невикористовувану інформацію на правому кінці кожного рядка.
Тепер ви можете початидекодування першого рядка розгорнення — прочитайте перший байт даних з файлу.Якщо два старших біти цього байта рівні 1, то залишилися шість бітів, які показуютьскільки разів варто повторити НАСТУПНИЙ байт із файлу. Якщо це не так, то цейбайт сам є даними з повторювачем рівним 1. Продовжуйте декодування до кінцярядка, ведучи підрахунок кількості байтів, переданих у буфер висновку. Наприкінцікожного рядка розгорнення має місце зупинка алгоритму кодування, але її неіснує при переході від одного шару до іншого. Коли рядок сформований цілком, наприкінцікожного шару усередині рядка можливий наявність зайвих даних. Для перебування цьогозалишку використовуйте значення XSIZE і YSIZE. Якщо дані є багатошаровими, тоBytesPerLine показує, де закінчується кожен шар усередині рядка розгорнення.
Продовжуйте декодування рядків, що залишилися. У файліможлива наявність зайвих рядків з округленням на 8 чи 16 рядків.
Опис інформаціїпро палітру
Інформація про16-кольорову палітру (EGA/VGA)
Інформація про палітрузапам'ятовується в одному з двох різних форматів. У стандартному форматі RGB(IBM EGA, IBM VGA) дані запам'ятовуються в 16 трійках. Кожна трійка складаєтьсяз байтів зі значеннями червоного (Red), зеленого (Green) і синього (Blue)квітів. Значення можуть знаходитися в діапазоні 0-255, і тому необхідна їхня інтерпретаціяу формат використовуваного устаткування. Наприклад, на IBM EGA існують 4 можливихрівні RGB для кожного кольору. Оскільки 256/4 = 64, те нижче приведений списоквідповідності колірних значень і рівнів:
Значення Рівень
0-63 0
64-127 1
128-192 2
193-254 3
Інформація про 256-кольорову палітру VGA
В даний час ZSoftдодав можливість збереження у файлі зображення PCX палітри, що перевищує 16 квітів.256-кольорова палітра форматується й інтерпретується точно так, як16-кольорова, природно, за винятком того, що вона довша. Палітра (число кольорівx 3 байти довжини) додається в кінець PCX файлу і їй передує байт із десятковимзначенням 12. Для визначення палітри VGA BIOS вам досить розділити прочитанізначення квітів на 4.
Для доступу до256-кольорової палітри потрібно:
1. Прочитати взаголовку поле Version. Якщо воно дорівнює 5, палітра повинна бути.
2. Прочитати кінецьфайлу і відрахувати назад 769 байт. Знайдене вами значення повинне дорівнювати 12,що вказує на присутність 256-кольорової палітри.
3. Алгоритм програми
Алгоритм головної програми:
1.   Перехід в графічний режим
2.   Виклик процедури виводу графіки встандарті .PCX.
3.   Чекання натиснення клавіші ENTER.
4.   Виклик процедури виводу графіки встандарті .BMP.
5.   Чекання натиснення клавіші ENTER.
6.   Закінчити програму.
Алгоритм функціївиводу графіки в стандарті .BMP.
1.Читаннязаголовку.
2.Аналіззаголовку
3.Читання палітри
4.Заповненняпалітри
5.Читання даних
6.Аналіз даних тавивід на екран
7.Кінець функції.
Алгоритм функціївиводу графіки в стандарті .PCX.
1.        Читаннязаголовку.
2.        Аналіззаголовку
3. Читанняпалітри
4. Заповненняпалітри
5. Читання даних
6. Аналіз данихта вивід на екран
7. Кінецьфункції.

4. Реалізація програми
Програма написана на мові ASM-86 з використанням команд процесора86/286. Вона складається з головної програми, яка написана на мові програмуванняPascal, і з бібліотеки, написаної на мові програмування ASM-86, функції якоївикликаються в головній програмі.
Функції бібліотеки:
LoadPcx(x,y:integer;s:string);
Де x, y – координати початку виводу картини, s – імя файлу зрозширенням PCX.
LoadBmp(x,y:integer;s:string);
Де x, y – координати початку виводу картини, s – імя файлу зрозширенням BMP. Бібліотекакомпілюється за допомогою Turbo Assembler, зв’язується з головною програмою задопомогою TURBO.EXE.
5. Системні вимоги
 
-  IBM сумісний комп’ютер ізмікропроцесором Intel 80386 або старшим.
-  Операційна система – ДОС
— Пам’ять – 640 Кі вище
 
6. Інструкція для користувача
Длядемонстрації бібліотеки написана програма, яка виводить на екран графіки вформаті .BMP, .PCX. Для запуску цієї програми потрібно в командному рядку набратиload_my.exe та натиснути Enter.     Програма спочатку виведе на екран картину вформаті .PCX, потім, після натиснення Enter виведе другу картину в форматі.PCX, потім після натиснення Enter програма завершить свою роботу.

Висновки
Отже, на мовіASM-86 створено бібліотеку перегляду графіки в форматі .BMP, .PCX, та булирозглянуті структури заголовків та алгоритми перегляду графіків.

Використаналітература
1. Р.Джордейн “Справочник программиста персональныхкомпьютеров типа IBM PC” М: Мир, 1991р. 2. П.Абель “Мова асемблера для IBM PCта програмування.” М.: Вища школа,1992. 3. “Основи мови” Асемблер” В.I.Криволап. Москва 1997р. ст.309
4. “Ассемблер для початкiвцiв”М.П.Шукiн.Київ 1980р.ст.155
5. “Турбо Асемблер”Л.В.Захаров. Харків 1995 р ст.178
6. “Макро Асемблер”К.С. Кропiйко О.Д. Богатирова.Київ– “Наука” 1991р.
7. Електроний довідник BOOK
8. Електронна документація про формати .PCX та .BMP.

Додаток.Лістинг програми
 
uses crt;
vargraphresult1,graphresult,i:integer; {результат чтения графики}
proceduresetvideo(mode:byte);assembler;{устанавливает видеорежимы}
asm
mov ah,0 {функцияустановки видеорежема}
mov al,mode {номеррежима}
int 10h {прерываниедля работы с видеорежимами}
end;
{$L pcx.obj} {подключаемнашу библиотеку}
functionLoadPcx(x,y:integer;s:string):integer;
 external;{обьявляемфункции, которые находятся в библиотеке}
functionLoadBmp(x,y:integer;s:string):integer;{для чтения файлов .PCX, .BMP}
external;
begin {MAIN}
if paramcount=0then
begin
 setvideo($5f);{устанавливает видеорежим 640x480 256 цветов}
 graphresult:=LoadPcx(1,1,'a1.pcx');{вызываетфункцию для чтения .PCX
                                       ивозвращает результат чтения}
 readln; {ждетнажатия Enter}
 setvideo($5f);
 graphresult1:=LoadBmp(1,1,'a3.bmp');
 readln;
 setvideo(3); {установкатекстового видеорежима}
 ifgraphresult0 then writeln('Ошибка чтения a1.pcx');
 ifgraphresult10 then writeln('Ошибка чтения a3.bmp');
end
else {paramcount- количество параметров}
 for i:=1 toparamcount do begin {перебор всех параметров команд. стр.}
 setvideo($5f);{устанавливает видеорежим 640x480 256 цветов}
 ifpos('.pcx',paramstr(i))>0 then
 graphresult:=LoadPcx(1,1,paramstr(i)){вызываетфункцию для чтения .PCX
с указанным вкомандной строке именем файла
                              ивозвращает результат чтения}
 else
 graphresult:=LoadBMP(1,1,paramstr(i));{вызываетфункцию для чтения .BMP
                                       ивозвращает результат чтения}
ifgraphresult0 then begin
          setvideo(3);{установка текстового видеорежима}
          writeln('Ошибкачтения '+paramstr(i));
          readln;
          endelse readln; {ждет нажатия Enter}
end;
readln;
setvideo(3); {установкатекстового видеорежима}
end.
 
Текстбібліотеки:
.386           ; разрешениеинструкций 386 процессора
IDEAL; переход видеальный режим
model SMALL,PASCAL; модель памяти SMALL для распределения кода и данных
                  ; исовместимая с паскалем
PUBLIC PASCAL LoadPcx; Обьявляем общие процедуры
PUBLIC PASCAL LoadBmp
CODESEG
zagpcx db 130 dup(0); буфердля заголовков BMP и PCX
nfile db 'a.pcx',100dup(0); буфер для имени файла
flc dw 0; индекс файла
x1 dw 0; координатытекущей точки      
y1 dw 0
x2 dw 0
y2 dw 0
col db 770 dup(0); буфердля палитры
c1 dw 0; цвет текущейточки
yres dw 0; размеркартинки
xres dw 0
povt db 0; повторитель(сколькопикселей нарисовать)
buf db 1024 dup(0); буфердля данных
bufsz dw 1024; размербуфера данных
bufpos dw 0; текущееположение буфера
maxx dw 640
PROC PutPixel; процедуравывода точки на экран
pusha                  ; сохранениерегистров в стеке
mov ax,[maxx]; проверкана выход за экран
cmp [x1],ax
jnb @@ex
mov ax,[C1]; задаем цвет
mov ah,0ch
mov cx,[x1]; задаемкоординаты
mov dx,[y1]
mov bh,0
int 10h; вывод точки
@@ex:
popa; восстановлениерегистров
ret
ENDP
PROC LoadBmp; процедуравывода картинки в стандарте BMP
ARGnx:WORD,ny:WORD,file:WORD:2; параметры; адрес строки имени картинки
pusha;; сохранениерегистров
push ds
mov dx,cs; установка DSна сегмент кода
mov ds,dx
MASM; переход в режимMASM
mov ax,[file]; копированиеимени файла
mov bx,ax
movax,[file]+2
mov es,ax
mov si,offsetnfile
IDEAL; переход видеальный режим
mov al,[es:bx];
inc bx;
@lpabmp:movcl,[es:bx];
mov [si],cl;
inc si;
inc bx;
sub al,1;
jnz @lpabmp;; копированиеимени файла в буфер
mov al,0
mov [si],al;
mov ax,3d00h;; открытие файла
mov dx,offsetnfile; адрес имени файла
int 21h;
jnc @lpbbmp;
jmp @lppoorbmp;
@lpbbmp:
mov [flc],ax; сохраняемномер файла
mov dx,offsetzagpcx; адрес буфера
mov cx,54; количествобайт для чтения данных из файла
mov bx,[flc]; заносимномер файла
mov ax,3f00h; чтениефайла
int 21h;
mov bx,offsetzagpcx; адрес буфера заголовка
mov ax,[bx]; первое словозаголовка
cmp ax,4D42h; проверка наPCX
jz @lpcbmp;
jmp@lppoor1bmp;
@lpcbmp:
@lpdbmp:add bx,18; чтениекоординат окна картинки
mov ax,[bx];
mov [x1],ax;
add bx,4;
mov ax,[bx];
mov [y1],ax;
add bx,4;
mov ax,[nx];
add ax,[x1];
mov [xres],ax;
add bx,2;
mov ax,[ny];
add ax,[y1];
mov [yres],ax;
mov ax,[nx]; устанавливаемтекущую точку в начальную точку
mov [x1],ax;
mov ax,[ny];
mov [y1],ax;
mov [x2],0;
mov [y2],0;
@lpgbmp:
mov dx,offsetcol;
mov cx,768;
mov bx,[flc];
mov ax,3f00h;
int 21h;
mov bx,offsetcol;
mov cx,768;
MASM
@lpfbmp:ror byte ptr[bx],2; деление на 4 всех элементов палитры
IDEAL
inc bx;
sub cx,1;
jnz @lpfbmp;
mov dx,offsetcol;
mov ax,ds;
mov es,ax;
mov ax,1012h;
mov bx,0h;
mov cx,256;
int 10h; установкапалитры
mov bx,offsetzagpcx;
add bx,10
mov dx,[bx];
mov ax,4200h;
mov bx,[flc];
mov cx,0;
int 21h;
mov [povt],0;
@lpibmp:movbx,[flc];
mov cx,[bufsz];; чтениеданных в буфер по блокам (1 Kb).
mov ax,3f00h;
mov dx,offsetbuf
int 21h;
mov[bufpos],0;
@lpxbmp:
push ds
pop es
mov bx,offsetbuf
addbx,[bufpos];
movax,[bufpos];
cmpax,[bufsz];
jz @lpibmp;
moval,[es:bx];
inc [bufpos];
cmp [povt],0;
jz @lpkbmp;
mov cl,[povt];
mov ah,0h;
mov [c1],ax;
@lmdbmp:
call putpixel; вывод точки
inc [x1];
inc [x2];
mov ax,[x2];
cmp ax,[xres];
jnz @lmcbmp;
mov ax,[nx];
mov [x1],ax;
mov [x2],0;
inc [y1];
inc [y2];
mov ax,[y2];
dec ax;
cmp ax,[yres];
jnz @lmcbmp;
jmp @lpokbmp;
@lmcbmp:deccl;
cmp cl,0;
jnz @lmdbmp;
mov [povt],0;
jmp @lpxbmp;
@lpkbmp:
mov ah,al;
@lpybmp:
mov ah,0h;
mov [c1],ax;
call putpixel;вывод точки
inc [x1];
inc [x2];
mov ax,[x2];
dec ax;
cmp ax,[xres];
jnz @lpxbmp;
mov ax,[nx];
mov [x1],ax;
mov [x2],0;
inc [y1];
inc [y2];
mov ax,[y2];
dec ax;
cmp ax,[yres];
jnz @lpxbmp;
jmp @lpokbmp;
@lpokbmp:
pop ds
popa;; восстановлениерегистров
mov ax,0
jmp @lpubmp;
@lppoor1bmp:
mov ah,3eh;; закрытиефайла
mov bx,[flc];
int 21h;
@lppoorbmp:
pop ds
popa;; восстановлениерегистров
mov ax,3
@lpubmp:
ret
endp
PROC LoadPcx; процедурачтения и вывода на экран PCX
ARGnx:WORD,ny:WORD,file:WORD:2; адрес строки имени картинки
pusha;; сохранениерегистров
push ds
mov dx,cs; установкасегмента данных равным сегменту кода
mov ds,dx
MASM
mov ax,[file]; копированиеимени файла в буфер
mov bx,ax
movax,[file]+2
mov es,ax
mov si,offsetnfile
IDEAL
moval,[es:bx];
inc bx;
@lpa:movcl,[es:bx];
mov [si],cl;
inc si;
inc bx;
sub al,1;
jnz @lpa;; конецкопирование имени файла в буфер
mov al,0
mov [si],al;
mov ax,3d00h;; открытие файла
mov dx,offsetnfile; адрес имени файла
int 21h;
jnc @lpb;
jmp @lppoor;
@lpb:
mov [flc],ax; сохраняемномер файла
mov dx,offsetzagpcx; адрес буфера
mov cx,128; количествобайт для чтения данных из файла
mov bx,[flc]; заносимномер файла
mov ax,3f00h; чтениефайла
int 21h;
mov bx,offsetzagpcx; адрес буфера заголовка
mov ax,[bx]; первое словозаголовка
cmp ax,050ah; проверка наPCX
jz @lpc;
jmp @lppoor1;
@lpc:add bx,2;
mov ax,[bx];
cmp ax,0801h; проверка на256 цветов
jz @lpd;
jmp @lppoor1;
@lpd:add bx,2; чтениекоординат окна картинки
mov ax,[bx];
mov [x1],ax;
add bx,2;
mov ax,[bx];
mov [y1],ax;
add bx,2;
mov ax,[bx];
sub ax,[x1];
mov [xres],ax
add bx,2;
mov ax,[bx];
sub ax,[y1];
mov [yres],ax;вычисление размеров картинки
mov ax,[nx];
mov [x1],ax; устанавливаемтекущую точку в начальную точку
mov ax,[ny];
mov [y1],ax;
mov [x2],0;
mov [y2],0;
add bx,55;
mov al,[bx]; проверка
cmp al,01h;
jz @lpg;
jmp @lppoor1;
@lpg:mov ax,4202h; установкауказателя файла на конец файла
mov bx,[flc];
mov cx,0;
mov dx,0;
int 21h;
sub ax,769; вычислениеначало палитры
sbb dx,0h;
mov cx,dx;
mov dx,ax;
mov bx,[flc];
mov ax,4200h; установкауказателя файла на начало палитры
int 21h;
mov dx,offset col; чтениепалитры
mov cx,769; количествобайт для чтения
mov bx,[flc];
mov ax,3f00h;
int 21h; чтение
mov bx,offsetcol;
MASM
cmp byte ptr [bx],0ch;проверка на 256 цветов
jz @lpe;
jmp @lppoor1;
@lpe:inc bx;
mov cx,768;
@lpf:ror byte ptr[bx],2; деление на 4 всех элементов палитры
IDEAL
inc bx ;
sub cx,1;
jnz @lpf;
mov dx,offsetcol+1;
mov ax,ds;
mov es,ax;
mov ax,1012h; установкапалитры
mov bx,0h;
mov cx,256;
int 10h;
mov ax,4200h; установкаположения указателя файла на 128 от начала
mov bx,[flc]; для чтенияданных
mov cx,0;
mov dx,80h;
int 21h;
mov [povt],0;
@lpi:movbx,[flc];
movcx,[bufsz];
mov ax,3f00h;
mov dx,offset buf; чтениеданных в буфер по блокам (1 Kb).
int 21h;
mov [bufpos],0; устaнoвкаположения буфера в 0
@lpx:
push ds
pop es
mov bx,offsetbuf
addbx,[bufpos];
movax,[bufpos];
cmp ax,[bufsz]; проверкана конец блока
jz @lpi;
moval,[es:bx];
inc [bufpos]; увеличениеположения буфера
cmp [povt],0; установкаповторителя в 0
jz @lpk;
mov cl,[povt]; чтениеповторителя
mov ah,0h;
mov [c1],ax; установкацвета точки
@lmd:
call putpixel; выводточки на экран
inc [x1]; увеличение Х
inc [x2];
mov ax,[x2];
dec ax;
cmp ax,[xres]; сравнениес размерами картинки
jnz @lmc;
mov ax,[nx]; установка Xв начальное положение
mov [x1],ax;
mov [x2],0;
inc [y1]; увеличение Y
inc [y2];
mov ax,[y2];
dec ax;
cmp ax,[yres]; сравнениес размерами картинки
jnz @lmc;
jmp @lpok;
@lmc:dec cl;
cmp cl,0; проверкаколичества точек на 0
jnz @lmd;
mov [povt],0; установкаповторителя в 0
jmp @lpx;
@lpk:movah,al;
and ah,0c0h; проверка нанесколько точек
cmp ah,0c0h;
jnz @lpy;
and al,3fh;
mov [povt],al; установкаповторителя в кол. точек
jmp @lpx;
@lpy:movah,0h;
mov [c1],ax; установкацвета
call putpixel; выводточки
inc [x1]; увеличение Х
inc [x2];
mov ax,[x2];
dec ax;
cmp ax,[xres]; сравнение сразмерами картинки
jnz @lpx;
mov ax,[nx]; установка Xв начальное положение
mov [x1],ax;
mov [x2],0;
inc [y1]; увеличение Y
inc [y2];
mov ax,[y2];
dec ax;
cmp ax,[yres]; сравнениес размерами картинки
jnz @lpx;
jmp @lpok;
@lpok:
pop ds
popa;; восстановлениерегистров
mov ax,0
jmp @lpu;
@lppoor1:
mov ah,3eh;; закрытиефайла
mov bx,[flc];
int 21h;
@lppoor:
pop ds
popa;; восстановлениерегистров
mov ax,3
@lpu:
ret
endp
END


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

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

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

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