Термінова допомога студентам
Дипломи, курсові, реферати, контрольні...

Изучение методики перекладу з однієї системи обчислення до іншої й розробка програми з цією операц

РефератДопомога в написанніДізнатися вартістьмоєї роботи

Натиснута клавіша «ДОГОРИ «. У результаті його выполнения. Набагато простіше. Розглянемо її на прикладі перекладу из. Введення вихідного числа. Спочатку йде очікування нажатия. Як мітка підведено до потрібної рядку нажимается клавиша. Ния в двійкову й у шестнадцатиричную можна осуществлять. Коли клавіша буде натиснута, його значення буде присвоено. Значення клавіші ВВЕДЕННЯ. Обидва цих значень… Читати ще >

Изучение методики перекладу з однієї системи обчислення до іншої й розробка програми з цією операц (реферат, курсова, диплом, контрольна)

В У Є Д Є М І Е.

Проблема перекладу з однієї системи обчислення в дру;

гую часто-густо зустрічається при програмуванні. Осо;

бенно часто з’являється така проблема при программиро;

вании на Ассемблері. Наприклад при визначенні адреса.

осередки пам’яті, щоб одержати двоичного чи шестнадцати;

ричного еквівалентів десятеричного числа. Іноді встает.

проблема збільшення швидкості обчислень, і тоді прихо;

дит на допомогу двоичная система обчислення. У этой.

системі обчислення дуже швидко виробляти операцию.

множення шляхом зсуву однієї з операндов в двоичном.

вигляді вліво на число позицій у якій стоїть еди;

ка у другому операнде.

Розглянемо докладніше як і здійснюється. Пусть.

потрібно помножити число 1101 на 101 (обидва вересня двоич;

іншої системі обчислення). Машина робить це следующим.

чином: вона бере число 1101, і якщо перший элемент.

другого множника дорівнює 1 вона заносить їх у сумму.

Потім зрушує число 1101 вліво однією позицію, полу;

чаю цим 11 010 і якщо другий елемент другого мно;

жителя дорівнює одиниці то теж заносить їх у суму. Если.

елемент другого множника нульовий то сума не изме;

няется. У зв’язку з цим, якщо другий множник содержит.

багато нулів, то операція множення виконується довольно.

— 3 ;

довго, т.к. машина перевіряє кожну цифру другого мно;

жителя, зокрема і нулі. Якщо ж самому робити опе;

рацію множення то нулі можна оминути й тоді умно;

жение стане быстрее.

Що ж до застосування шестнадцатиричной системы.

обчислення то тут великі можливості. Во-пер;

вых, деякі стандартні процедури Паскаля і Сі тре;

буют завдання параметрів в шестнадцатиричной системі, а.

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

зберігання інформації, т.к. число в шестнадцатиричном ви;

де займає менше обсягу диска ніж теж число в деся;

теричном, а тим більше двоичном виде.

Отже ми переконалися, що проблему перекладу из.

двоичной системи обчислення в десятеричную, з шестнад;

цатиричной в десятеричную і навпаки дуже актуальна.

2II. ПОСТАНОВКА ЗАДАЧИ.

З запровадження з’ясувалося, що найчастіше встре;

чающиеся системи обчислення це двоичная, шестнадцати;

ричная і десятеричная. Іноді трапляється восьмирич;

ная система обчислення, але це буває так рідко, що не.

слід за цьому. Отже, наше завдання осу;

ществить переведення з двоичной системи обчислення в деся;

теричную і шестнадцатиричную, з десятеричной в двоич;

ную і шестнадцатиричную і з шестнадцатиричной в двоич;

ную і десятеричную, тобто. взаємно зв’язати всі ці три.

системи исчисления.

— 4 ;

ТЕОРЕТИЧНА ОСНОВА РІШЕННЯ ЗАДАЧИ.

Які ж практично здійснюється переклад з одной.

системи обчислення до іншої? Спробуємо разобраться.

Припустимо ми мусимо перевести число 567 десятеричной.

системи в двійкову систему. Робиться наступним об;

разом: відшукується максимальна ступінь двійки, чтобы.

два в цієї ступеня було менше або дорівнює исходному.

числу. У нашому випадку це 9, т.к. 29=512, а 210=1024.

що більше нашого початкового числа. Отже мы.

отримали число розрядів результату. Воно одно 9+1=10.

Отже результат матиме вид 1ххххххххх, де вместо.

