Программа определения десятичного кода символа и перевод данного кода в двоичную, восьмеричную и шестнадцатеричную системы счисления.

XII Международный конкурс научно-исследовательских и творческих работ учащихся
Старт в науке

Программа определения десятичного кода символа и перевод данного кода в двоичную, восьмеричную и шестнадцатеричную системы счисления.

Уртаева А.А. 1
1МБОУ СОШ № 25 им. Героя Советского Союза Остаева А.Е.
Маркина В.А. 1
1МБОУ СОШ № 25 им. Героя Советского Союза Остаева А.Е.
Автор работы награжден дипломом победителя II степени
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

ВВЕДЕНИЕ

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

Цель: При изучении в школьном курсе информатики раздела «Кодирование текстовой информации» часто ставятся задачи по кодированию и декодированию текстовой информации, а так же представление кодов символов в различных позиционных системах счисления.

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

Задачи:

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

Раскрыть понятие кодирования текстовой информации.

Исследовать понятие позиционных систем счисления.

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

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

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

Я считаю, что моя работа актуальна по нескольким причинам:

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

Во-вторых, применение созданной мной программы даёт наглядное представление о символах текстовой информации, их кодах, переводе из одной системы счисления в другую, а так же декодирование из кодов в символы.

В-третьих, применение прикладной программы значительно упрощает процесс решения задач данного типа.

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

Методы исследования: наблюдение, анализ решения задач, применение прикладной программы.

1.1. КОДИРОВАНИЕ СИМВОЛОВ: ОСНОВА ДЛЯ ОБЕСПЕЧЕНИЯ ВОЗМОЖНОСТИ РАБОТЫ КОМПЬЮТЕРОВ С ТЕКСТОВЫМИ ДАННЫМИ.

В современных компьютерных системах символы, которые люди используют для записи и передачи текстов на своём языке, кодируются с помощью чисел, записанных в двоичной системе счисления. Это делается потому, что микропроцессоры, лежащие в основе современных компьютерных систем, могут делать, по сути, лишь две вещи: производить действия двоичной арифметики и выполнять Булевы логические операции.

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

Традиционно, для того чтобы закодировать один символ используют количество информации равное 1 байту, т. е. I = 1 байт = 8 бит. При помощи формулы, которая связывает между собой количество возможных событий К и количество информации I, можно вычислить сколько различных символов можно закодировать (считая, что символы - это возможные события):

К = 2I = 28 = 256, т. е. для представления текстовой информации можно использовать алфавит мощностью 256 символов.

Суть кодирования заключается в том, что каждому символу ставят в соответствие двоичный код от 00000000 до 11111111 или соответствующий ему десятичный код от 0 до 255 [5, c. 92].

Необходимо помнить, что в настоящее время для кодировки русских букв используют пять различных кодовых таблиц (КОИ - 8, СР1251, СР866, Мас, ISO), причем тексты, закодированные при помощи одной таблицы не будут правильно отображаться в другой кодировке. Наглядно это можно представить в виде фрагмента объединенной таблицы кодировки символов.

Одному и тому же двоичному коду ставится в соответствие различные символы.

Первую (международную) половину таблицы кодов называют таблицей ASCII -- ее ввел американский институт стандартизации ANSI. В этой таблице размещаются прописные и строчные буквы английского алфавита, символы чисел от 0 до 9, все знаки препинания, символы арифметических операций и некоторые другие специальные коды.

За вторую половину кодовой таблицы (коды от 128 до 255) стандарт ASCII не отвечает Разные страны могут создавать здесь свои таблицы. Часто бывает, что даже в одной стране в этой половине действуют несколько разных стандартов, предназначенных для разных компьютерных систем. В России, например, содержание этой половины таблицы может подчиняться четырем разным стандартам, каждый из которых действует в какой-то своей, особой области.

Исследователи из Xerox в последующем "обратили в свою веру" представителей других компьютерных корпораций США, и в конце концов они вместе начали проект американской индустрии, названный Unification Code, или Unicode, главной задачей которого было сведение всех существующих в мире таблиц символов в единую таблицу символов.

1.2. ПОЗИЦИОННЫЕ СИСТЕМЫ СЧИСЛЕНИЯ.

Основные достоинства любой позиционной системы счисления — простота выполнения арифметических операций и ограниченное количество символов (цифр), необходимых для записи любых чисел.

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

   Возможно множество позиционных систем, так как за основание системы счисления можно принять любое число не меньшее 2. Наименование системы счисления соответствует ее основанию (десятичная, двоичная, восьмеричная, шестнадцатеричная и т. д.). 

 Десятичная система характеризуется тем, что в ней 10 единиц какого-либо разряда образуют единицу следующего старшего разряда. Другими словами, единицы различных разрядов представляют собой различные степени числа 10.

  В системе счисления с основанием q (q-ичная система счисления) единицами разрядов служат последовательные степени числа q, иначе говоря, q единиц какого-либо разряда образуют единицу следующего разряда. Для записи чисел в q-ичной системе счисления требуется q различных цифр (0,1,...,q-1).

