1 до Kol (количество символов в исходном числе). Внутри

этого цикла условным оператором If определяется в за-

висимости от символа его числовой эквивалент для даль-


- 15 -

нейшего умножения, а затем переменная Promeg увеличива-

ется на число равное произведению полученного числового

эквивалента на основание исходной системы исчисления в

степени Kol-1. В результате выполнения этого цикла мы

из исходного числа в виде набора символов получили его

значение в десятеричной системе исчисления. Таким обра-

зом половину перевода мы осуществили. Теперь нам нужно

это значение перевести в необходимую систему исчисления.

Далее следует обнуление переменной I, а после этого

циклом с пост-условием определяется максимальный поря-

док результата (см. п.III. Теоретические основы решения

задачи).

После того как мы определили этот порядок и записали

его в переменную I, организуется цикл от I до 0. Внутри

этого цикла проводятся следующие преобразования для по-

лучения необходимого результата:

- переменной Help присваивается числовое значение

Jтого элемента в исходном результате;

- условным оператором If из этого значения получает

символ, который будет стоять в результате;

- записывается полученный символ в строку символов,

которая будет содержать результат;

- вычисляется остаток, который записывается в пере-

менную Promeg.

Все эти действия были описаны в теоретической части

настоящего реферата, а их практическое осуществление не

требует никакого труда.

После выполнения этих операций, программа переходит


- 16 -

к получению следующего символа, пока не получит послед-

ний символ искомого результата. Как только результат

получен, он выводится на экран оператором WriteLn.

После этого следует переход на начало цикла с

пост-условием, в котором будет опять вводиться исходное

число и получаться результат, если не была нажата кла-

виша ESC. Если все же была нажата клавиша ESC то выпол-

нение программы передается основному циклу с

пост-условием который включает в себя выбор в меню.

Условие выхода из этого цикла - это нажатие клавиши

ВВОД, если курсор меню стоял на строке "ESC - ВЫХОД В

DOS".

Если это условие выполнилось, то осуществляется очи-

щение экрана и выполнение программы завершается.

 2VIII. КАК ПОЛЬЗОВАТЬСЯ ПРОГРАММОЙ

Сразу после запуска программы на экране появляется

меню возможных переводов:


- 17 -

 _____________________________________________________

| |

| > Перевод из десятеричного кода в двоичный. |

| |

| Перевод из двоичного кода в десятеричный. |

| |

| Перевод из десятеричного кода в шестнадцатиричный.|

| |

| Перевод из шестнадцатиричного кода в десятеричный.|

| |

| Перевод из двоичного кода в шестнадцатиричный. |

|  |

| Перевод из шестнадцатиричного кода в двоичный. |

| |

| ESC - ВЫХОД В DOS |

|  |

|_____________________________________________________|

Слева от первой строки стоит метка выбора. Клавишами

ВВЕРХ и ВНИЗ можно перемещать метку по меню. После того

как метка подведена к нужной строке нажимается клавиша

ВВОД. Если Вы хотите из главного меню выйти из прог-

раммы, то это можно сделать двумя способами: нажать

клавиши ESC или подвести курсор к последней строке и

нажать ВВОД.

Если Вы нажали ВВОД на одной из верхних строк меню

то на экране появляется следующая картина:


- 18 -

 _____________________________________________________

| |

| Перевод из десятеричного кода в двоичный. |

| |

| ? 32 = 100000 |

| ? 33 = 100001 |

| ? 26 = 11010 |

| ? 500 = 111110100  |

| ? 3 = 11 |

| ? 34_ |

| |

| |

|  |

| |

| |

| ESC - ВЫХОД В МЕНЮ |

|_____________________________________________________|

Однако вместо верхней строки может стоять любая из

шести строк указанных в меню, в зависимости от того,

стоя на какой строке меню Вы нажали ВВОД.

В этом состоянии можно вводить исходное число, при-

чем программа будет сама определять, допустимый символ

Вы вводите или нет. Так например если Вы переводите из

двоичной системы исчисления, то Вы можете нажимать

только клавиши '1' или '0', в противном случае програм-

