7


  • Учителю
  • Проектная работа 'Стандартный калькулятор'

Проектная работа 'Стандартный калькулятор'

Автор публикации:
Дата публикации:
Краткое описание:
предварительный просмотр материала

МБОУ «Краснослободская средняя общеобразовательная школа №1»

Краснослободского муниципального района Республики Мордовия




Проектная работа на тему:

«Стандартный калькулятор»

Проект выполнила:

ученица 10Б класса

Вельмискина Арина

Руководитель:

учитель информатики и ИКТ

Ашрафзян Т. Ф.


Краснослободск - 2015

Содержание


  1. Введение

  2. Проект «Стандартный калькулятор»

2.1 Описание проекта

2.2 Цели и задачи проекта

2.3 Актуальность проекта

2.4 Этапы деятельности над проектом и их результаты

2.4.1 Аналитическая работа над собранными фактами

2.4.2 Этапы работы над проектом

  1. Заключение

  2. Литература


  1. Введение

При изучении предмета информатика и ИКТ наиболее интересная мне тема «Алгоритмизация и программирование», я решила изучить систему объектно-ориентированного программирования Delphi 7.0, в основе которого лежит язык программирования Pascal .

Использование визуальной объектно-ориентированной системы Delphi позволяет познакомиться с современными методами создания программ и позволяет создать реально работающие и полезные программы.

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

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

При написании программы «Стандартный калькулятор» мной были изучены основы языка программирования Pascal и системы объектно-ориентированного программирования Delphi 7.0, При изучении языка Pascal были изучены следующие темы: «Ветвление», «Циклы», «Работа с символьными переменными», «Массивы», «Функции и процедуры», а при изучении системы Delphi 7.0 - разновидности объектов формы и коды для работы с этими объектами.

2.1 Описание проекта

Предмет: информатика и ИКТ

Проект: «Стандартный калькулятор»

Класс: 10 класс

Характер проекта: междисциплинарный

Разделы науки: математика, информатика

Оборудование: ПК, принтер

Программное обеспечение: MS Word, Pascal, Delphi 7.0

2.2 Цели и задачи проекта


Цель.

Разработать программу «Стандартный калькулятор» с функцией перевода чисел из одной системы счисления в другую в системе объектно-ориентированного программирования Delphi 7.0.


Задачи.

  1. Изучить системы перевода чисел из одной системы счисления в другую.

  2. Изучить основы языка программирования Pascal.

  3. Изучить основы системы объектно-ориентированного программирования Delphi 7.0.

2.3 Актуальность проекта

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

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

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

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


2.4 Этапы деятельности над проектом и их результаты


2.4.1 Аналитическая работа над собранными фактами


Системы счисления


Система счисления - это способ записи (представления) чисел.

Позиционная система счисления - система счисления, в которой значение каждой цифры зависит от её позиции (разряда) в числе. Например, привычная для нас 10-я система счисления - позиционная. Рассмотрим число 453. Цифра 4 обозначает количество сотен и соответствует числу 400, 5 - кол-во десяток и аналогично значению 50, а 3 - единиц и значению 3. Как видим - чем больше разряд - тем значение выше. Итоговое число можно представить, как сумму 400+50+3=453.


Перевод целого десятичного числа в систему счисления с основанием 2n.


Для перевода простого целого числа необходимо разделить его на основание системы счисления q и продолжать делить частные от деления до тех пор, пока частное не станет равным 0. Значения получившихся остатков, записанные в обратной последовательности, образуют целую часть числа с основанием q.

Например, осуществим перевод десятичного числа 46 двоичную систему счисления.

Остаток

46:2=23 0

23:2=11 1

11:2=5 1

5:2=2 1

2:2=1 0

1:2=0 1

Запишем остатки, начиная с последнего - 101110, т.е. 4610=1011102

Перевод чисел из систем счисления с основанием 2n в десятичную систему счисления.

Перевод чисел из десятичной системы счисления в систему счисления с основанием 2n

Для того чтобы выполнить обратное преобразование, необходимо число в системе счисления с основанием q записать в развернутом виде и выполнить необходимые вычисления.

Рассмотрим перевод двоичного числа 1011102 в десятичное число. Для этого запишем это двоичное число в развернутом виде, используя формулу:

Аq=an-1 * qn-1 + an-2 * qn-2 + …+ a0 * q0 +a-1 * q-1 + a-2 * q-2 + …+ a-m * q-m

и выполним необходимые вычисления.

Основание системы: q=2, число разрядов целой части числа: n=6, цифры двоичной системы счисления а представлены нулем или единицей.

101110,1012=1*25+0*24+1*23+1*22+1*21+0*20=32+0+8+4+2+0=4610.

