Разработка алгоритма решения задачи преобразования информации




Преобразования информации перед передачей её в канал связи

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

Разработал: студент Петров А.В.

Пензенский государственный университет, Кафедра "РЭСС и ЗИ"

Пенза 1998

Задание на курсовое проектирование по теме Разработка программы обработки информации на языке С++

1. Дисциплина - Алгоритмизация и программирование.

2. Вариант задания - 45.

3. Студент Петров А.В. группа 97ПС3.

4. Исходные данные на проектирование

4.1. Общие требования к программе:

- наличие пользовательского интерфейса

- чтение необходимой информации из файлов

- сохранение результатов в файлах

- контроль ошибок при работе с файлами

- преобразование информации по заданному алгоритму

- обратное преобразование информации

- использование избыточности для контроля ошибок

- одновременное отображение на экране преобразованной и не преобразованной информации.

4.2. Требования к пользовательскому интерфейсу:

- обеспечить управления программой посредством "горячих клавиш" (сочетании клавиш) из диапазона Alt-F1 - Alt-F10, допускается использование клавиши Esc

- обеспечить одновременное отображение на экране преобразованной и не преобразованной информации

- обеспечить цветовое выделение искажённой информации.

4.3. Требования к преобразованию информации:

- преобразование символов с кодами 40h - 5Fh (верхний регистр латинского алфавита)

- использование для преобразования операци. перестановки:

биты (0-1,1-0,2-3,3-2).

- использование для формирования избыточности операцию исключающего ИЛИ (сложение по модулю 2)

- избыточные символы формируются на каждые 3 символа информации.

5. Объём работы по проекту.

5.1. Содержание работы:

- разработка алгоритмов

- создание программы на базе разработанных алгоритмов

- описание работы программы

- описание пользовательского интерфейса программы

6. Графическая часть

7.Экспирементальная часть

- отладка отдельных частей программы

- проверка работоспособности программы

8. Календарный план выполнения курсового проекта.

8.1 Срок выполнения работ по разделам:

- выдача задания к 1998 г

- разработка алгоритма работы программы к 1998 г

- разработка и отладка пользотательского интерфейс к 1998 г

- разработка и отладка процедур записи и чтения файлов к 1998г

- разработка и отладка процедуры преобразования файлов к 1998г

- оформление П3 к 1998г

- подготовка к защите к 1998г.

Дата защиты проекта " " 1998г.

Руководитель проекта Дорошкевич В.В.

Задание получил " " 1998г.

Студент Петров А.В.

РЕФЕРАТ

Пояснительная записка содержит 16 листов, 1 рисунк, 2 источника,

2 таблицы, 2 приложения.

ПРОГРАММА, АЛГОРИТМ РАБОТЫ, ПЕРЕСТАНОВКА, ИЗБЫТОЧНОСТЬ.

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

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

В результате была получена работающая программа, а также результаты её работы.

Введение

В настоящее время индустрия производства компьютеров и программного обеспечения для них является одной из наиболее важных сфер экономики развитых стран. Ежегодно в мире продаются десятки миллионов компьютеров. Только в США объем продаж компьютеров составляет десятки миллионов долларов и постоянно продолжает расти.

В чем же причины такого стремительного роста индустрии персональных компьютеров и их сравнительная выгодность для многих деловых применений?

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

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

Язык С++ - универсальный язык общего назначения, область приложений которого - программирование систем в самом широком смысле. Кроме этого, С++ успешно используется как во многих приложениях, так и в мощных операционных системах. Реализация С++ осуществлена для машин в диапазоне от самых простых персональных компьютеров до самых мощных суперкомпьютеров и для всех операционных систем.

И потому в данной курсовой работе необходимо применить язык программирования С++, как наиболее подходящий для решения поставленной задачи.

Постановка задачи

Заданием на данную курсовую работу является разработка программы на языке C++ для преобразования информации перед передачей её в канал связи.

