Перетворення інформації перед передачею її в канал
зв'язку h2>
Пояснювальна записка до курсової роботи p>
Розробив студент Петров А.В. p>
Пензенський державний університет, Кафедра
"РЕСС і ЗІ" p>
Пенза 1998 p>
Завдання на курсове проектування по темі Розробка
програми обробки інформації на мові С + + p>
1. Дисципліна - Алгоритмізація та програмування. P>
2. Варіант завдання - 45. P>
3. Студент Петров А.В. група 97ПС3. p>
4. Вихідні дані на проектування p>
4.1. Загальні вимоги до програми: p>
- наявність призначеного для користувача інтерфейсу p>
- читання необхідної інформації з файлів p>
- збереження результатів у файлах p>
- контроль помилок при роботі з файлами p>
- перетворення інформації по заданому алгоритму p>
- зворотне перетворення інформації p>
- використання надлишковості для контролю помилок p>
- одночасне відображення на екрані перетвореної
і не перетвореної інформації. p>
4.2. Вимоги до інтерфейсу користувача: p>
- забезпечити управління програмою за допомогою
"гарячих клавіш" (поєднанні клавіш) з діапазону Alt-F1 - Alt-F10,
допускається використання клавіші Esc p>
- забезпечити одночасне відображення на екрані
перетвореної і не перетвореної інформації p>
- забезпечити колірне виділення спотвореної інформації. p>
4.3. Вимоги до перетворення інформації: p>
- перетворення символів з кодами 40h - 5Fh (верхній
регістр латинського алфавіту) p>
- використання для перетворення операци.
перестановки: p>
біти (0-1,1-0,2-3,3-2). p>
- використання для формування надмірності операцію
виключає АБО (додавання по модулю 2) p>
- надлишкові символи формуються на кожні 3 символи
інформації. p>
5. Обсяг роботи за проектом. P>
5.1. Зміст роботи: p>
- розробка алгоритмів p>
- створення програми на базі розроблених алгоритмів p>
- опис роботи програми p>
- опис інтерфейсу програми p>
6. Графічна частина p>
7.Експірементальная частина p>
- налагодження окремих частин програми p>
- перевірка працездатності програми p>
8. Календарний план виконання курсового проекту. P>
8.1 Термін виконання робіт за розділами: p>
- видача завдання до
1998 г p>
- розробка алгоритму роботи програми до 1998 р p>
- розробка та налагодження пользотательского інтерфейс до 1998 р p>
- розробка та налагодження процедур запису і читання файлів
до 1998р p>
- розробка та налагодження процедури перетворення файлів
до 1998р p>
- оформлення П3 до
1998р p>
- підготовка до захисту до 1998р. p>
Дата захисту проекту "" 1998р. p>
Керівник проекту Дорошкевич В.В. p>
Завдання одержав ""
1998р. P>
Студент Петров А.В. p>
РЕФЕРАТ p>
Пояснювальна записка містить 16 аркушів, 1 малюнки,
2 джерела, p>
2 таблиці, 2 додатки. p>
ПРОГРАМА, АЛГОРИТМ РОБОТИ, перестановки,
Надлишковим. P>
Об'єкт дослідження: алгоритм перетворення
інформації перед передачею її в канал зв'язку і програма, що реалізує цей
алгоритм. p>
Мета роботи: створення коректно працюючої програми,
що реалізує алгоритм перетворення інформації перед передачею її в канал
зв'язку. p>
У результаті була отримана працює програма, а
також результати її роботи. p>
Вступ h2>
В даний час індустрія виробництва комп'ютерів і
програмного забезпечення для них є однією з найбільш важливих сфер економіки
розвинених країн. Щорічно у світі продаються десятки мільйонів комп'ютерів. Тільки
в США обсяг продажів комп'ютерів складає десятки мільйонів доларів і
постійно продовжує рости. p>
У чому ж причини такого стрімкого зростання індустрії
персональних комп'ютерів та їх порівняльна вигідність для багатьох ділових
застосувань? p>
Простота використання, забезпечена за допомогою діалогового
способи взаємодії з комп'ютером. p>
Відносно високі можливості з переробки інформації,
наявність програмного забезпечення, а також потужних систем для розробки нового
програмного забезпечення. p>
Мова С + + - універсальна мова загального призначення,
область додатків якого - програмування систем в самому широкому сенсі.
Крім цього, С + + успішно використовується як у багатьох додатках, так і в потужних
операційних системах. Реалізація С + + здійснена для машин в діапазоні від
найпростіших персональних комп'ютерів до найпотужніших суперкомп'ютерів і для всіх
операційних систем. p>
І тому у цій курсовій роботі необхідно застосувати
мова програмування С + +, як найбільш підходящий для вирішення поставленої
завдання. p>
1. Постановка завдання h2>
Завданням на дану курсову роботу є розробка
програми на мові C + + для перетворення інформації перед передачею її в канал
зв'язку. p>
Програма повинна виконувати наступні дії --
створити багатовіконний інтерфейс користувача, вивести рядок підказки з
призначеннями кожної з "гарячої клавіш", організувати опитування
клавіатури, виклик тієї чи іншої функції, що відповідає тій самій "гарячої клавіші '.
Вихідні дані (перетворений текст) повинні зберігатися у файлі на диску до
завантаження даної програми та зчитуватися за запитом користувача. Файл
задається користувачем в діалоговому режимі. Кодування і декодування
інформації повинно здійснюватися при натисканні користувачем відповідних
"гарячих клавіш". p>
Контрольна сума, яка повинна зберігатися в
надлишковому байті має звірятися з отриманої контрольної сумою при
декодування текстової інформації, призначеної для передачі в канал
зв'язку. p>
У якості "гарячих клавіш" повинні
використовуватися клавіші (комбінації клавіш) з діапазону Alt + F1 - Alt + F10, клавіша
Esc може використовуватися для виходу з програми. P>
У цій роботі для кодування даних
використовується метод перестановки біс символу, варіанти якої представлені в
таблиці 1. p>
Таблиця 1 p>
До перестановки p>
0 p>
1 p>
2 p>
3 p>
Після перестановки p>
1 p>
0 p>
3 p>
2 p>
Надмірна байт у вихідному файлі формується через
кожні 3 символи шляхом додавання по модулю 2. p>
У результаті необхідно отримати працюючу програму
, А також результати, що задовольняють умовам поставленої задачі. P>
2. Розробка алгоритму рішення задачі перетворення
інформації h2>
За умовами, заданими в задачі, початковий текст
повинен кодуватися з надмірністю шляхом додавання по модулю 2 на 3 кожні
символу. Kодірованіе повинно здійснюватися шляхом підстановки символу по
наступною схемою (0-1,1-0,2-3,3-2) p>
У зв'язку з цим був розроблений алгоритм кодування
інформації відповідно до завдання на курсове проектування (варіант 45).
Даний алгоритм зображений на малюнку 1 і містить в собі наступні
функціональні блоки: p>
1) початок функції p>
2) перевірка попадання символу в інтервал p>
3) перевірка коду символу> = 50 p>
4) якщо код символу> = 50 то змінна mask = 50h p>
5) якщо код символу не> = 50 то змінна mask = 40h p>
6) обнулити половину коду p>
7) розкласти по бітам в масив buf c перестановкою p>
8) запис отриманих бітів на символ p>
9) повернути половину коду p>
10) повернути символ програмі p>
11) кінець функції p>
3. Розробка програми h2>
Розроблена програма petrov.cpp призначена для
перетворення інформації перед передачею її в канал зв'язку. Програма повністю
відповідає вимогам, викладеним у розділі 1 (постановка завдання) і містить у
собі наступні функціональні модулі: p>
1) функція getwin - здійснює зчитування позиції
курсору p>
2) функція perest - здійснює перетворення
символу відповідно до завдання. p>
3) основна програма - здійснює оформлення екрану
, Опитування клавіатури [1], виклик функцій [1] відповідно з натиснутою "гарячої
клавіші ", виведення повідомлення про помилку при її виникненні, очищення екрана
, [1] вихід з програми. P>
Дана програма використовує у своїй роботі наступні
змінні: p>
x1, y1, x2, y2 - координати вікна p>
tc, tb - колір вікна p>
px, py - позиція курсора p>
fname [50] - ім'я файлу. p>
Розроблена програма petrov.cpp була повністю
протестована, результати тестування наведено у додатку В. Аналіз
результатів показав, що програма є повністю працездатною. p>
4. Керівництво оператора h2>
Розроблена програма petrov.cpp призначена для
перетворення інформації перед передачею її в канал зв'язку. p>
Дана програма призначена для свого
використання операційною системою MS-DOS. p>
Для запуску програми необхідно викликати на виконання
запускається файл petrov.exe. Після запуску даної програми на екрані появітс
рядок підказки зі списком "гарячих клавіш". Щоб почати роботу з
програмою, користувачеві необхідно завантажити вихідний файл, для чого потрібно з
допомогою клавіш Alt + F1 завантажити вихідний файл, за допомогою клавіш Alt + F2 створити
вихідний файл і натиснути клавіші Alt + F3 для кодування інформації. p>
Для декодування інформації необхідно завантажити вже
записаний файл з допомогою клавіш Alt + F2 і натиснути клавіші Alt + F4. p>
Вихід з програми здійснюється за допомогою клавіші
Esc. P>
У всіх випадках роботи з файлами програма запитує
назва файлу в діалоговому режимі. p>
Для нормальної роботи даної програми необхідно
наявність персонального комп'ютера типу IBM PC стандартної конфігурації. p>
Висновок h2>
У цій роботі вирішена задача перетворення
інформації перед передачею її в канал зв'язку. p>
Розроблено алгоритм розв'язання поставленої задачі [2]. p>
Складена і налагоджена програма на мові С + + [2],
реалізує кодування інформації. p>
У процесі налагодження програми була отримана повністю
працездатна програма. p>
Проведено тестування програми, проаналізовано
отримані результати. p>
Аналіз результатів показав, що поставлена задача
успішно вирішується. p>
Список літератури h2>
1. Б'ярне Страуструп. Мова програмування С + +. У двох
частинах. Пер. з англ. Київ: "ДіаСофт", 1993.-296 с., Іл. P>
2. Корріган Джон: С + + основи програмування: Пер з
англ. -М.: Ентропія, 1995. - 352 с., Іл. P>
ДОДАТОК А p>
(обов'язкове) p>
Текст програми ptrov.cpp наведено в таблиці А1 p>
Таблиця А1 p>
Команда p>
Пояснення p>
# include p>
# include p>
# include p>
struct win_info p>
( p>
int x1, y1, x2, y2 p>
int tc, tb p>
p>
int px, py p>
p>
char fname [50] p>
) win [2] p>
FILE * in, * out p>
char c, ch p>
int i p>
void SetWin (win_info * w) p>
( p>
textcolor (w-> tc) p>
textbackground (w-> tb) p>
window (w-> x1, w-> y1, w-> x2, w-> y2) p>
gotoxy (w-> px, w-> py) p>
) p>
void GetWin (win_info * w) p>
( p>
w-> px = wherex () p>
w-> py = wherey () p>
) p>
char perest (char x) p>
( p>
if ((x> = 0x40) & (x <= 0x5f)) p>
( p>
char mask, buf [4] p>
if (x> = 0x50) mask = 0x50 p>
else mask = 0x40 p>
x ^ = mask p>
p>
buf [0] = (x & 1) p>
p>
buf [1] = (x & 2)/2 p>
buf [2] = (x & 4)/4 p>
buf [3] = (x & 8)/8 p>
x = buf [1] + buf [0] * 2 + buf [3] * 4 + buf [2] * 8 p>
x ^ = mask p>
p>
) p>
return x p>
p>
) p>
void main () p>
( p>
textbackground (WHITE) p>
textcolor (BLACK) p>
clrscr () p>
for (i = 1 p>
i <2000 p>
i + +) putchar (176) p>
window (1,25,80,25) p>
textcolor (BLACK) p>
textbackground (WHITE) p>
clrscr () p>
cprintf ( "ALT-F1 Ісходн.файл ALT-F2 Конечн.файл ALT-F3 кодує. ALT-F4 декодує. ESC-Вихід") p>
win [0]. x1 = 2 p>
win [1]. x1 = 2 p>
win [0]. x2 = 79 p>
win [1]. x2 = 79 p>
win [0]. y1 = 3 p>
win [1]. y1 = 14 p>
win [0]. y2 = 12 p>
win [1]. y2 = 23 p>
win [0]. py = 1 p>
win [1]. px = 1 p>
win [0]. px = 1 p>
win [1]. py = 1 p>
win [0]. tc = LIGHTBLUE p>
win [1]. tc = LIGHTBLUE p>
win [0]. tb = BLUE p>
win [1]. tb = BLUE p>
window (1,1,80,1) p>
textcolor (BLACK) p>
textbackground (WHITE) p>
clrscr () p>
_setcursortype (_NOCURSOR) p>
do p>
( p>
ch = getch () p>
if (ch == 0) switch (getch ()) p>
( p>
координати вікна p>
кольору вікна p>
позиція курсора p>
назва файлу p>
активізувати робоче вікно
і p>
встановити курсор в поточну
позицію p>
вважати поз. курсору p>
перевірка на приналежність
до p>
оброблюваних символів p>
обнулити половину коду p>
розкласти по бітам p>
зібрати біти в зворотному
порядку p>
відновити половину коду p>
повернути новий символ p>
створити робочий екран p>
задати параметри робочих
вікон p>
Команда p>
Пояснення p>
case 104: fclose (in) p>
// Натиснуто ALT-F1 p>
win [0]. px = 1 p>
win [0]. py = 1 p>
window (1,1,80,1) p>
textcolor (BLACK) p>
textbackground (WHITE) p>
clrscr () p>
printf ( "Введіть ім'я початкового файла:") p>
_setcursortype (_NORMALCURSOR)
p>
gets (win [0]. fname) p>
_setcursortype (_NOCURSOR) p>
window (1,2,80,12) p>
clrscr () p>
for (i = 1 p>
i <= 880 p>
i + +) putchar (176) p>
if ((in = fopen (win [0]. fname, "rt "))== NULL) p>
( p>
window (1,1,80,1) p>
textcolor (RED) p>
clrscr () p>
printf ( "% cНемогу відкрити файл -% s --
!!!", 7, & win [0]. Fname) p>
) else p>
( p>
textcolor (RED) p>
textbackground (WHITE) p>
window (39-strlen (win [0]. fname)/2,2,41 + strlen (win [0]. fname)/2,2)
p>
clrscr () p>
printf ( "
% s ", & win [0]. fname) p>
SetWin (& win [0]) p>
clrscr () p>
while (! feof (in)) p>
( p>
c = fgetc (in) p>
if (c! = 'n') putch (c) p>
else ( p>
if (wherey () == 10) break p>
cprintf ( "nr") p>
) p>
) p>
) break p>
case 105: fclose (out) p>
win [1]. px = 1 p>
win [1]. py = 1 p>
window (1,1,80,1) p>
textcolor (BLACK) p>
textbackground (WHITE) p>
clrscr () p>
printf ( "Введіть ім'я кінцевого файлу:") p>
_setcursortype (_NORMALCURSOR)
p>
gets (win [1]. fname) p>
_setcursortype (_NOCURSOR) p>
window (1,13,80,23) p>
clrscr () p>
for (i = 1 p>
i <= 880 p>
i + +) putchar (176) p>
if ((out = fopen (win [1]. fname, "wt "))== NULL) p>
( p>
window (1,1,80,1) p>
textcolor (RED) p>
clrscr () p>
printf ( "% c Немогу створити файл -% s --
!!!", 7, & win [1]. Fname) p>
) else p>
( p>
textcolor (RED) p>
textbackground (WHITE) p>
window (39-strlen (win [1]. fname)/2,13,41 + strlen (win [1]. fname)/2,13) p>
clrscr () p>
printf ( "
% s ", & win [1]. fname) p>
SetWin (& win [1]) p>
clrscr () p>
) break p>
case 106:
if ((in! = NULL) & (out! = NULL)) p>
( p>
c = 0 p>
i = 0 p>
SetWin (& win [0]) p>
clrscr () p>
GetWin (& win [0]) p>
SetWin (& win [1]) p>
clrscr () p>
GetWin (& win [1]) p>
fseek (in, 0,0) p>
fseek (out, 0,0) p>
while (! feof (in))
p>
Натиснуто ALT-F2 p>
ALT-F3 p>
Команда p>
Пояснення p>
( p>
ch = fgetc (in) p>
SetWin (& win [0]) p>
if (ch! = 'n') putch (ch) p>
else cprintf ( "nr") p>
GetWin (& win [0]) p>
ch = perest (ch) p>
SetWin (& win [1]) p>
if (ch! = 'n') putch (ch) p>
else cprintf ( "nr") p>
GetWin (& win [1]) p>
c ^ = ch p>
i + + p>
fputc (ch, out) p>
if (i == 3) p>
( p>
SetWin (& win [1]) p>
if (c! = 'n') putch (c) p>
else cprintf ( "nr") p>
GetWin (& win [1]) p>
fputc (c, out) p>
c = 0 p>
i = 0 p>
) p>
) p>
) break p>
case 107: if ((in! = NULL) & (out! = NULL)) p>
( p>
ch = 0 p>
i = 0 p>
SetWin (& win [0]) p>
clrscr () p>
GetWin (& win [0]) p>
SetWin (& win [1]) p>
clrscr () p>
GetWin (& win [1]) p>
fseek (in, 0,0) p>
fseek (out, 0,0) p>
while (! feof (in)) p>
if (i! = 3) p>
( p>
c = fgetc (in) p>
SetWin (& win [0]) p>
if (c! = 'n') putch (c) p>
else cprintf ( "nr") p>
GetWin (& win [0]) p>
ch ^ = c p>
i + + p>
c = perest (c) p>
SetWin (& win [1]) p>
if (c! = 'n') putch (c) p>
else cprintf ( "nr") p>
GetWin (& win [1]) p>
fputc (c, out) p>
) else p>
( p>
c = fgetc (in) p>
SetWin (& win [0]) p>
if (c! = 'n') putch (c) p>
else cprintf ( "nr") p>
GetWin (& win [0]) p>
if (c == ch) p>
( p>
ch = 0 p>
i = 0 p>
) else p>
( p>
textcolor (RED) p>
textbackground (WHITE) p>
window (1,1,80,1) p>
clrscr () p>
printf ( "% cОшібка у файлі% s", 7, & win [0]. fname) p>
break p>
) p>
) p>
) break p>
) p>
) p>
while (ch! = 27) p>
p>
fcloseall () p>
p>
textcolor (WHITE) p>
textbackground (BLACK) p>
window (1,1,80,25) p>
clrscr () p>
) p>
ALT-F4 p>
вихід, якщо натиснуто ESC p>
закрити всі файли p>
очистити екран p>
ДОДАТОК В p>
РЕЗУЛЬТАТИ РОБОТИ ПРОГРАМИ p>
Введіть ім'я кінцевого файлу: zzz p>
____________________________________ file _____________________________________ p>
_Проверка програми перетворення інформаціі_ _ p>
_ _ p>
_ _ p>
_ _ p>
_ _ p>
_ _ p>
_ _ p>
_ _ p>
_ _ p>
_ _ p>
_____________________________________ zzz
______________________________________ p>
_Про-верчка * просграуммии прoеобкразчовамнія' ин% форкмац'іі__ _ p>
_ _ p>
_ _ p>
_ _ p>
_ _ p>
_ _ p>
_
_ p>
_ _ p>
_ _ p>
__ p>
________________________________________________________________________________ p>
ALT-F1 Ісходн.файл ALT-F2 Конечн.файл ALT-F3 кодує.
ALT-F4 декодує. ESC-Вихід p>
Для підготовки даної роботи були використані
матеріали з сайту http://kurslab.chat.ru/
p>