Рассмотрим перевод шестнадцатеричного числа 9D,116 в десятичное:

9D16=9*161+13*160=144+13=15710


Основы языка программирования Pascal


Структура программы на языке Паскаль:

Program <���������������

����������������

�������

���������������

���

������������������������������������������������������������

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

Имя программы выбирается программистом самостоятельно в соответствии с правилами построения идентификаторов.

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

Типы переменных


INTEGER

Целое число от -32768 до 32767, занимает два байта.

LONGINT

Целое число от -2147483648 до 2147483647, занимает четыре байта.

REAL

число с дробной частью от 2.9*10-39.до 1.7*1038, может принимать и отрицательные Значения, на экран выводится с точностью до 12-го знака после запятой, если результат какой- либо операции с REAL меньше, чем 2.9*10-39, он трактуется как ноль. Переменная типа REAL занимает шесть байт.

DOUBLE

число с дробной частью от 5.0*10-324.до.1.7*10308, может принимать и отрицательные Значения, на экран выводится с точностью до 16-го знака после запятой ,если результат какой либо операции с DOUBLE меньше, чем 5.0*10-324, он трактуется как ноль. Переменная типа DOUBLE занимает восемь байт.

CHAR

Символ, буква, при отображении на экран выводится тот символ, код которого хранится в выводимой переменной типа CHAR, переменная занимает один байт.

STRING

Строка символов, на экран выводится как строка символов, коды которых хранятся в последовательности байт, занимаемой выводимой переменной типа STRING; в памяти занимает от 1 до 256 байт - по количеству символов в строке, плюс один байт, в котором хранится длина самой строки.


Арифметические выражения


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

+ сложение;

- вычитание;

/ деление;

* умножение;


Стандартные функции


MOD остаток от деления (записывается так: A MOD B; читается: остаток от деления A на B); эта операция применима только к целым числам;

DIV целочисленное деление (записывается так A DIV B; читается: результат деления A на B без дробной части); эта операция тоже применяется только для целых операндов.

Аргументы функций всегда записываются в круглых скобках:

SIN(X) sin x;

COS(X) cos x;

ARCTAN(X) arctg x;

ABS(X) абсолютное значение x (в математике - |x|);

SQR(X) возведение x в квадрат;

SQRT(X) извлечение квадратного корня;

TRUNC(X) отбрасывание дробной части х;

ROUND(X) округление х до ближайшего целого числа;

Основные команды языка Паскаль


1.Команда (оператор)присваивания выглядит следующим образом:

<��������������������������������


������������������������������

����������������������

��������������������


����������������������������������������

������������������������

������������������������


������������������������������������


��������������������� ветвления)




Одной из основных алгоритмических структур является ветвление (альтернатива).

Если условие выполняется, то будет выполнена инструкция "1", если нет, то - инструкция "2".

Формат условного оператора на языке Паскаль:

If <�����������

�������������������������

���������������������

������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

�������������������������������

������������������

����������������������������������

�����������������������������

����очка с запятой" не ставится перед служебным словом Else.

В простых условиях могут применяться знаки операций сравнения: >(больше), <(меньше), =(равно), <>(не равно), >=(больше или равно), <=(меньше или равно).


2.Цикл с предусловием


В первой разновидности цикла условие проверяется перед выполнением тела цикла. Поэтому данное условие правильно будет назвать условием продолжения цикла. Цикл такого вида называется циклом с предусловием.

Цикл будет повторяться до тех пор, пока проверка этого условия будет давать результат «истина» (true), то есть пока условие выполняется. Если условие сразу оказывается ложным, цикл не будет выполнен ни разу.


Вот как этот тип цикла реализуется на языке Паскаль:

While логическое условие> do begin

<�������������������

��������


��������������������������������������


����параметром - FOR


Цикл FOR задаёт определённое условие по которому программа будет работать до его выполнения, допустим нужно нам 5 (или n) раз зациклить программу, то это легко сделать с помощью данного цикла. У цикла FOR есть характерная черта - счетчик который обычно обозначается буквой i или j.


Внешний вид цикла с параметром в паскале:


for i:= 1 to n do begin

<���������

�;
После 1-го прохода переменной i присваиваем 1, после второго присваиваем 2 и так до тех пор, пока не дойдем до n. to - это до .. в порядке возрастания, также есть downto - до .. в порядке убывания.


Блок - схема цикла с параметром:



  1. . Массивы одномерные


Одномерный массив- таблица, состоящая из одной строки элементов одного типа.

Массив может состоять из элементов типа integer , real или char , либо других однотипных элементов.


Описание массива