ма нажатую клавишу не проигнорирует.


- 19 -

После того как Вы ввели исходное число, нужно нажать

клавишу ВВОД, после чего напротив исходного числа через

знак равно появится эквивалент исходного числа, но уже

в нужной системе исчисления.

Если Вы ошиблись при вводе исходного числа, то можно

нажать клавишу ЗАБОЙ, и последний введенный символ сот-

рется.

Чтобы завершить выполнение программы или осуществить

перевод из другой системы исчисления, нужно нажать кла-

вишу ESC (о чем указано в нижней строке экрана). В этом

случае Вы окажетесь в начальном меню. Если Вы хотите

продолжить перевод, то опять клавишами ВВЕРХ и ВНИЗ

подведите курсор к нужной строке меню и нажмите ВВОД.

Если же Вы хотите завершить выполнение программы, то

это можно сделать двумя вышеописанными способами.


- 8 -

Program Perevod;

Uses Crt;

Const P1='Перевод из '; { константы для начального меню }

s:array [1..7] of string[50]=(p1+'десятеричного кода в двоичный.',

p1+'двоичного кода в десятеричный.',

p1+'десятеричного кода в шестнадцатиричный.',

p1+'шестнадцатиричного кода в десятеричный.',

p1+'двоичного кода в шестнадцатиричный.',

p1+'шестнадцатиричного кода в двоичный.',

' ESC - ВЫХОД В DOS');

Var Promeg,Chast:Longint;

Znach,j:Integer;

Klav:Char;

i,Stroka,Isx,Kon,y,Kol,Help:Byte;

Keys: Set of '0'..'F';

a: Array [1..255] of Char;

Otv,Pom: string;

Procedure Zast; { процедура вывода меню }

begin

Window(1,1,80,24); { выделить окно 80х24 }

ClrScr; { очистить окно }

TextColor(15);  { установить цвет - белый }

FOR I:=1 TO 7 do begin { цикл по строкам }

GoToXY (15,I*2); Write (s[i]); { формирование меню }

end;

end { zast }; { конец процедуры меню }

Function Stepen (Chis,St: Byte): Longint; { функция возведения в степень }

var c: Byte;

Res: longint;

begin

Res:=1;

For c:=1 to st do Res:=Res*chis;

Stepen:=Res; { присвоение функции значения }

End { Stepen }; { конец функции возведения в сепень }

Begin { НАЧАЛО ОСНОВНОЙ ПРОГРАММЫ }

y:=1; { y - текущая строка в меню }

Zast; { вывести меню }

Repeat { цикл для перемещения в меню }

TextColor(13);

GoToXY (13,y*2); Write(Chr(16)); { вывести метку текущей строки меню }

klav:=ReadKey; { считывание клавиши в klav }

GoToXY (13,y*2); Write(' '); { стирание старой метки текущей строки }

if Ord(Klav)=72 then if y > 1 then y:=y-1 else y:= 7; { если клавиша ВВЕРХ }

if Ord(Klav)=80 then if y < 7 then y:=y+1 else y:= 1; { если клавиша ВНИЗ }

if Ord(Klav)=27 then begin y:=7; klav:=Chr(13) end; { если клавиша ESC }

if (Ord(Klav)=13) and (y<7) then begin { если клавиша ВВОД не на выходе }

ClrScr; { очистить экран }

TextCOLOR (13); GoToXY (20, 1); Write (s[y]); { вывести название перевода }

TextCOLOR (10); GoToXY (31,24); Write ('ESC - ВЫХОД В МЕНЮ'); { вывести клавишу для выхода }

TextColor(15); { поменять цвет - белый }

Window(1,2,80,23);  { установить окно со 2 по 23 строки }

Stroka:=2; { текущая строка }


- 9 -

Case y of { определение клавиш которые можно будет нажимать }

1,3 : begin { если перевод из десятиричного кода }

Isx:=10;

Keys:=['0'..'9']; { возможные клавиши }

If y=1 Then Kon:=2 else Kon:=16; { присвоение системы исчисления результата }

end;

2,5 : begin