Программа должна выполнять следующие действия - создать многооконный интерфейс пользователя, вывести строку подсказки с назначениями каждой из "горячей клавиш", организовать опрос клавиатуры, вызов той или иной функции, соответствующей нажатой "горячей клавише'. Исходные данные (преобразуемый текст) должны храниться в файле на диске до загрузки данной программы и считываться по запросу пользователя. Имя файла задаётся пользователем в диалоговом режиме. Кодирование и декодирование информации должно осуществляться при нажатии пользователем соответствующих "горячих клавиш".

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

В качестве "горячих клавиш" должны использоваться клавиши (комбинации клавиш) из диапазона Alt+F1 - Alt+F10, клавиша Esc может использоваться для выхода из программы.

В данной курсовой работе для кодирования данных используется метод перестановки бис символа, варианты которой представлены в таблице 1.

Таблица 1

До перестановки        
После перестановки        

Избыточный байт в выходном файле формируется через каждые 3 символа путём сложения по модулю 2.

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

Разработка алгоритма решения задачи преобразования информации

По условиям, заданным в задаче, исходный текст должен кодироваться с избыточностью путём сложения по модулю 2 на каждые 3 символа. Kодирование должно осуществляться путём подстановки символа по следующей схеме (0-1,1-0,2-3,3-2)

В связи с этим был разработан алгоритм кодирования информации в соответствии с заданием на курсовое проектирование (вариант 45). Данный алгоритм изображен на рисунке 1 и содержит в себе следующие функциональные блоки:

1) начало функции

2) проверка попадания символа в интервал

3) проверка кода символа >=50

4) если код символа >=50 то переменная mask=50h

5) если код символа не >=50 то переменная mask=40h

6) обнулить половину кода

7) разложить по битам в массив buf c перестановкой

8) запись полученных битов в символ

9) вернуть половину кода

10) возвратить символ программе

11) конец функции

Разработка программы

Разработанная программа petrov.cpp предназначена для преобразования информации перед передачей её в канал связи. Программа полностью отвечает требованиям, изложенным в разделе 1 (постановка задачи) и содержит в себе следующие функциональные модули:

1) функция getwin - осуществляет считывание позиции курсора

2) функция perest - осуществляет преобразование символа в соответствии с заданием.

3) основная программа - осуществляет оформление экрана, опрос клавиатуры [1], вызов функций [1] в соответствии с нажатой "горячей клавиши", вывод сообщения об ошибке при её возникновении, очистку экрана, [1] выход из программы.

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

x1,y1,x2,y2 - координаты окна

tc, tb - цвет окна

px, py - позиция курсора

fname[50] - имя файла.

Разработанная программа petrov.cpp была полностью протестирована, результаты тестирования приведены в приложении В. Анализ результатов показал, что программа является полностью работоспособной.

Руководство оператора

Разработанная программа petrov.cpp предназначена для преобразования информации перед передачей её в канал связи.

Данная программа предназначена для своего использования операционной системой MS-DOS.

Для запуска программы необходимо вызвать на выполнение запускаемый файл petrov.exe. После запуска данной программы на экране появитс строка подсказки со списком "горячих клавиш". Чтобы начать работу с программой, пользователю необходимо загрузить исходный файл, для чего нужно с помощью клавиш Alt+F1 загрузить исходный файл, с помощью клавиш Alt+F2 создать выходной файл и нажать сочетание клавиш Alt+F3 для кодирования информации.

Для декодирования информации необходимо загрузить уже записанный файл с помощью клавиш Alt+F2 и нажать сочетание клавиш Alt+F4.

Выход из программы осуществляется при помощи клавиши Esc.

Во всех случаях работы с файлами программа запрашивает имя файла в диалоговом режиме.

Для нормальной работы данной программы необходимо наличие персонального компьютера типа IBM PC стандартной конфигурации.

Заключение

В данной курсовой работе решена задача преобразования информации перед передачей её в канал связи.