Аq=± aiqi

Здесь А — само число,

q — основание системы счисления,

ai—цифры, принадлежащие алфавиту данной системы счисления,

n — число целых разрядов числа,

m — число дробных разрядов числа.

Пример 3.  Восьмеричная система счисления.

Основание: q=8.

Алфавит: 0, 1, 2, 3, 4, 5, 6 и 7.

Записав восьмеричное число А8=7764,1 в развернутом виде и произведя вычисления, получим это число, выраженное в десятичной системе счисления:

А8=7*83+7*82+6*81+4*80+1*8-1 = 3584 + 448 + 48 + 4 + 0,125 = 4084,12510

Пример 4.  Шестнадцатеричная система счисления.

Основание: q=16.

Алфавит: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E и F.

Здесь только десять цифр из шестнадцати имеют общепринятое обозначение 0,1, …9. Для записи остальных цифр (10, 11, 12, 13, 14 и 15) обычно используются первые пять букв латинского алфавита.

Таким образом, запись 3АF16 означает:

3АF16 = 3*162+10*161+15*160 = 768+160+15 = 94310.

1.3. СОСТАВЛЕНИЕ ПРОГРАММЫ КОДИРОВАНИЯ ТЕКСТОВОЙ ИНФОРМАЦИИ. ПРЕОБРАЗОВАНИЕ КОДОВ В 2-Ю, 8-Ю, 16-Ю СИСТЕМЫ СЧИСЛЕНИЯ.

1. Выбор и расположения объектов на форме.

Запись процедур для каждого объекта Command. (Приложение 1).

Проведение эксперимента. (Приложение 2).

Сохранение программы как Project.exe.

 

ЗАКЛЮЧЕНИЕ

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

Существует несколько видов кодировки текстовой информации. В частности однобайтные и двухбайтные системы.

Для кодирования символов в операционной системе Windows используется двухбайтная кодировка Unicode, с ней конкурирует кодировка TRON.

Для исследования кодировок чаще используются однобайтовые кодировки текстовой информации ASCII, KOI-8, MAC, ISO.

Применение процесса кодирования и декодирования информации в созданной мной программе используется кодировка ASCII и преобразование кодов в позиционные системы счисления 2-ю, 8-ю и 16-ю.

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

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

Катаев. "Текстовый процессор ЛЕКСИКОН (от Н до С)". Москва, 1992, изд-во "Радио и связь.

А.Е. Борзенко. "IBM PC: устройство, ремонт, модернизация". 2-е изд., 1996, Москва, изд-во "КомпьютерПресс".

В.Д. Пекелис. "Кибернетика от А до Я". 3-е изд., 1990, Москва, изд-во "Детская литература".

Дмитриев В.И. Прикладная теория информации. М.: Высшая школа, 1989.

И. Семакин, Е Хеннер, Информатика. Задачник-практикум, т.1, Москва, ЛБЗ, 1999, с.131-134.

Учебник для 8 класса 7-е издан, стереотипное..Москва БИНОМ. Лабораторная знаний 2018.

Приложение 1.

Запись процедур для каждого объекта Command.

uses vcl;

//$VCLDESIGN+

var

Form1: Form;

TextLabel1: TextLabel;

TextLabel2: TextLabel;

TextLabel3: TextLabel;

TextLabel4: TextLabel;

TextLabel5: TextLabel;

Button1: Button;

Edit1: Edit;

Edit2: Edit;

Button2: Button;

Edit3: Edit;

Edit4: Edit;

Edit5: Edit;

Button3: Button;

Button4: Button;

Button5: Button;

//$VCLDESIGN-

procedure Button1OnClick;

var a,b,c:integer; k:Char;

begin

a:=strToint(edit2.text);

k:=chr(a);

Edit1.text:=k;

end;

procedure Edit1OnClick;

begin

end;

procedure Edit2OnClick;

begin

end;

procedure Form1OnCreate;

begin

end;

procedure Button2OnClick;

var a,l:integer; k:String;f:char;

begin

k:=Edit1.text;

l:=length(k);

f:=k[1];

a:=ord(f);

Edit2.text:=FloatToStr(a);

end;

procedure Button3OnClick;

var b,c,i,okt,des,n, ost,l:integer;s,s1,sbox:string;

begin

des:=StrToInt(Edit2.Text);

n:=0;

i:=0;

s:='';

repeat

inc(n);

inc(i);

ost:=des mod 16;

des:=des div 16;

if ost>=10 then

begin

if ost=10 then s:=s+'A';

if ost=11 then s:=s+'B';

if ost=12 then s:=s+'C';

if ost=13 then s:=s+'D';

if ost=14 then s:=s+'E';

if ost=15 then s:=s+'F';

end

else

begin

s:=s+IntToStr(ost);

end

until des=0;

n:=1;

l:=length(s);

for i:=1 to (l div 2)do

begin

sbox:=s[n];

s[n]:=s[l+l-n];

s[1+l-n]:=sbox[l];

inc(n);