Isx:= 2;

Keys:=['0','1']; { определение клавиш которые можно будет нажимать }

If y=2 Then Kon:=10 else Kon:=16; { присвоение системы исчисления результата }

end;

4,6 : begin

isx:=16;

keys:=['0'..'9','A'..'F']; { определение клавиш которые можно будет нажимать }

if y=4 then kon:=10 else kon:=2; { присвоение системы исчисления результата }

end;

end;

Repeat { основной цикл для перевода }

Write('? '); Promeg:=0; Kol:=0; Otv:=''; { подготовительные действия }

Repeat  { цикл для ввода числа }

klav:=ReadKey; { чтение клавиши }

if UpCase(Klav) in Keys then begin { если клавиша допустимая }

kol:=kol+1; { количество символов в исходном числе }

a[kol]:=UpCase(Klav); { запоминание введенного символа }

Write (a[kol]); { вывод нажатого символа }

end;

if (Ord(Klav)=8) and (Kol>0) then begin { если клавиша ЗАБОЙ }

kol:=kol-1;

GoToXY(WhereX-1,WhereY);

ClrEol;

end;

Until (Ord(klav)=13) or (Ord(klav)=27); { пока не нажата ВВОД или ESC }

if Ord(klav)=13 then begin { если клавиша ВВОД - начало обработки результата }

for i:=1 to kol do begin { перевода введенного числа в десятеричную систему}

if a[i]<'A' then Znach:=Ord(a[i])-48

else Znach:=Ord(a[i])-55;

promeg:=promeg+Znach*Stepen(isx,kol-i);

end;

i:=0;

Repeat { определение максимального порядка результата }

i:=i+1;

Chast:=Trunc(Promeg/Stepen(Kon,i));

Until Chast<Kon;

For j:=i downto 0 do begin { перевод в нужную систему исчисления }

Help:=Trunc(Promeg/Stepen(Kon,j));

If Help>9 Then Pom:=Chr(55+Help)

Else Str(Help,Pom);

Otv:=Otv+Pom;

Promeg:=Promeg-Help*Stepen(Kon,j);

end;

WriteLn(' = ',Otv); { вывод результата }

end; { конец обработки результата }

Until Ord(Klav)=27; { если нажата ESC то выход в основное меню }

Zast; { вывод заставки }

end;

Until (Ord(Klav)=13) and (y=7); { если в меню нажали ESC или ВВОД на выходе }

ClrScr { очистить экран }

end.


Информация о работе «Изучение методики перевода из одной системы исчисления в другую и разработка программы для этой операц»
Раздел: Информатика
Количество знаков с пробелами: 23726
Количество таблиц: 0
Количество изображений: 0

Похожие работы

Скачать
332503
41
0

... по соответствующему полю). В окне Конструктора таблиц созданные связи отображаются визуально, их легко изменить, установить новые, удалить (клавиша Del). 1 Многозвенные информационные системы. Модель распределённого приложения БД называется многозвенной и её наиболее простой вариант – трёхзвенное распределённое приложение. Тремя частями такого приложения являются: ...

Скачать
763860
21
0

... Е Ц Е Н З И Яна магистерскую диссертацию магистра Азербайджанского Государственного Экономического Университета Султанлы Ильгара Рауф оглы на тему «Учет и аудит текущих операций и расчетов» Тема диссертационной работы и план темы по представлению кафедры «Бухгалтерский учет и аудит» утверждены ректоратом Азербайджанского Государственного Экономического Университета и ...

Скачать
123983
17
0

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

Скачать
162453
16
14

... , несмотря на такое лидерство, еще рано говорить о том, что информационные системы прочно вошли жизнь современных управленцев. 2    АНАЛИЗ ИНФОРМАЦИОННОГО ОБЕСПЕЧЕНИЯ УПРАВЛЕНИЯ ПРЕДПРИЯТИЕМ 2.1    Общая характеристика объекта исследования ОАО «Технический университет КубГТУ» был создан 9 октября 1992 года. Новые экономические условия требовали создания в Кубанском государственном ...

0 комментариев


Наверх