x може тупцювати 1 чи 0. Знайдемо другу цифру результата.

Зведемо Кобзареву двійку в ступінь 9 і віднімемо з исходного.

числа: 567−29=55. Потім порівнюємо із кількістю 28=256.

Оскільки 55 менше 256 то дев’ятий розряд буде нулем,.

тобто. результат вже прийме вид 10хххххххх. Рассмотрим.

восьмий розряд: 27=128 > 55, отже, і восьмий разряд.

буде нулем. Т.к. 26=64 то сьомий розряд дорівнює нулю.

Отже ми отримали чотири старших розряду и.

число набуде вигляду 1000хххххх. Обчислюємо 25=32 і видим,.

що 32 < 55, отже шостий розряд дорівнює 1 (результат>

10 001ххххх), залишок 55−32=23. 24=16 < 23 — п’ятий раз->

ряд 1 => 100 011хххх. Залишок 23−16=7. 23=8 > 7 =>

1 000 110ххх. 22=4 < 7 => 10 001 101хх, залишок 3. 21=2.

3 => 100 011 011х, залишок 1. 20=1 = 1 => 1 000 110 111. Мы.

отримали кінцевий результат.

— 5 ;

еперь спробуємо перевести теж число 567, але вже настав в.

шестнадцатиричную систему. Підхід приблизно такий же.

Визначимо максимальний розряд. Т.к. 162=256 < 567, а>

163=4096 > 567, то максимальний розряд 2+1=3. Опреде;

лим число, яке буде стояти в третьому разряде.

Шукається максимальний множник не більше від 1 до 15,.

щоб поточна ступінь шістнадцяти помножена на этот.

множник була за чи дорівнювала вихідному числу (а.

надалі - залишку). У прикладі цей множитель.

2, т.к. 256*2=512 < 567, а 256*3=768 > 567. Значит.

старший розряд нашого результату дорівнюватиме 22 0, і ре;

зультат набуде вигляду 2хх, де замість x можуть стояти любые.

цифри чи літери з нижче перечисленных:

0,1,2,3,4,5,6,7,8,9,A, B, C, D, E, F. Обчислюємо остаток:

567−2*162=55. Визначимо що буде стояти у втором.

розряді. Оскільки 3*161=48 < 55, а 4*161=64 > 55, то.

у другому розряді буде стояти цифра 23 0. Оста;

ток=55−3*161=7. Визначаємо перший розряд: т.к. 160=1.

то цифра першого розряду дорівнює залишку, тобто. 27 0. Таким.

чином отримали число 2237 0, але вже шестнадцатирич;

іншої системі исчисления.

Операція перекладу з десятеричной системи выглядит.

набагато простіше. Розглянемо її на прикладі перекладу из.

шестнадцатиричной системи в десятеричную.

Припустимо ми мусимо перевести число 24A3 °F 0 В десятерич;

ную систему. Беремо старший (4 ый) розряд і будуємо 16.

до рівня 4−1=3, отримуємо 163=4096. Отриманий резуль;

тат множимо на значення четвертого розряду, тобто. 4.

— 6 ;

Виходить 4096*4=16 384. Цей результат ми заносимо в.

суму. Переходимо ось до чого розряду: 162=256. 256.

потрібно помножити на значення третього розряду тобто. A. Как.

відомо в шестнадцатиричной системі обчислення буквы.

від A до F символізують числа від 10 до 15 (A=10, B=11,.

C=12, D=13, E=14, F=15). Помноживши 256 на 10 одержимо 2560.

і це результат додаємо від суми, у якій ми по;

ка було 16 384. У суму ми вийшло 18 944. Перехо;

дим до другого розряду: 3*161=48, додавши це у сумму.

одержимо 18 992. І останнє розряд: 15*160=15. Конечная.

сума дорівнює 219 007 0. Нас результат в десятеричной.

системі исчисления.

2IV. МЕТОДОЛОГІЧНИЙ ПОДХОД.

Розглядаючи переклад з десятеричной системы.

обчислення в двійкову і шестнадцатиричную, можна найти.

багато спільного. У обох випадках саме максимальну сте;

пень, потім у обох випадках порівнюємо залишок з числом.

зведеним в ступінь розряду. Єдина разница.

у тому, що з перекладі в двійкову систему.

підставою ступеня служить двійка, а при перекладі в.

шестнадцатиричную систему підставою служить число шест;

надцять. Постає питання: а чи можна об'єднати оба.

цих перекладу в одну процедуру, у якому в качестве.

параметрів передавати підставу ступеня? За більш под;

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

помітити, що порівнюючи залишок зі ступенем двійки мы.

— 7 ;

відзначаємо лише хіба що два стану: так чи ні, т. е.

1 чи 0, а під час перекладу в шестнадцатиричную систему мы.

розглядаємо не просто ступінь числа шістнадцяти, а.

твір цієї міри на величину майбутнього разряда.

Постає питання: а чи не одне це теж. Адже умножив.

число на одиницю ми їх змінюємо, а следовательно.

не має значення між тим, порівнювати ступінь з остатком.

чи із залишком помноженим на одиницю. Отже вы;

яснилось, що переведення з десятеричной системи исчисле;

ния в двійкову й у шестнадцатиричную можна осуществлять.

однієї процедурою, у якому як параметра пере;

давати підставу ступеня, тобто. підставу конечной.

системи исчисления.

Щоб не ускладнювати програму і робити множество.

операторів умовного переходу залежно від цього, к.

який системі обчислення належить вихідне число,.

введення цього числа здійснюється єдиним блоком, і исход;

ное число у виконання цього блоку записыва;

ется в вигляді строковой перемінної і передається на обра;

ботку наступному блоку. Другий блок який надійшов в него.

рядок символів обробляє в такий спосіб, що у вы;

ході цього блоку виходить числове значення в десяте;

ричной системі обчислення вихідного числа. І третий.

заключний блок перетворює це числове значення в.

рядок символів, яка буде утримувати результат в.

системі обчислення, яка требовалась.

Через війну такого підходу до розв’язання завдання алго;

ритм зазнає суттєвого спрощення, т.к. у ньому ветвлений.

— 10 ;

2VII. ДОКЛАДНІ РОЗ’ЯСНЕННЯ ПО ПРОГРАММЕ.

Програма починається стандартної строкой:

Program Perevod;

Далі йде описова частина програми. Она.

складається з кількох разделов:

— Uses: вказує які зовнішні TPU файли будет.

використовувати програма (це специфіка Turbo Pascal).

— Const: описує використовувані у програмі констан;

ти. P. S — масив констант рядків символів які з пя;

тидесяти символів. Їм присвоюються значення, которые.

використовуватимуться упорядкування меню.

— Var: описує переменные.

Longint — целочисленный тип, значення может.

змінюватися від -2 147 483 648 до 2 147 483 647 і займає в.

пам’яті 32 бита.

Integer — целочисленный тип, може приймати значе;

ние від -32 768 до 32 767 і обсяг пам’яті в 16.

бит.

Char — символьний тип, може приймати значення лю;

бого символа.

Byte — целочисленный тип, може приймати значения.

від 0 до 255 з займе місця пам’яті у вісім бит.

Set of «0 ». «F «- тип безліч, елементи которого.

можуть бути будь-які символи які перебувають в проміжку от.

" 0 «до «F » .

Array [1.255] of Char — масив символів розміром в.

— 11 ;

255 знаков.

String — рядок символів перемінної довжини (довжина мо;

жет змінюватися від 1 до 255 символов).

Далі у програмі йде опис процедури Zast. Эта.

процедура виводить на екран в стовпчик пункти меню, в ко;

торых вказується з якої й у який систему исчисления.

користувач хоче перевести число. Структура процедуры.

лінійна. Воно складається з кількох операторов:

Window (1,1,80,24) — відводить вікно доступне для вы;

вода.

ClrScr — очищає экран.

TextColor (15) — встановлює колір наступного вы;

вода (яскраво белый).

GoToXY (x, y) — переводить курсор в рядок з номером y.

і стовпець з номером x.

Write () — виводить на екран від позиції курсору вы;

ражение вказаний у скобках.

Далі у програмі слід функція спорудження в сте;

пень. Вона буде використовуватися у дальшій программе.

кілька разів для безпосереднього перекладу з одной.

системи обчислення до іншої, тому довелося оформить.

її як функцію, ніж використовувати кожний раз опера;

ции з логарифмом і експонентою. Спорудження до рівня в.

цієї функції здійснюється звичайним багаторазовим умно;

жением в циклі, і гадаю, на не слід останавли;

ваться.

Продовжимо розгляд програми. Після функції воз;

ведення до рівня йде оператор початку исполнительной.

— 12 ;

частини програми Begin.

Перемінної Y присвоюється значення 1 — начальное.

становище курсору в меню.