end;

Edit3.text:=s;

end;

procedure Button4OnClick;

const zn:string[8]='01234567';

procedure DecToOct(n:longint;var s:string);

begin

s:='';

while n>0 do

begin

s:=zn[n mod 8+1]+s;

n:=n div 8;

end;

end;

var d:longint;

s:string;

begin

d:=StrToInt(Edit2.Text);

DecToOct(d,s);

Edit4.text:=s;

end;

procedure Button5OnClick;

var n,i: integer; s:string;

begin

repeat

n:=StrToInt(Edit2.Text);

s:='';

until(n > 0);

while n > 0 do begin

if n mod 2 = 0 then

s:= s + '0'

else begin

s:= s + '1';

n:= n - 1;

end;

n:= n div 2;

end;

Edit5.text:=s;

end;

procedure InitControls;

begin

Form1:= Form.Create(0,0,696,410);

Form1.InitControl(True,False,alNone,crDefault,clBtnFace,'Форма1','');

TextLabel1:= TextLabel.Create(Form1,13,48,84,13);

TextLabel1.InitControl(True,True,alNone,crDefault,clBtnFace,'ВведитеСимвол','');

TextLabel2:= TextLabel.Create(Form1,16,88,64,17);

TextLabel2.InitControl(True,True,alNone,crDefault,clBtnFace,'ВведитеКод','');

TextLabel3:= TextLabel.Create(Form1,16,128,66,13);

TextLabel3.InitControl(True,True,alNone,crDefault,clBtnFace,'Кодв 16 рич.','');

TextLabel4:= TextLabel.Create(Form1,16,168,60,13);

TextLabel4.InitControl(True,True,alNone,crDefault,clBtnFace,'Кодв 8 рич.','');

TextLabel5:= TextLabel.Create(Form1,16,216,79,13);

TextLabel5.InitControl(True,True,alNone,crDefault,clBtnFace,'Кодв 2 -ричную','');

Button1:= Button.Create(Form1,368,48,89,25);

Button1.InitControl(True,True,alNone,crDefault,0,'Cимвол','');

Edit1:= Edit.Create(Form1,216,48,121,32);

Edit1.InitControl(True,True,alNone,crDefault,clWindow,'','');

Edit2:= Edit.Create(Form1,216,88,121,32);

Edit2.InitControl(True,True,alNone,crDefault,clWindow,'','');

Button2:= Button.Create(Form1,368,88,75,25);

Button2.InitControl(True,True,alNone,crDefault,0,'Код','');

Edit3:= Edit.Create(Form1,216,128,121,32);

Edit3.InitControl(True,True,alNone,crDefault,clWindow,'','');

Edit4:= Edit.Create(Form1,216,168,121,32);

Edit4.InitControl(True,True,alNone,crDefault,clWindow,'','');

Edit5:= Edit.Create(Form1,216,208,121,32);

Edit5.InitControl(True,True,alNone,crDefault,clWindow,'','');

Button3:= Button.Create(Form1,368,136,75,25);

Button3.InitControl(True,True,alNone,crDefault,0,'10 ->16','');

Button4:= Button.Create(Form1,368,176,75,25);

Button4.InitControl(True,True,alNone,crDefault,0,'10->8','');

Button5:= Button.Create(Form1,368,216,75,25);

Button5.InitControl(True,True,alNone,crDefault,0,'10->2','');

Form1.Font.Color:= clBlack;

TextLabel1.Font.Color:= clBlack;

TextLabel2.Font.Color:= clBlack;

TextLabel3.Font.Color:= clBlack;

TextLabel4.Font.Color:= clBlack;

TextLabel5.Font.Color:= clBlack;

Button1.Font.Color:= clBlack;

Button1.Font.Size:= 15;

Edit1.Font.Color:= clBlack;

Edit1.Font.Size:= 14;

Edit2.Font.Color:= clBlack;

Edit2.Font.Size:= 14;

Button2.Font.Color:= clBlack;

Button2.Font.Size:= 15;

Edit3.Font.Color:= clBlack;

Edit3.Font.Size:= 14;

Edit4.Font.Color:= clBlack;

Edit4.Font.Size:= 14;

Edit5.Font.Color:= clBlack;

Edit5.Font.Size:= 14;

Button3.Font.Color:= clBlack;

Button3.Font.Size:= 15;

Button4.Font.Color:= clBlack;

Button4.Font.Size:= 15;

Button5.Font.Color:= clBlack;

Button5.Font.Size:= 15;

Form1.OnCreate:=Form1OnCreate;

Button1.OnClick:=Button1OnClick;

Edit1.OnClick:=Edit1OnClick;

Edit2.OnClick:=Edit2OnClick;

Button2.OnClick:=Button2OnClick;

Button3.OnClick:=Button3OnClick;

Button4.OnClick:=Button4OnClick;

Button5.OnClick:=Button5OnClick;

Form1.Position:= poScreenCenter;

Form1.OnCreate;

Form1.Show;

end;

begin

InitControls;

end.

Просмотров работы: 69