Разработан алгоритм решения поставленной задачи [2].

Составлена и отлажена программа на языке С++ [2], реализующая кодирование информации.

В процессе отладки программы была получена полностью работоспособная программа.

Проведено тестирование программы, проанализированы полученные результаты.

Анализ результатов показал, что поставленная задача успешно решается.

Список литературы

1. Бьярн Страуструп. Язык программирования С++.в двух частях. Пер. с англ. Киев: "ДиаСофт", 1993.-296 с.,ил.

2. Корриган Джон: С++ основы программирования: Пер с англ. -М.:Энтроп, 1995. - 352 с., ил.

ПРИЛОЖЕНИЕ А

(обязательное)

Текст программы ptrov.cpp приведён в таблице А1

Таблица А1

Команда Пояснение
#include <stdio.h> #include <conio.h> #include <string.h> struct win_info { int x1, y1, x2, y2 int tc, tb   int px, py   char fname[50] }win[2] FILE *in, *out char c, ch int i void SetWin(win_info * w) { textcolor(w->tc) textbackground(w->tb) window(w->x1,w->y1,w->x2,w->y2) gotoxy(w->px,w->py) } void GetWin(win_info * w) { w->px=wherex() w->py=wherey() } char perest(char x) { if ((x>=0x40)&(x<=0x5f)) { char mask, buf[4] if (x>=0x50) mask=0x50 else mask=0x40 x^=mask   buf[0]=(x&1)   buf[1]=(x&2)/2 buf[2]=(x&4)/4 buf[3]=(x&8)/8 x=buf[1]+buf[0]*2+buf[3]*4+buf[2]*8 x^=mask   } return x   } void main() { textbackground(WHITE) textcolor(BLACK) clrscr() for(i=1 i<2000 i++) putchar(176) window(1,25,80,25) textcolor(BLACK) textbackground(WHITE) clrscr() cprintf(" ALT-F1 Исходн.файл ALT-F2 Конечн.файл ALT-F3 Кодир. ALT-F4 Декодир. ESC-Выход") win[0].x1=2 win[1].x1=2 win[0].x2=79 win[1].x2=79 win[0].y1=3 win[1].y1=14 win[0].y2=12 win[1].y2=23 win[0].py=1 win[1].px=1 win[0].px=1 win[1].py=1 win[0].tc=LIGHTBLUE win[1].tc=LIGHTBLUE win[0].tb=BLUE win[1].tb=BLUE window(1,1,80,1) textcolor(BLACK) textbackground(WHITE) clrscr() _setcursortype(_NOCURSOR) do { ch=getch() if (ch==0) switch(getch()) {   координаты окна цвета окна позиция курсора имя файла активизировать рабочее окно и установить курсор в текущую позицию считать поз. курсора проверка на принадлежность к обрабатываемым символам обнулить половину кода разложить по битам собрать биты в обратном порядке восстановить половину кода вернуть новый символ создать рабочий экран задать параметры рабочих окон  
Команда Пояснение
case 104: fclose(in) // Нажата ALT-F1 win[0].px=1 win[0].py=1 window(1,1,80,1) textcolor(BLACK) textbackground(WHITE) clrscr() printf(" Введите имя исходного файла: ") _setcursortype(_NORMALCURSOR) gets(win[0].fname) _setcursortype(_NOCURSOR) window(1,2,80,12) clrscr() for(i=1 i<=880 i++) putchar(176) if((in=fopen(win[0].fname,"rt"))==NULL) { window(1,1,80,1) textcolor(RED) clrscr() printf(" %cНемогу открыть файл - %s -!!!",7,&win[0].fname) } else { textcolor(RED) textbackground(WHITE) window(39-strlen(win[0].fname)/2,2,41+strlen(win[0].fname)/2,2) clrscr() printf(" %s",&win[0].fname) SetWin(&win[0]) clrscr() while(!feof(in)) { c=fgetc(in) if(c!='\n') putch(c) else { if (wherey()==10) break cprintf("\n\r") } } } break case 105: fclose(out) win[1].px=1 win[1].py=1 window(1,1,80,1) textcolor(BLACK) textbackground(WHITE) clrscr() printf(" Введите имя конечного файла: ") _setcursortype(_NORMALCURSOR) gets(win[1].fname) _setcursortype(_NOCURSOR) window(1,13,80,23) clrscr() for(i=1 i<=880 i++) putchar(176) if((out=fopen(win[1].fname,"wt"))==NULL) { window(1,1,80,1) textcolor(RED) clrscr() printf("%c Немогу создать файл - %s -!!!",7,&win[1].fname) } else { textcolor(RED) textbackground(WHITE) window(39-strlen(win[1].fname)/2,13,41+strlen(win[1].fname)/2,13) clrscr() printf(" %s",&win[1].fname) SetWin(&win[1]) clrscr() } break case 106: if((in!=NULL)&(out!=NULL)) { c=0 i=0 SetWin(&win[0]) clrscr() GetWin(&win[0]) SetWin(&win[1]) clrscr() GetWin(&win[1]) fseek(in,0,0) fseek(out,0,0) while(!feof(in))     Нажата ALT-F2   ALT-F3  
Команда Пояснение
{ ch=fgetc(in) SetWin(&win[0]) if (ch!='\n') putch(ch) else cprintf("\n\r") GetWin(&win[0]) ch=perest(ch) SetWin(&win[1]) if (ch!='\n') putch(ch) else cprintf("\n\r") GetWin(&win[1]) c^=ch i++ fputc(ch,out) if (i==3) { SetWin(&win[1]) if (c!='\n') putch(c) else cprintf("\n\r") GetWin(&win[1]) fputc(c,out) c=0 i=0 } } } break case 107: if((in!=NULL)&(out!=NULL)) { ch=0 i=0 SetWin(&win[0]) clrscr() GetWin(&win[0]) SetWin(&win[1]) clrscr() GetWin(&win[1]) fseek(in,0,0) fseek(out,0,0) while(!feof(in)) if (i!=3) { c=fgetc(in) SetWin(&win[0]) if (c!='\n') putch(c) else cprintf("\n\r") GetWin(&win[0]) ch^=c i++ c=perest(c) SetWin(&win[1]) if (c!='\n') putch(c) else cprintf("\n\r") GetWin(&win[1]) fputc(c,out) } else { c=fgetc(in) SetWin(&win[0]) if (c!='\n') putch(c) else cprintf("\n\r") GetWin(&win[0]) if (c==ch) { ch=0 i=0 } else { textcolor(RED) textbackground(WHITE) window(1,1,80,1) clrscr() printf(" %cОшибка в файле %s",7,&win[0].fname) break } } } break } } while(ch!=27)   fcloseall()   textcolor(WHITE) textbackground(BLACK) window(1,1,80,25) clrscr() }     ALT-F4   выход, если нажат ESC закрыть все файлы очистить экран  

ПРИЛОЖЕНИЕ В

РЕЗУЛЬТАТЫРАБОТЫПРОГРАММЫ

Введите имя конечного файла: zzz

____________________________________ file _____________________________________

_Проверка программы преобразования информации_ _

_ _

_ _

_ _

_ _

_ _

_ _

_ _

_ _

_ _

_____________________________________ zzz ______________________________________

_Про-верчка *просграуммыы прoеобкразчовамнияъ ин%форкмацъии__ _

_ _

_ _

_ _

_ _

_ _

_ _

_ _

_ _

_ _

________________________________________________________________________________

ALT-F1 Исходн.файл ALT-F2 Конечн.файл ALT-F3 Кодир. ALT-F4 Декодир. ESC-Выход

Для подготовки данной работы были использованы материалы с сайта https://kurslab.chat.ru/



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2020-03-31 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: