Министерство образования и науки Российской Федерации
Федеральное агентство по образованию
Марийский государственный технический университет
Кафедра информатики и
системного программирования
Курсовая работа по дисциплине информатика на тему:
Деление чисел в нормализованной форме
Выполнила: студент ИВТ-11
Васильев Иван Федорович
Проверила: старший преподаватель
Кафедры ИиСП Иванова И.Н.
Йошкар-Ола
2009
Содержание
1. Теоретическая часть
1.1 Теория
1.2 Описание метода решения
2. Алгоритм (блок-схема) работы программы
2.1 Листинг программы
2.2 Тестирование программы
3. Вывод
Введение
Постановка задачи:
Ввод: два числа в десятичной СС в естественной форме. Программа переводит числа в нормализованную форму, делит нормализованные числа.
Вывод: частное от деления в нормализованной форме в десятичной СС.
В данной курсовой работе показан один из алгоритмов деления чисел в нормализованной форме. Такие программы удобны для быстрого получения нормализованного произведения чисел с помощью TPPascal. Для реализации поставленной задачи я использовала теоретические сведения из курса информатики и ПнаЯВУ, а также полученные ранее знания в области программирования.
1. Теоретическая часть
1.1 Теория
Пусть имеются два числа X1
= M1
·pk1
и X2
= M2
·pk2
(здесь индексы у мантиссы и порядка означают не систему счисления, а служат номерами чисел). Умножение должно начинаться с выявления большего из k1
и k2
, нахождения модуля их разности k =|k1
- k2
|
и сдвига вправо на k
разрядов мантиссы того числа, у которого k
оказался меньше. Операция деления, проводимая как над целыми, так и вещественными числами, приводит в общем случае к появлению вещественного числа, поэтому целые числа предварительно преобразуются в вещественный тип, т.е. переводятся в нормализованную форму. Очевидно, при делении X1
X2
мантисса частного M = M1
/M2
, а порядок k = k1
-k2
. При этом непосредственно операция деления сводится к сдвигу делителя вправо и последовательному вычитанию его из делителя (т.е. сложения с дополнительным кодом вычитаемого). Как и в предыдущих операциях, результат деления при необходимости нормализуется.
1.2 Описание метода решения
Метод решения заключается в считывании из INPUT в файл чисел, переписывании чисел без разделения их на целую и дробную части, подсчитывании количества разрядов чисел, выбора большего разряда, и сдвига вправо на k разрядов меньшего числа, затем деления нормализованных чисел, если возникает необходимость - нормализации результата, и вывода суммы в OUTPUT.
2. Алгоритм (блок-схема) работы программы
2.1 Листинг программы
Программа считывает числа в файл, убирает ‘. ’, считает количество разрядов - k умножаем на 10, до тех пор пока не дойдем до дробной части, с помощью IFTHENELSE находим больший k у одного из чисел, а к меньшему числу добавляем нули, тем самым сдвигая его вправо, в то же время делим больший k на 1 разряд, предварительно присвоив его другому элементу, до тех пор пока k1 не будет равно k2, записываем в файл числа построчно, начиная с “0. ” - для нормализации, затем нули (если таковые имеются), и само число без “. ”. Считываем записанное построчно как числа и выполняем деление. Часто возникают ситуации, когда необходима нормализация результата, его нормализуем таким же образом как и вводимые числа. Выводим результат + “*k”.
PROGRAM DELENIEVNORMFORME;
USES CRT;
CONST
pt='0. ';
z='0';
x1=10;
VAR
lst1,lst2: INTEGER;
j,x,M,k1,k2,k: REAL;
st,st1,st2,jst,xst: string;
temp,temp1: text;
Ch: CHAR;
BEGIN
ASSIGN (temp, 'temp. DAT'); { Создаем временные файлы, для промежуточных преобразований над числами }
ASSIGN (temp1, 'temp1. DAT');
REWRITE (temp);
REWRITE (temp1);
WRITELN ('Введите первое число: '); {Считываем оба числа в файл}
READ (st);
WRITELN (temp,st);
WRITELN ('Введите второе число: ');
READLN;
READLN (st);
WRITE (temp,st);
k1: =1;
k2: =1;
RESET (temp);
WHILENOTEOF (temp) {Переписываем числа во второй файл, убирая '. '}
DO
BEGIN
WHILE NOT EOLN (temp)
DO
BEGIN
READ (temp,Ch);
IF (Ch = '. ')
THEN
ELSE
WRITE (temp1,Ch);
END;
READLN (temp);
WRITELN (temp1)
END;
RESET (temp);
REPEAT {Считаем количество разрядов первого числа}
BEGIN
READ (temp,Ch);
k1: =k1*x1;
END
UNTIL (Ch = '. ') OR (EOLN (temp));
READLN (temp);
REPEAT {Считаем количество разрядов второго числа}
BEGIN
READ (temp,Ch);
k2: =k2*x1;
END
UNTIL (Ch = '. ') OR (EOLN (temp));
RESET (temp1);
REWRITE (temp);
st1: ='';
st2: ='';
IF k1>k2 {ищем на сколько разрядов сдвигать вправо меньшее число }
THEN
BEGIN
k: =k1/k2;
READLN (temp1,st);
READ (temp1,st);
REPEAT
BEGIN
st2: =st2 + z;
k1: =k1/x1;
END;
UNTIL k2=k1;
END
ELSE
IF k1<k2
THEN
BEGIN
k: =k2/k1;
READ (temp1,st);
REPEAT
BEGIN
st1: =st1 + z;
k2: =k2/x1;
END
UNTIL k2=k1;
END
ELSE
k: =k1;
st1: =pt+st1; {Нормализуем числа}
st2: =pt+st2;
RESET (temp1);
REWRITE (temp);
READLN (temp1,jst);
READ (temp1,xst);
WRITE (temp,st1,jst);
WRITELN (temp);
WRITE (temp,st2,xst);
RESET (temp);
READLN (temp,j);
READ (temp,x);
M: = (j/x); {делим}
IF M > 1 { при необходимости результат деления нормализуем }
THEN
BEGIN
REWRITE (temp);
REWRITE (temp1);
WRITE (temp,M: 1: 10);
RESET (temp);
WHILE NOT EOLN (temp)
DO
BEGIN
READ (temp,Ch);
IF Ch = '. '
THEN
ELSE
WRITE (temp1,Ch);
END;
RESET (temp1);
READ (temp1,st);
WRITE ('Частное от деления в нормализованной форме: ','0. ',st,'*',k: 1: 0);
END
ELSE
WRITE ('Частное от деления в нормализованной форме: ', M: 1: 10,'*',k: 1: 0);
END.
2.2 Тестирование программы
Для тестирования введем два числа
На выходе имеем частное от деления в нормализованной форме
3. Вывод
При выполнении этой курсовой работы, был составлен наиболее оптимальный алгоритм деления чисел в нормализованной форме. Более глубоко изучена работа со строковыми данными и типами REAL и INTEGER. Эта программа в первую очередь наиболее необходима людям, которые вручную делят числа в нормализованной форме, чтобы заменить ручной труд на машинный.
Другие работы по теме:
Пифагор
Жизнь Пифагора. Пифагорейское учение. Мораль у Пифагора.
Исследование оперативной памяти
Методика применяется для изучения оперативной памяти в тех случаях, когда она несет основную функциональную нагрузку. Порядок проведения Испытуемому вручается бланк, после чего экспериментатор дает следующую инструкцию.
Проектирование технологического прцесса
2 ПРОЕКТИРОВАНИЕ ТЕХНОЛОГИЧЕСКОГО ПРОЦЕССА 2.1 Продуктовый расчет Целью продуктового расчета является определение объёма затрат сырья на количество вырабатываемой продукции с учетом потерь.
Доказательство сильной гипотезы Гольдбаха-Эйлера
Доказательство гипотезы Гольдбаха-Эйлера. Гипотезы о том, что любое четное число, большее двух, может быть представлено в виде суммы двух простых чисел и любое нечетное число М, большее семи, представимо в виде суммы трех нечетных простых чисел.
Число пи четверками
Известна задача четырех четверок, в которой предлагается, записав четыре -ки и какие угодно обычные математические символы в любых количествах получить как можно более точное приближение числа .
Интересная связь между числами Фибоначчи и пифагоровыми тройками
Что общее может быть между числами Фибоначчи и пифагоровыми тройками? Что может связывать числа, которые образуют последовательность, начинающуюся двумя единицами, остальные члены которой получаются сложением двух предыдущих членов, с числами, квадрат одного из которых равен сумме квадратов двух других?
История развития комплексных чисел
Р Е Ф Е Р А Т История развития комплексных чисел 1. История развития комплексных чисел Введение комплексных чисел было связано с открытием решения кубического уравнения, т.е. ещё в 16 веке.
Проверка больших чисел на простоту
Министерство образования Республики Беларусь Учреждение образования «Брестский государственный технический университет» Кафедра ИИТ Лабораторная работа №4
Китайская система счисления
1. Структура системы счисления Китая. Одна из древнейших систем счисления была создана в Китае, а также в Японии. Эта система возникла как результат оперирования с палочками, выкладываемыми для счета на стол или доску. Числа от единицы до пяти обозначались, соответственно, одной, двумя и т.д. палочками, выкладываемыми вертикально, а одна, две, три или четыре вертикальные палочки, над которыми помещалась одна поперечная палочка, означали числа шесть, семь, восемь и девять. (Смотреть таблицу обозначений чисел.)
Доказательство Великой теоремы Ферма 6
Файл: FERMA-ЛАРЧИК © Н. М. Козий, 2009 Авторские права защищены свидетельством Украины 28607 Доказательство Великой теоремы Ферма Великая теорема Ферма формулируется следующим образом: диофантово уравнение:
Краткое доказательство гипотезы Биля
Гипотеза Биля как неопределенное уравнение, не имеющее решения в целых положительных числах. Использование метода замены переменных. Запись уравнения в соответствии с известной зависимостью для разности квадратов двух чисел. Наличие дробных чисел.
Краткое доказательство гипотезы Билля
Формулировка гипотезы Билля и методика ее краткого доказательства. Анализ составляющих гипотезу алгебраических выражений. Использование метода замены переменных при доказательстве гипотезы Билля, не имеющей решения при целых положительных числах.
Алгебраическое доказательство теоремы Пифагора
Доказательство теоремы Пифагора методами элементарной алгебры: методом решения параметрических уравнений в сочетании с методом замены переменных. Существование бесконечного количества троек пифагоровых чисел и, соответственно, прямоугольных треугольников.
Закономерность распределения простых чисел (дополнение)
Я написал предыдущий ряд разностей по принципу личной симпатии. Подстраховался от критики, ежели бы у кого-то не получилось составить систему уравнений, например, с разностью d = 7, ибо для нетренированных рук могут возникнуть трудности.
Доказательство сильной гипотезы Гольдбаха-Эйлера
Н.М. Козий, 2008, [UA] Свидетельство Украины № 25256 о регистрации авторского права ДОКАЗАТЕЛЬСТВО СИЛЬНОЙ ГИПОТЕЗЫ ГОЛЬДБАХА-ЭЙЛЕРА Сильная гипотеза Гольдбаха-Эйлера формулируется следующим образом: любое четное число, большее двух, равно сумме двух простых чисел:
Системы счисления 2
Text Graphics СИСТЕМЫ СЧИСЛЕНИЯ Graphics Для перевода правильной дроби из СС с основанием 10 в СС с основанием n необходимо: эту дробь умножить на n, затем дробную часть, полученного произведения вновь умножить на n и так до тех пор пока в дробной части не окажутся все нули, либо не будет достигнута заданная степень точности.
Краткое доказательство гипотезы Билля
Гипотеза Билля формулируется следующим образом: неопределенное уравнение: не имеет решения в целых положительных числах А, В, С, при условии, что больше 2.
Деление двоичных чисел
Если умножение выполняется путем многократных сдвигов и сложений, то деление, будучи операцией обратной умножению,— путем многократных сдвигов и вычитаний.
Проверка больших чисел на простоту
Изучение основных подгрупп алгоритмов проверки простоты больших чисел: детерминированные и вероятностные проверки. Исследование методов генерации и проверки на простоту больших чисел с помощью метода Ферма (малая теорема Ферма), составление программы.
Решение головоломки Ж. Арсака
Работа посвящена решению головоломки, условие которой находится в книге Ж.Арсака «Программирование игр и головоломок».
Лабораторная работа по информатике ( практика )
Лабораторная работа 4 ИЗУЧЕНИЕ ПРИНЦИПОВ ОРГАНИЗАЦИИ АРИФМЕТИКО-ЛОГИЧЕСКИХ УСТРОЙСТВ. СТРУКТУРА АЛУ ДЛЯ ДЕЛЕНИЯ ЧИСЕЛ С ФИКСИРО- ВАННОЙ ЗАПЯТОЙ Ц е л ь р а б о т ы: Изучение принципов построения и функционирования АЛУ для деления чисел с фиксированной запятой.
Лаба по информатике
Министерство общего и профессионального образования РФ Владимирский Государственный Университет Кафедра УИТЭС Лабораторная работа 1 СИСТЕМЫ СЧИСЛЕНИЯ
Вещественные числа. Способы представления и хранения в ЭВМ
Понятие и свойства вещественного числа. Изучение основных типов данных с плавающей точкой, принятых стандартов и их представление в современных ЭВМ. Наработка навыков обращения с вещественными числами на компьютере (запись, считывание, хранение).
Умножение и деление целых неотрицательных чисел в двоичном коде
Числа с фиксированной точкой характеризуются длиной слова в битах, положением двоичной точки, бывают беззнаковыми или знаковыми. Позиция двоичной точки определяет число разрядов в целой и дробной частях машинного слова. Представление отрицательного числа.
Выполнение арифметических операций над числами с фиксированной запятой
Цель: ознакомиться с командами арифметических операций, вводом данных с клавиатуры и выводом данных на экран. Задание: написать программу ввода с клавиатуры двух чисел в 9-ричной системе счисления размером с слово, выполнения над ними деления и вывода результата в исходной системе счисления. Программа должна предусматривать контроль вводимой информации, контроль диапазона чисел и результата операции (переполнение, невозможность деления).
ГИА алгебра 2009 кодификатор
Государственная (итоговая) аттестация выпускников IX классов общеобразовательных учреждений 2009 г. (в новой форме) по АЛГЕБРЕ Кодификатор элементов содержания по алгебре
Стибиц (Stibitz) Джордж
Стибиц (Stibitz) Джордж, американский математик, создатель одного из первых электромеханических вычислительных устройств - двоичного сумматора.
Цузе Конрад
Автор модели механической вычислительной машины, в которой использовались двоичная система счисления , форма представления чисел с плавающей запятой , трехадресная система программирования и перфокарты .
Адамар Жак
В теории чисел Адамар доказал асимптотический закон распределения простых чисел (высказанный П. Л. Чебышевым). В теории дифференциальных уравнений занимался задачей О. Коши для гиперболических уравнений.
Ариабхата I
Ариабхата I (476— ок. 550) — индийский астроном и математик.В сочинении “Ариабхатиам” (499), посвященном астрономии и математике, изложены математические сведения, необходимые для астрономических наблюдений.