Далі йде виклик процедури Zast, внаслідок выпол;

нения якої на екран виводиться список можливих ком;

бинаций переводов.

По виконанні процедури Zast слід оператор ор;

ганизации циклу з пост-условием Repeat. Усередині этого.

циклу здійснюється виконання доведена всією подальшою прог;

раммы.

Усередині нього послідовно йде установка кольору на.

малиновий, переміщення курсору в позицію 13,2 і вывод.

символу мітки поточного становища курсору в меню (2> 0).

Далі йде оператор очікування введення клавіші ReadKey.

Коли клавіша буде натиснута, його значення буде присвоено.

перемінної Klav. Потім іде стирання мітки поточної по;

зиции курсору в меню.

Після цього йде блок умовних операторів If, кото;

рые обробляють натиснуту клавішу виконують определен;

ные дії відповідність до натиснутою клавишей.

Перший оператор If обробляє ситуацію, якщо была.

натиснута клавіша «ДОГОРИ ». У результаті його выполнения.

значення перемінної Y зменшується на одиницю, а если.

вона дорівнювала 1, що його значення стає рівним 7.

Аналогічно діє другий умовний оператор, только.

він обробляє клавішу «ВНИЗ » .

Третій умовний оператор приймає значення True.

якщо натиснута клавіша ESC (вихід). І тут пе;

— 13 ;

ремінної Y присвоюється значення 7, а перемінної Klav.

значення клавіші ВВЕДЕННЯ. Обидва цих значень змінних сим;

волизируют вихід із зовнішнього циклу з пост-условием, а.

отже, і вихід із программы.

Четвертий умовний оператор обробляє клавишу.

ВВЕДЕННЯ, але за умови, що Y.

підведено до останньої рядку зі значенням виходу из.

програми. Якщо значення висловлювання цього умовного опе;

ратора прийме значення True, то починається выполнение.

більшості програми, яка здійснює не;

посередньо переклад з однієї системи обчислення в.

другую.

Спочатку очищається екран. Потім малиновим кольором в.

першої рядку виводиться з який і в яку систему.

обчислення програма переказати числа. Після это;

го, у нижній рядку зеленим кольором виводиться фраза «ESC.

— ВИХІД У МЕНЮ ". Потім встановлюється колір виведення на.

екран білий й виділяється вікно для виведення исключающее.

першу і останню рядки екрана. Перемінної Stroka.

(змінна вказує рядок становища курсору) присва;

ивается значення 2.

Після прочитання цих підготовчих процесів оператор Case.

залежно від того з який і в яку систему.

обчислення ми переводити числа, визначає значе;

ния змінних Isx (підставу вихідної системи исчисле;

ния), Keys (клавіші, які можна натискати для ввода.

вихідного числа) і Kon (підставу кінцевої системы.

исчисления).

— 14 ;

Далі в програмі слід оператор циклу с.

пост-условием Repeat, всередині якого осуществляется.

введення вихідного числа. Спочатку йде очікування нажатия.

клавіші, і якщо клавіша буде натиснута, ті значення этой.

клавіші запишеться в зміну Klav. Стандартна функ;

ция UpCase переводить символ з нижнього регістру в верх;

ний. Умовний оператор If визначає, чи є нажа;

несучи клавіша припустимою, і якщо це, то переменная.

Kol (кількість символів у введеному числі) увеличива;

ется на одиницю, значення клавіші записується в массив.

A (масив символів з вихідним числом) і введена кла;

виша відображається на экране.

Наступний умовний оператор визначає, була ли.

натиснута клавіша ЗАБІЙ. І тут Kol зменшується на.

одиницю, курсор переміщається на позицію вліво и.

стирається останній запроваджений символ.

Оператор Until здійснює вихід з циклу с.

пост-условием у разі, якщо натиснута клавиша.

ВВЕДЕННЯ чи клавіша ESC.

Далі йде умовний оператор, який обрабатыва;

ет умова натискання клавіші ВВЕДЕННЯ. Якщо це, то это.

означає, що вихідне число запроваджено і користувач хо;

чіт отримати результат, і потрібно розпочати не;

посередньому переводу.

Всередині цієї умовного оператора виконується цикл от.

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 = 100 000 |.

|? 33 = 100 001 |.

|? 26 = 11 010 |.

|? 500 = 111 110 100 |.

|? 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 з: 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.

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].

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.

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.

Показати весь текст
Заповнити форму поточною роботою