Как и любые другие величины, используемые в программе, массивы надо описывать в начале программы (в разделе var описания переменных). В описании массива следует указать:

имя массива;

диапазон индексов его элементов;

тип элементов массива ().

Например, массив из описывается следующим образом:

var
a: array [1 .. 100] of real;

Здесь a - имя массива (выбирается программистом произвольно); array - служебное слово языка Паскаль, указывающее, что речь идет об описании именно массва; [1 .. 100] - диапазон индексов, т.е. элементы нумеруются целыми числами от 1 до 100; real - тип всех элементов массива (в упомянутой задаче в этом месте могло быть и integer).

Встретив такое объявление в разделе описания переменных, компьютер (точнее транслятор), понимает, что речь идет о массиве (array), выделяет в памяти 100 (число элементов неявно задается диапазоном индексов) пустых ячеек типа real, нумерует их числами от 1 до 100 и присваивает этому набору (массиву) ячеек имя a.

Использование функций


Подобно процедурам, описание функции состоит из заголовка и тела. Однако описание заголовка имеет 2 отличия: прежде всего, для функций используется ключевое слово function. Кроме того, поскольку функции всегда возвращают результат, завершается строка заголовка типом возвращаемого значения. Таким образом, для объявления функции мы получаем следующий синтаксис:

Функции объявляются следующим образом: function <������������������������������������

����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

����������������������������������


��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

����мма, написанная в среде Delphi при помощи языка Object Pascal, всегда состоит из нескольких модулей. Как минимум таких модулей должно быть два. Один модуль всегда является головной программой и имеет название program. Прочие модули играют вспомогательную и зависимую от головной программы или от других модулей роль и называются unit. Мини-мально структурированная программа имеет один модуль program и один модуль unit. Серьезные программы помимо модуля program могут содержать до нескольких десятков авторских модулей unit и большое количество ссылок на фирменные или разработанные как самим автором, так и другими разработчиками модули unit. Программа всегда начинает работу с модуля program, активизируя функционирование одного или нескольких зависимых модулей unit. Те в свою очередь могут активизировать другие модули unit и т.д. Исходный программный текст каждого модуля составляется на языке Object Pascal и помещается в отдельный файл, который всегда имеет расширение .pas. Текст модуля program имеет расширение .dpr. Полный программный текст любого модуля также имеет свою структуру, которая может включать блоки определения констант, внутренних структур описания типов, тексты процедур, функций и др.


Объект - кнопка BitBtn.


Свойства:
Name - можно оставить по умолчанию
Caption - соответствующее выполняемой функции название
Font - шрифт и цвет шрифта по желанию


Объект - Edit


Edit - свойство Text. Компонент Delphi Edit представляет собой однострочное текстовое поле, служащее для ввода данных пользователем. Основным свойством компонента Delphi Edit, передающим введённую информацию, является свойство Edit1.Text типа String. Можно вводить информацию с клавиатуры, присваивать в программе и считывать в переменную типа String

Для вводаи работы с целыми числами используют код:

X:=StrToInt(Edit1.Text);

Для ввода и работы с дробными числами используют код:
X:=StrToFloat(Edit1.Text);


Объект - Label


Размещённый на Форме Компонент Label указывает пользователю, что именно он должен ввести в поле ввода. Для этого достаточно в Инспекторе объектов в свойстве Caption ввести нужный текст. . Можно изменить шрифт и цвет метки, если дважды щелкнуть на свойство Font в Инспекторе Объектов. Это легко сделать и во время выполнения программы, написав всего одну строчку кода.

Так же программа может выводить в поле Label результаты автоматически в зависимости от задаваемой функции

Label1.Caption:={задаваемая функция}.


Объект - RadioButton

Компонент Delphi RadioButton - это «радио кнопка», как следует из названия, представляет собой элемент управления, отображающийся в виде кружка с текстом размешается на форме как правила два и более переключателей. Переключатели взаимосвязаны при выборе одного переключателя другие становятся не выбранными.

Если при первом обращении ни один из компонентов RadioButtonне не выбран, то достаточно кликнуть по одному из них, но в дальнейшем можно будет только «переключать» эти компоненты, снять выбор будет уже невозможно.


Объект - GroupBox


Специализированный компонент- контейнер RadioGroup, используемый для организации группы переключателей.Группа используется в основном для визуального выделения функционально связанных управляющих элементов. Для работы с группой Delphi предоставляет компонент GroupBox, задающий прямоугольную рамку с заголовком (свойство Caption) в левом верхнем углу и объединяющий содержащиеся в нем элементы управления.


Основные коды для написания программы «Калькулятор».


  1. Написать процедуры ввода чисел. Для этого щелкнуть два раза по кнопке «1» и ввести следующий код:


procedure TForm1.BitBtn1Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'1'
end;

Аналогично написать процедуры ввода остальных цифр и символа «,»

  1. Создать процедуру очистки поля Edit1, кнопка «Сброс»

begin
edit1.Clear
end;

  1. Создать процедуры обработки нажатий кнопок «+», «-», «/», «*» и «=». Для этого необходимо

сначала разобрать с учащимися алгоритм работы с калькулятором:

1)Описать переменные X, Y, Z, kod. Описывать переменные будем в основной программе, модуле Unit, чтобы переменные могли действовать в любой процедуре (глобальные переменные).

var
Form1 : TForm1;
kod : char;
x, y, z : real;

2) Создать процедуры обработки нажатий кнопок «+», «-», «/», «*»

Например,

procedure TForm1.BitBtn17Click(Sender: TObject);
begin
x:= strtofloat(edit1.text);
kod := '+';
edit1.Clear;
end;

Изменненая процедура обработки нажатия кнопки «+»

procedureTForm1.BitBtn17Click(Sender: TObject);
begin
ifedit1.Text<>'' thenx:=strtofloat(edit1.text);
kod := '+';
edit1.Clear;
end;

Аналогично создать процедуры обработки нажатий кнопок «-», «/», «*»

кнопка «=»

procedure TForm1.BitBtn19Click(Sender: TObject);
begin
if edit1.Text<>'' then y:=strtofloat(edit1.text); впеременную y кладем edit1.text
case kod of
'+': z:=x+y;
'-': z:=x-y
'*': z:=x*y;
'/': z:=x/y
end ;
edit1.Text:=floattostr(z) вывод в поле Edit1 значение переменной z
end;

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

кнопка «корень»

procedure TForm1.BitBtn26Click(Sender: TObject);
begin
x:=strtofloat( edit1.Text);
edit1.clear;
z:=sqrt(x);
edit1.Text:=floattostr(z)
end;

Процедура вычисления функции sin

кнопка «Sin»

procedure TForm1.BitBtn11Click(Sender: TObject); begin
x:=strtofloat(edit1.Text);
x:=(x*3.14)/180;
edit1.Clear;
z:=sin(x);
edit1.Text:=floattostr(z)
end;


Для включения/выключения кнопок BitButton необходимо запрограммировать «радио кнопку», для этого необходимо знать следующий код:

if rb1.Checked then btn5.Enabled:=false; - для выключения,

if rb1.Checked then btn5.Enabled:=true; - для включения, где rb1 - «радио кнопка», btn5 - кнопка, над которой необходимо совершить операцию.









2.4.2 Этапы работы над проектом


1 этап

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


{Перевод чисел в DEC}

program ToDec;

uses crt;

var a: string; n:longint;

d: array[1..100] of string;

s:real;j,i:integer; t:string;

begin

writeln('Введите основание системы'); readln(n);

writeln('Введите число'); readln(a);

s:=0;

for i:=1 to length(a) do begin

t:=copy(a,i,1);

if t='0' then j:=0;

if t='1' then j:=1;

if t='2' then j:=2;

if t='3' then j:=3;

if t='4' then j:=4;

if t='5' then j:=5;

if t='6' then j:=6;

if t='7' then j:=7;

if t='8' then j:=8;

if t='9' then j:=9;

if t='A' then j:=10;

if t='B' then j:=11;

if t='C' then j:=12;

if t='D' then j:=13;

if t='E' then j:=14;

if t='F' then j:=15;

s:=s+j*power(n,length(a)-i);

writeln(s);

end;

end.

2 этап

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


{Перевод чисел из DEC}

program FromDec;

uses crt;

var a,n:longint;

t: integer; j,s:string[40];

begin

writeln('Введите десятичное число'); readln(a);

writeln('Основание системы'); readln(n);

s:='';

while a<>0 do begin

t:=a mod n;

if t=0 then j:='0';

if t=1 then j:='1';

if t=2 then j:='2';

if t=3 then j:='3';

if t=4 then j:='4';

if t=5 then j:='5';

if t=6 then j:='6';

if t=7 then j:='7';

if t=8 then j:='8';

if t=9 then j:='9';

if t=10 then j:='A';

if t=11 then j:='B';

if t=12 then j:='C';

if t=13 then j:='D';

if t=14 then j:='E';

if t=15 then j:='F';

s:=j+s; a:=a div n;

end;

writeln(s);

end.







3 этап

Написание программы перевода чисел из одной системы счисления в другую в системе программирования Pascal

uses crt;

var TD,y:string;

cs1,cs2:longint;

{Перевод чисел в DEC}

function ToDec(a:string;n:longint):longint;

var d: array[1..100] of string;

s,j,y,x:integer; i:integer; t:string;

begin

s:=0;

for i:=1 to length(a) do begin

t:=copy(a,i,1);

if t='0' then j:=0;

if t='1' then j:=1;

if t='2' then j:=2;

if t='3' then j:=3;

if t='4' then j:=4;

if t='5' then j:=5;

if t='6' then j:=6;

if t='7' then j:=7;

if t='8' then j:=8;

if t='9' then j:=9;

if t='A' then j:=10;

if t='B' then j:=11;

if t='C' then j:=12;

if t='D' then j:=13;

if t='E' then j:=14;

if t='F' then j:=15;

y:=1;

for x:=1 to length(a)-i do begin

y:= y*n;

end;

s:=s+j*y;

end;

ToDec:=s;

end;

{Перевод чисел из DEC}

function FromDec(a:integer; n:integer):string;

var t: real; j,s:string[40];

begin

s:='';

while a<>0 do begin

t:=a mod n;

if t=0 then j:='0';

if t=1 then j:='1';

if t=2 then j:='2';

if t=3 then j:='3';

if t=4 then j:='4';

if t=5 then j:='5';

if t=6 then j:='6';

if t=7 then j:='7';

if t=8 then j:='8';

if t=9 then j:='9';

if t=10 then j:='A';

if t=11 then j:='B';

if t=12 then j:='C';

if t=13 then j:='D';

if t=14 then j:='E';

if t=15 then j:='F';

s:=j+s; a:=a div n;

end;

FromDec:=s;

end;

{Основная программа}

begin

writeln('Введите основание системы счисления, из которой будете переводить');

readln(cs1);

writeln('Введите число в соответствии с системой счисления');

readln(TD);

writeln('Введите основание системы счисления, в которую будете переводить число');

readln(cs2);

writeln(FromDec(ToDec(TD,cs1),cs2));

end.








4 этап

Создание формы калькулятора в среде объектно-ориентированного программирования Delphi 7.0













5 этап

Написание кодов в среде Delphi 7.0 для ввода чисел и выполнения арифметических операций в калькуляторе. Описание кодов в среде Delphi 7.0 для осуществления перевода чисел из одной системы счислении я в другую. (Приложение 3)














  1. Заключение


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

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

  1. Литература

Информатика 9-11 классы: проектная деятельность учащихся / авт.-сост. Э. С. Ларина- Волгоград: Учитель, 2009. - 155с.

Delphi 7 САМОУЧИТЕЛЬ ПРОГРАММИСТА И. Ю. БАЖЕНОВА

Информатика и ИКТ : Учебник для 9 класса / Н. Д. Угринович. - 4-е изд. - М. : БИНОМ. Лаборатория знаний, 2011. - 295 с. : ил.


Приложение 1

unit Unit1;


interface


uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls, Buttons, jpeg;


type

TForm1 = class(TForm)

edt1: TEdit;

lbl1: TLabel;

grp1: TGroupBox;

rb1: TRadioButton;

rb2: TRadioButton;

rb3: TRadioButton;

rb4: TRadioButton;

grp2: TGroupBox;

lbl2: TLabel;

rb5: TRadioButton;

rb6: TRadioButton;

rb7: TRadioButton;

rb8: TRadioButton;

btn1: TBitBtn;

btn2: TBitBtn;

btn3: TBitBtn;

btn4: TBitBtn;

btn5: TBitBtn;

btn6: TBitBtn;

btn7: TBitBtn;

btn8: TBitBtn;

btn9: TBitBtn;

btn10: TBitBtn;

btn11: TBitBtn;

btn12: TBitBtn;

btn13: TBitBtn;

btn14: TBitBtn;

btn15: TBitBtn;

btn16: TBitBtn;

btn17: TBitBtn;

btn18: TBitBtn;

btn19: TBitBtn;

btn20: TBitBtn;

btn21: TBitBtn;

btn22: TBitBtn;

btn23: TBitBtn;

btn24: TBitBtn;

btn25: TBitBtn;

btn26: TBitBtn;

btn27: TBitBtn;

btn28: TBitBtn;

btn29: TBitBtn;

img1: TImage;

procedure rb1Click(Sender: TObject);

procedure rb2Click(Sender: TObject);

procedure rb3Click(Sender: TObject);

procedure rb4Click(Sender: TObject);

procedure rb5Click(Sender: TObject);

procedure rb6Click(Sender: TObject);

procedure rb7Click(Sender: TObject);

procedure rb8Click(Sender: TObject);

procedure btn29Click(Sender: TObject);

procedure btn1Click(Sender: TObject);

procedure btn2Click(Sender: TObject);

procedure btn3Click(Sender: TObject);

procedure btn4Click(Sender: TObject);

procedure btn5Click(Sender: TObject);

procedure btn6Click(Sender: TObject);

procedure btn7Click(Sender: TObject);

procedure btn8Click(Sender: TObject);

procedure btn9Click(Sender: TObject);

procedure btn10Click(Sender: TObject);

procedure btn11Click(Sender: TObject);

procedure btn12Click(Sender: TObject);

procedure btn13Click(Sender: TObject);

procedure btn14Click(Sender: TObject);

procedure btn15Click(Sender: TObject);

procedure btn16Click(Sender: TObject);

procedure btn28Click(Sender: TObject);

procedure btn17Click(Sender: TObject);

procedure btn18Click(Sender: TObject);

procedure btn19Click(Sender: TObject);

procedure btn20Click(Sender: TObject);

procedure btn21Click(Sender: TObject);

procedure btn24Click(Sender: TObject);

procedure btn26Click(Sender: TObject);

procedure btn23Click(Sender: TObject);

procedure btn22Click(Sender: TObject);

procedure btn25Click(Sender: TObject);

procedure btn27Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;


{Перевод чисел из DEC}


var


Form1: TForm1;

var

x1, y3, z, k, y1:Real;

kod:char;

implementation


{$R *.dfm}

var TD,y:string;

cs1,cs2:longint;

{Перевод чисел в DEC}

function ToDec(a:string;n:longint):longint;

var d: array[1..100] of string;

s,j,y,x:integer; i:integer; t:string;

begin

s:=0;

for i:=1 to length(a) do begin

t:=copy(a,i,1);

if t='0' then j:=0;

if t='1' then j:=1;

if t='2' then j:=2;

if t='3' then j:=3;

if t='4' then j:=4;

if t='5' then j:=5;

if t='6' then j:=6;

if t='7' then j:=7;

if t='8' then j:=8;

if t='9' then j:=9;

if t='A' then j:=10;

if t='B' then j:=11;

if t='C' then j:=12;

if t='D' then j:=13;

if t='E' then j:=14;

if t='F' then j:=15;

y:=1;

for x:=1 to length(a)-i do begin

y:= y*n;

end;

s:=s+j*y;

end;

ToDec:=s;

end;

{Перевод чисел из DEC}

function FromDec(a:integer; n:integer):string;

var t: real; j,s:string[40];

begin

s:='';

while a<>0 do begin

t:=a mod n;

if t=0 then j:='0';

if t=1 then j:='1';

if t=2 then j:='2';

if t=3 then j:='3';

if t=4 then j:='4';

if t=5 then j:='5';

if t=6 then j:='6';

if t=7 then j:='7';

if t=8 then j:='8';

if t=9 then j:='9';

if t=10 then j:='A';

if t=11 then j:='B';

if t=12 then j:='C';

if t=13 then j:='D';

if t=14 then j:='E';

if t=15 then j:='F';

s:=j+s; a:=a div n;

end;

FromDec:=s;

end;


procedure TForm1.rb1Click(Sender: TObject);

begin

cs1:=2;

if rb1.Checked then btn9.Enabled:=false;

if rb1.Checked then btn1.Enabled:=false;

if rb1.Checked then btn2.Enabled:=false;

if rb1.Checked then btn3.Enabled:=false;

if rb1.Checked then btn4.Enabled:=false;

if rb1.Checked then btn5.Enabled:=false;

if rb1.Checked then btn6.Enabled:=false;

if rb1.Checked then btn10.Enabled:=false;

if rb1.Checked then btn11.Enabled:=false;

if rb1.Checked then btn12.Enabled:=false;

if rb1.Checked then btn13.Enabled:=false;

if rb1.Checked then btn14.Enabled:=false;

if rb1.Checked then btn15.Enabled:=false;

if rb1.Checked then btn16.Enabled:=false;

if rb1.Checked then btn23.Enabled:=false;

if rb1.Checked then btn21.Enabled:=false;

if rb1.Checked then btn22.Enabled:=false;

if rb1.Checked then btn24.Enabled:=false;

if rb1.Checked then btn25.Enabled:=false;

if rb1.Checked then btn17.Enabled:=false;

if rb1.Checked then btn18.Enabled:=false;

if rb1.Checked then btn19.Enabled:=false;

if rb1.Checked then btn20.Enabled:=false;

end;


procedure TForm1.rb2Click(Sender: TObject);

begin

cs1:=8;

if rb2.Checked then btn1.Enabled:=false;

if rb2.Checked then btn2.Enabled:=false;

if rb2.Checked then btn3.Enabled:=false;

if rb2.Checked then btn4.Enabled:=false;

if rb2.Checked then btn5.Enabled:=false;

if rb2.Checked then btn6.Enabled:=false;

if rb2.Checked then btn15.Enabled:=false;

if rb2.Checked then btn16.Enabled:=false;

if rb2.Checked then btn9.Enabled:=true;

if rb2.Checked then btn10.Enabled:=true;

if rb2.Checked then btn11.Enabled:=true;

if rb2.Checked then btn12.Enabled:=true;

if rb2.Checked then btn13.Enabled:=true;

if rb2.Checked then btn14.Enabled:=true;

if rb2.Checked then btn21.Enabled:=false;

if rb2.Checked then btn22.Enabled:=false;

if rb2.Checked then btn23.Enabled:=false;

if rb2.Checked then btn24.Enabled:=false;

if rb2.Checked then btn25.Enabled:=false;

if rb2.Checked then btn17.Enabled:=false;

if rb2.Checked then btn18.Enabled:=false;

if rb2.Checked then btn19.Enabled:=false;

if rb2.Checked then btn20.Enabled:=false;

end;


procedure TForm1.rb3Click(Sender: TObject);

begin

cs1:=10;

if rb3.Checked then btn1.Enabled:=false;

if rb3.Checked then btn2.Enabled:=false;

if rb3.Checked then btn3.Enabled:=false;

if rb3.Checked then btn4.Enabled:=false;

if rb3.Checked then btn5.Enabled:=false;

if rb3.Checked then btn6.Enabled:=false;

if rb3.Checked then btn9.Enabled:=true;

if rb3.Checked then btn10.Enabled:=true;

if rb3.Checked then btn11.Enabled:=true;

if rb3.Checked then btn12.Enabled:=true;

if rb3.Checked then btn13.Enabled:=true;

if rb3.Checked then btn14.Enabled:=true;

if rb3.Checked then btn15.Enabled:=true;

if rb3.Checked then btn16.Enabled:=true;

if rb3.Checked then btn21.Enabled:=true;

if rb3.Checked then btn22.Enabled:=true;

if rb3.Checked then btn23.Enabled:=true;

if rb3.Checked then btn24.Enabled:=true;

if rb3.Checked then btn25.Enabled:=true;

if rb3.Checked then btn17.Enabled:=true;

if rb3.Checked then btn18.Enabled:=true;

if rb3.Checked then btn19.Enabled:=true;

if rb3.Checked then btn20.Enabled:=true;

end;


procedure TForm1.rb4Click(Sender: TObject);

begin

cs1:=16;

if rb4.Checked then btn1.Enabled:=true;

if rb4.Checked then btn2.Enabled:=true;

if rb4.Checked then btn3.Enabled:=true;

if rb4.Checked then btn4.Enabled:=true;

if rb4.Checked then btn5.Enabled:=true;

if rb4.Checked then btn6.Enabled:=true;

if rb4.Checked then btn9.Enabled:=true;

if rb4.Checked then btn10.Enabled:=true;

if rb4.Checked then btn11.Enabled:=true;

if rb4.Checked then btn12.Enabled:=true;

if rb4.Checked then btn13.Enabled:=true;

if rb4.Checked then btn14.Enabled:=true;

if rb4.Checked then btn15.Enabled:=true;

if rb4.Checked then btn16.Enabled:=true;

if rb4.Checked then btn21.Enabled:=false;

if rb4.Checked then btn22.Enabled:=false;

if rb4.Checked then btn23.Enabled:=false;

if rb4.Checked then btn24.Enabled:=false;

if rb4.Checked then btn25.Enabled:=false;

if rb4.Checked then btn17.Enabled:=false;

if rb4.Checked then btn18.Enabled:=false;

if rb4.Checked then btn19.Enabled:=false;

if rb4.Checked then btn20.Enabled:=false;


end;


procedure TForm1.rb5Click(Sender: TObject);

begin

cs2:=2;

end;


procedure TForm1.rb6Click(Sender: TObject);

begin

cs2:=8;

end;


procedure TForm1.rb7Click(Sender: TObject);

begin

cs2:=10;

end;


procedure TForm1.rb8Click(Sender: TObject);

begin

cs2:=16;

end;


procedure TForm1.btn29Click(Sender: TObject);

begin

close

end;


procedure TForm1.btn1Click(Sender: TObject);

begin

edt1.Text:=edt1.Text+'A';

end;


procedure TForm1.btn2Click(Sender: TObject);

begin

edt1.Text:=edt1.Text+'B';

end;


procedure TForm1.btn3Click(Sender: TObject);

begin

edt1.Text:=edt1.Text+'C';

end;


procedure TForm1.btn4Click(Sender: TObject);

begin

edt1.Text:=edt1.Text+'D';

end;


procedure TForm1.btn5Click(Sender: TObject);

begin

edt1.Text:=edt1.Text+'E';

end;


procedure TForm1.btn6Click(Sender: TObject);

begin

edt1.Text:=edt1.Text+'F';

end;


procedure TForm1.btn7Click(Sender: TObject);

begin

edt1.Text:=edt1.Text+'0';

end;


procedure TForm1.btn8Click(Sender: TObject);

begin

edt1.Text:=edt1.Text+'1';

end;


procedure TForm1.btn9Click(Sender: TObject);

begin

edt1.Text:=edt1.Text+'2';

end;


procedure TForm1.btn10Click(Sender: TObject);

begin

edt1.Text:=edt1.Text+'3';

end;


procedure TForm1.btn11Click(Sender: TObject);

begin

edt1.Text:=edt1.Text+'4';

end;


procedure TForm1.btn12Click(Sender: TObject);

begin

edt1.Text:=edt1.Text+'5';

end;


procedure TForm1.btn13Click(Sender: TObject);

begin

edt1.Text:=edt1.Text+'6';

end;


procedure TForm1.btn14Click(Sender: TObject);

begin

edt1.Text:=edt1.Text+'7';

end;


procedure TForm1.btn15Click(Sender: TObject);

begin

edt1.Text:=edt1.Text+'8';

end;


procedure TForm1.btn16Click(Sender: TObject);

begin

edt1.Text:=edt1.Text+'9';

end;


procedure TForm1.btn28Click(Sender: TObject);

begin

edt1.Clear;


end;


procedure TForm1.btn17Click(Sender: TObject);

begin

if edt1.Text<>'' then x1:= StrToFloat(edt1.text);

kod := '+';

edt1.Clear;

end;


procedure TForm1.btn18Click(Sender: TObject);

begin

if edt1.Text<>'' then x1:= StrToFloat(edt1.text);

kod := '-';

edt1.Clear;

end;


procedure TForm1.btn19Click(Sender: TObject);

begin

if edt1.Text<>'' then x1:= StrToFloat(edt1.text);

kod := '*';

edt1.Clear;

end;


procedure TForm1.btn20Click(Sender: TObject);

begin

if edt1.Text<>'' then x1:= StrToFloat(edt1.text);

kod := '/';

edt1.Clear;

end;


procedure TForm1.btn21Click(Sender: TObject);

begin

if edt1.Text<>'' then x1:= StrToFloat(edt1.text);

kod := '^';

edt1.Clear;

end;


procedure TForm1.btn24Click(Sender: TObject);

begin

x1:=strtofloat(edt1.Text);

x1:=(x1*3.14)/180;

edt1.Clear;

z:=sin(x1);

edt1.Text:=floattostr(z)

end;


procedure TForm1.btn26Click(Sender: TObject);

begin

if edt1.Text<>'' then y3:=strtofloat(edt1.text);


if kod='+' then z:=x1+y3;

if kod='-' then z:=x1-y3;

if kod='*' then z:=x1*y3;

if kod='/' then z:=x1/y3;

if kod='^' then z:=exp(ln(abs(x1))*y3);


edt1.Text:=floattostr(z);

end;


procedure TForm1.btn23Click(Sender: TObject);

begin

edt1.Text:=edt1.Text+',';

end;


procedure TForm1.btn22Click(Sender: TObject);

begin

x1:=strtofloat( edt1.Text);

edt1.clear;

z:=sqrt(x1);

edt1.Text:=floattostr(z)

end;


procedure TForm1.btn25Click(Sender: TObject);

begin

x1:=strtofloat(edt1.Text);

x1:=((90-x1)*3.14)/180;

edt1.Clear;

z:=sin(x1);

edt1.Text:=floattostr(z)

end;


procedure TForm1.btn27Click(Sender: TObject);

begin

if rb1.Checked then cs1:=2;

If rb2.Checked then cs1:=8;

if rb3.Checked then cs1:=10;

if rb4.Checked then cs1:=16;


if rb5.Checked then cs2:=2;

if rb6.Checked then cs2:=8;

if rb7.Checked then cs2:=10;

if rb8.Checked then cs2:=16;


TD:=Edt1.Text;

Edt1.Clear;

Edt1.Text:=FromDec(ToDec(TD,cs1),cs2);

end;


end.



 
 
X

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

После этого кнопка ЗАГРУЗКИ станет активной!

Кнопки рекомендации:

загрузить материал