Разработка калькулятора для чисел с нормализованными мантиссами - Студенческий научный форум

XV Международная студенческая научная конференция Студенческий научный форум - 2023

Разработка калькулятора для чисел с нормализованными мантиссами

Коноводов В.Д. 1
1ГОУ ВО МО "ГОСУДАРСТВЕННЫЙ СОЦИАЛЬНО-ГУМАНИТАРНЫЙ УНИВЕРСИТЕТ"
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

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

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

Компьютерная модель

Создать программный код, который будет осуществлять перевод чисел в систему триад и осуществлять сложения. Код оформить в виде подпрограмм для более наглядного представления кода и читаемости. Программный код:

Интерфейс

Unit Project; {Коноводов Виктор}

interface

uses crt;

procedure zagolovok;

procedure vivod;

procedure mantissi;

procedure summa;

procedure podpis;

procedure vvod_znach;

implementation

procedure vvod_znach;

begin

window(35,7,100,18);

textbackground(3); clrscr;

end;

procedure zagolovok;

begin

textcolor(white);

textbackground(7); clrscr;

window(20,2,120,5);

textbackground(3); clrscr;

writeln(' Проект ');

write(' Задание : ');

end;

procedure vivod;

begin

window(15,10,40,50);

textbackground(3); clrscr;

end;

procedure mantissi;

begin

textcolor(white);

window(45,10,95,50);

textbackground(3); clrscr;

end;

procedure summa;

begin

textcolor(white);

window(100,10,140,50);

textbackground(3); clrscr;

writeln;

end;

procedure podpis;

begin

window(40,56,120,60);

textbackground(3); clrscr;

writeln(' VK ');

readkey;

end;

Begin

End.

Программа

Program Project_Normaliz_form;

Uses CRT,Project;

Const Massiv_16: String[16]='0123456789ABCDEF';

type mas = array[1..32] of string;

var a:mas;

N_16,k_16,b_16,N_2,K_2,znak:string;

N_10,k_10,b,n,i,q,z:integer;

Procedure vvod(var n: integer);

begin

read(n);

end;

Procedure vivod_chisel(n,i:integer);

begin

writeln(' A(',i,') = ',n:4);

end;

Procedure perevod_v_16(n:integer; var z,s:string);

begin

if n<0 then begin

n:=Abs(n);

z:='-' ;

s:=Massiv_16[n mod 16+1] +s;

end

else z:='';

if n=0 then S:='0'

else S:='';

While n>0 do begin

s:=Massiv_16[n mod 16+1]+s;

n:=n div 16;

end;

end;

Procedure Mantissa(s:string );

begin

write(' Мантиссачисла ', s ,':');

writeln(' 0,',s,'*10^',length(s));

end;

Procedure Perevod_v_2(s:string);

var nomer,i:integer;

s_nomer:char;

begin

nomer:=0;

for i:=0 to length(s) do begin

s_nomer:=s[nomer];

case s_nomer of

'0': a[nomer]:= '0000';

'1': a[nomer]:= '0001';

'2': a[nomer]:= '0010';

'3': a[nomer]:= '0011';

'4': a[nomer]:= '0100';

'5': a[nomer]:= '0101';

'6': a[nomer]:= '0110';

'7': a[nomer]:= '0111';

'8': a[nomer]:= '1000';

'9': a[nomer]:= '1001';

'A' : a[nomer]:= '1010';

'B' : a[nomer]:= '1011';

'C' : a[nomer]:= '1100';

'D' : a[nomer]:= '1011';

'E' : a[nomer]:= '1110';

'F' : a[nomer]:= '1111';

end;

inc(nomer);

end;

end;

Procedure vivod_v_16(n:integer; s:string);

begin

writeln(' Число ', n, ' в 16-ойСС = ', s );

end;

Procedure Mantissa_1(s,s1:string);

begin

if (length(N_16)<length(K_16)) then for i:=1 to length(k_16)-length(N_16) do begin

write('0000', ' ');

inc(q);

end;

for i:=1 to length(N_16) do write(' ',a[i]);

if length(N_16)< 8 then for i:=1 to 8 - length(N_16) - q do write(' ','0000');

writeln;

end;

Procedure Mantissa_2(s,s1:string);

begin

if (length(N_16)>length(K_16)) then for i:=1 to length(N_16) - length(k_16) do begin

write('0000', ' ');

inc(z);

end;

for i:=1 to length(k_16) do write(' ', a[i]);

if length(k_16)< 8 then for i:=1 to 8 - length(K_16) - z do write(' ','0000');

writeln;

end;

Procedure Mantissa_Summi(s2:string);

begin

for i:=1 to length(b_16) do write(' ',a[i]);

if length(b_16)< 8 then for i:=1 to 8 - length(b_16) do write(' ','0000');

writeln;

end;

Begin

zagolovok;

writeln(' Сложение целых положительных чисел с нормализованными мантиссами ' );

vvod_znach;

write(' Введите 2 числа в 10-ой системе счисления: ');

vvod(N_10);

vvod(k_10);

textbackground(7); clrscr;

vivod;

writeln(' Даны числа в 10-ой СС: ');

vivod_chisel(N_10,1);

readkey;

vivod_chisel(K_10,2);

perevod_v_16(N_10,znak,N_16);

perevod_v_16(k_10,znak,k_16);

vivod_v_16(N_10,N_16);

readkey;

vivod_v_16(K_10,K_16);

readkey;

mantissi;

Mantissa(N_16);

writeln;

readkey;

Mantissa(K_16);

writeln;

readkey;

Perevod_v_2(N_16);

write(' M[N] = ');

Mantissa_1(N_16,K_16);

writeln;

readkey;

Perevod_v_2(k_16);

write(' M[K] = ');

Mantissa_2(N_16,K_16);

writeln;

readkey;

b:=N_10+K_10;

perevod_v_16(b,znak,b_16);

Perevod_v_2(b_16);

write(' M[N+K] =');

Mantissa_Summi(b_16);

readkey;

summa;

writeln(' Сумма таких чисел в 16-ой СС = ', b_16);

readkey;

podpis;

End.

Компьютерный эксперимент

Запустить проект на выполнение: ввести значения первого и второго числа, нажать enter.

Рис. 1. Ввод данных

Рис. 2 Вывод данных

Рис. 3. Перевод чисел в двоичную СС

Рис. 4. Интерфейс

Анализ результатов и корректировка

После ввода двух целых положительных чисел (рис. 1) и нажатия на Enter в окне “Дано” (рис. 2) указывается вводимые данные и их перевод в 16-ичную СС. В следующем окне происходит поиск мантиссы числа и перевод по системе триад в 2-ую систему счисления и вычисление суммы (рис. 3). Конечная программа оформляется в виде наглядного интерфейса (рис. 4).

Программу можно доработать: добавив работу с отрицательными и вещественными числами. Таким образом, при переводе числа по системе триад, учитывать отрицательный знак этих чисел.

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

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

Е. Р. Алексеев О. В. Чеснокова Т. В. Кучер Free Pascal и Lazarus Учебник по программированию. - Москва: ALT Linux; Издательский дом ДМК-пресс, 2010. - 442 с.

Онлайн компилятор паскаль // Online GDB pascal URL: https://www.onlinegdb.com/online_pascal_compiler

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