Создание программы "Калькулятор" в Delphi

Характеристика циклических процессов на основе одномерных массивов в Pascal. Ознакомление с особенностями Delphi — структурированного, ориентированного языка программирования. Рассмотрение листинга программы "Калькулятор". Разработка ее интерфейса.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 01.10.2014
Размер файла 121,4 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

1. Реализация циклических вычислительных процессов на основе одномерных массивов. Функциональная кнопка BitBtn в Delphi

1.1 Циклические процессы на основе одномерных массивов в Pascal

Паскаль (ориг. название Pascal) -- язык программирования общего назначения. Один из наиболее известных языков программирования, используется для обучения программированию в старших классах и на первых курсах вузов, является базой для ряда других языков.

Язык Паскаль был создан Никлаусом Виртом в 1968--1969 годах после его участия в работе комитета разработки стандарта языка Алгол-68. Язык назван в честь французского математика, физика, литератора и философа Блеза Паскаля, который создал первую в мире механическую машину, складывающую два числа. Первая публикация Вирта о языке датирована 1970 годом, представляя язык, автор указывал в качестве цели его создания -- построение небольшого и эффективного языка, способствующего хорошему стилю программирования, использующему структурное программирование и структурированные данные.

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

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

Однако многие недостатки языка не проявляются или даже становятся достоинствами при обучении программированию. Кроме того, по сравнению с основным языком программирования в академической среде 1970-х (которым был Фортран, обладавший гораздо более существенными недостатками), Паскаль представлял собой значительный шаг вперёд. К 1980-м годам Паскаль стал основой для многочисленных учебных программ, в отдельных случаях на его основе были созданы специализированные обучающие языки программирования, так, в начале 1980-х годов в СССР для обучения школьников основам информатики и вычислительной техники Андрей Ершов разработал алголо-паскалеподобный «учебный алгоритмический язык».

Наиболее известной реализацией Паскаля, обеспечившей широкое распространение и развитие языка, является Turbo Pascal фирмы Borland, выросшая затем в объектный Паскаль для DOS (начиная с версии 5.5) и Windows и далее в Delphi, в которой были внедрены значительные расширения языка.

Диалекты Паскаля, применяемые в Turbo Pascal для DOS и Delphi для Windows, стали популярны из-за отсутствия других успешных коммерческих реализаций.

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

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

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

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

Выделяют следующие виды циклов:

ѕ Безусловный цикл (иногда в программах используются циклы, выход из которых не предусмотрен логикой программы. Такие циклы называются безусловными, или бесконечными. Специальных синтаксических средств для создания бесконечных циклов, ввиду их нетипичности, языки программирования не предусматривают, поэтому такие циклы создаются с помощью конструкций, предназначенных для создания обычных циклов.);

ѕ Цикл с предусловием (цикл, который выполняется пока истинно некоторое условие, указанное перед его началом. Это условие проверяется до выполнения тела цикла, поэтому тело может быть не выполнено ни разу (если условие с самого начала ложно). В большинстве процедурных языков программирования реализуется оператором while, отсюда его второе название -- while-цикл);

ѕ Цикл с постусловием (цикл, в котором условие проверяется после выполнения тела цикла. Отсюда следует, что тело всегда выполняется хотя бы один раз. В языке Паскаль этот цикл реализует оператор repeat..until;);

ѕ Цикл с выходом из середины (наиболее общая форма условного цикла. Синтаксически такой цикл оформляется с помощью трёх конструкций: начала цикла, конца цикла и команды выхода из цикла. Конструкция начала маркирует точку программы, в которой начинается тело цикла, конструкция конца -- точку, где тело заканчивается. Внутри тела должна присутствовать команда выхода из цикла, при выполнении которой цикл заканчивается и управление передаётся на оператор, следующий за конструкцией конца цикла. Естественно, чтобы цикл выполнился более одного раза, команда выхода должна вызываться не безусловно, а только при выполнении условия выхода из цикла.);

ѕ Цикл со счётчиком (цикл, в котором некоторая переменная изменяет своё значение от заданного начального значения до конечного значения с некоторым шагом, и для каждого значения этой переменной тело цикла выполняется один раз. В большинстве процедурных языков программирования реализуется оператором for, в котором указывается счётчик (так называемая «переменная цикла»), требуемое количество проходов (или граничное значение счётчика) и, возможно, шаг, с которым изменяется счётчик.);

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

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

В организации цикла можно выделить следующие этапы:

ѕ подготовка (инициализация) цикла;

ѕ выполнение вычислений цикла (тело цикла);

ѕ модификация параметров;

ѕ проверка условия окончания цикла.

Порядок выполнения этих этапов может изменяться. В зависимости от расположения проверки условия окончания цикла различают циклы с нижним и верхним окончаниями. Для цикла с нижним окончанием тело цикла выполняется как минимум один раз, так как сначала производятся вычисления, а затем проверяется условие выхода из цикла.

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

Массив представляет собой последовательность ячеек памяти, в которых хранятся однотипные данные. При этом существует всего одно имя переменной связанной с массивом, а обращение к конкретной ячейке происходит по ее индексу (номеру) в массиве.

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

Итак, массив - это именованная группа однотипных данных, хранящихся в последовательных ячейках памяти. Каждая ячейка содержит элемент массива. Элементы нумеруются по порядку, но необязательно начиная с единицы (хотя в языке программирования Pascal чаще всего именно с нее). Порядковый номер элемента массива называется индексом этого элемента.

Помним, все элементы определенного массива имеют один и тот же тип. У разных массивов типы данных могут различаться. Например, один массив может состоять из чисел типа integer, а другой - из чисел типа real.

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

Если индекс массива может приобретать все допустимые значения определенного перечислимого типа, то при описании массива возможно задание имени типа вместо границ изменения индекса. При этом границами индекса будут первое и последнее значения в описании типа индекса. Границы изменения индексов могут задаваться с помощью ранее объявленных констант. Рекомендуется предварительно объявлять тип массива в разделе описания типов.

Массив позволяет сохранять и манипулировать многими элементами данных посредством единственной переменной. Обработку массивов значительно упрощает использование циклов.

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

Массив можно создать несколькими способами.

const n = 200;

type

months = (jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec);

years = 1900..2100;

people = array[years] of longint;

var

growth: array[months] of real;

hum: people;

notes: array[1..n] of string;

Обращение к определенному элементу массива осуществляется путем указания имени переменной массива и в квадратных скобках индекса элемента.

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

var ch: array [1..11] of char;

h: char;

i: integer;

begin

for i := 1 to 11 do read (ch[i]);

for i := 1 to 11 do write (ch[i]:3);

readln

end.

В примере выделяется область памяти под массив из 11 символов. Их индексы от 1 до 11. В процессе выполнения программы пользователь вводит 11 любых символов (например, `q', 'w', 'e', '2', 't', '9', 'u', 'I', 'I', 'o', 'p'), которые записываются в ячейки массива. Текущее значение переменной i в цикле for используется в качестве индекса массива. Второй цикл for отвечает за вывод элементов массива на экран.

Операторы цикла

Эти операторы служат для повторного выполнения какого-либо действия. Существует 3 вида операторов цикла.

Оператор while

Синтаксис этого оператора:

While <выражение логического типа> do

<оператор1>;

Порядок выполнения этого оператора:

Вычисляется выражение логического типа.

Если результат есть true, то выполняется оператор1, затем снова вычисляется выражение. И так эти 2 пункта повторяются, пока результат выражения не станет равным false.

Если результат выражения равен false, оператор1 не выполняется, и программа переходит к выполнению операторов, расположенных далее по тексту, то есть после;

Примечания:

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

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

3. Если нужно, чтобы повторно выполнялась группа операторов, применяйте составной оператор.

Оператор repeat

Синтаксис этого оператора:

repeat

<операторы>

until

<выражение логического типа>;

Порядок выполнения этого оператора:

Выполняются (в обычном порядке) операторы, расположенные между repeat и until.

Вычисляется выражение логического типа.

Если результат есть false, переходим к пункту 1, то есть повторно выполняются операторы и вычисляется выражение. И так до тех пор, пока выражение не станет = true.

Если результат выражения равен true, программа переходит к выполнению операторов, расположенных далее по тексту, то есть после ;

Оператор for

Синтаксис этого оператора:

1-й вариант: возрастание переменной цикла.

for <переменная цикла> := <начальное значение> to

<конечное значение> do <оператор1>;

2-й вариант: убывание переменной цикла.

for <переменная цикла> := <начальное значение> downto

<конечное значение> do <оператор1>;

где:

<переменная цикла> - переменная одного из ПОРЯДКОВЫХ типов.

<начальное значение>, <конечное значение> - выражения

того же типа, что и переменная цикла.

Порядок выполнения этого оператора (1-й вариант):

Переменной цикла (ПЦ) присваивается начальное значение.

Значение ПЦ сравнивается с конечным значением (КЗ).

Если ПЦ >= КЗ, то выполняется оператор1, затем ПЦ увеличивается на 1. Затем переходим на пункт 2, то есть сравниваем ПЦ с КЗ. Пункты 2 и 3 повторяются до тех пор, пока выполняется ПЦ >= КЗ.

Если же ПЦ >= КЗ, то оператор1 не выполняется, и далее выполняется оператор, расположенный далее по тексту, то есть после >;

В отличие от предыдущих, для оператора for легко определить сколько раз выполнится оператор1.

1.2 Язык программирования Delphi. Управляющая кнопка BitBtn

Delphi -- императивный, структурированный, объектно-ориентированный язык программирования, диалект Object Pascal. Начиная со среды разработки Delphi 7.0, в официальных документах Borland стала использовать название Delphi для обозначения языка Object Pascal. Начиная с 2007 года уже язык Delphi (производный от Object Pascal) начал жить своей самостоятельной жизнью и претерпевал различные изменения, связанные с современными тенденциями.

Изначально среда разработки Delphi была предназначена исключительно для разработки приложений Windows, затем был реализован вариант для платформ Linux (как Kylix), однако после выпуска в 2002 году Kylix 3 его разработка была прекращена, и вскоре было объявлено о поддержке Microsoft .NET, которая, в свою очередь, была прекращена с выходом Delphi 2007.

На сегодняшний день, наряду с поддержкой разработки 32 и 64-разрядных программ для Windows, реализована возможность создавать приложения для Apple Mac OS X (начиная с Embarcadero Delphi XE2), iOS (включая симулятор, начиная с XE4 посредством собственного компилятора), а также, в Delphi XE5, для Google Android (непосредственно исполняемые на ARM-процессоре).

Независимая, сторонняя реализация среды разработки проектом Lazarus (Free Pascal, компиляция в режиме совместимости с Delphi) позволяет использовать его для создания приложений на Delphi для таких платформ, как Linux, Mac OS X и Windows CE.

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

Система типов в Delphi строгая, статическая. Поддеживаются следующие типы данных:

ѕ целочисленные, знаковые, и беззнаковые: Byte, Shortint, Word, Smallint, Cardinal,Integer, UInt64, Int64.

ѕ типы-перечисления, задаваемые пользователем.

ѕ вещественные типы Single, Double, Extended(только x86-32), унаследованный тип Real, работающий в режиме целочисленной эмуляции. Тип Currency вещественное фиксированной точности.

ѕ строки. Тип string -- автоматический распределяемый в памяти, с подсчетом ссылок и парадигмой Copy-On-Write. В поздних версиях Delphi символы двухбайтные, Unicode-совместимые. AnsiString -- аналогичная реализация для строк с шириной символа в один байт. Такие строки содержат в служебном поле информацию о кодировке. В Windows компиляторах с ранних версий существует тип WideString, полностью совместимый типу BSTR в Component Object Model.

ѕ массивы. Одномерные, многомерные фиксированной длины, а также подобные им динамические, с подсчетом ссылок.

ѕ множества, состоящие из элементов типа-перечисления. Максимальный размер такого перечисления - 256 элементов.

ѕ Классы и обобщенные классы(generics). Поддержка инкапсуляции, наследования, полиморфизма, в том числе виртуальных конструкторов, атрибутов, обобщенных параметров для класса и отдельных методов, а также диспетчеризации методов по индексу. Класс может реализовать один или несколько интерфейсов, в том числе опосредованно, делегируя реализацию интерфейса свойству или полю. Множественное наследование не поддерживается. В Delphi класс является неявным ссылочным типом.

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

ѕ Старые объекты, поддерживаемые для совместимости с Turbo Pascal. В отличие от экземпляра класса, объект может быть размещен в стеке, или статически.

Компонент delphi BitBtn по сути является компонентом Button, но на нем можно размещать битовый рисунок вместе с текстом этой кнопки. При размещении компонента BitBtn на форме и загрузки в него изображения он принимает следующий вид показанный на рисунке 1.

Рисунок 1. Кнопка BitBtn.

Для загрузки такого изображения удобно использовать встроенный редактор Picture editor, открыть который можно в свойстве Glyph нажатием на кнопку с тремя точками. В открывшемся редакторе с помощью кнопки Load можно загрузить изображение формата .bmp. Рисунок может содержать в себе до трех разных изображений. Какое изображение выведется на кнопку, зависит от следующих факторов: первое изображение будет отображаться когда кнопка не нажата; второе изображение будет отображается когда кнопка неактивна т.е свойство enabel равно False; и третье изображение будет отображается при нажатой кнопка(выполнен щелчок). Для того что бы сделать такое изображение необходимо найти 3 подходяших квадратных рисунка например размером 20х20 и с помошью Paint'а(или другого редактора изображений) разместить их на одном полотне размером 60х20 по порядку, затем сохраняем это изображение в формате bmp и загружаем в нашу кнопку.

Кнопка BitBtn имеет следующие свойства:

1) «Name» - имя компонента используемое для доступа к этому компоненту

2) «Glyph» - свойство позволяюшее привязать изображение к кнопке

3) «Layout» - пределяет к какому краю кнопки, прижимается изображение: blGlyphBottom -- к нижнем украю; bIGlyphLeft -- к левому краю; bIGlyphRight -- к правому краю; bIGlyphTop -- к верхнему краю.

4) «Margin» - определяет расстояние от края кнопки до изображения(измеряется в пикселях)

5) «NumGlyphs» - определяет количество изображений.

6) «Spacing» - определяет расстояние от изображения до надписи на кнопке(измеряется в пикселях)

7) «Caption» - текст, выводимый на кнопке

8) «Kind» - это свойство определяет несколько предопределенных видов, при выборе которого на кнопка отображается стандартное изображение.

Изображение на кнопке BitBtn задается свойством Glyph. При нажатии кнопки с многоточием в строке свойства Glyph в Инспекторе Объектов вызывается окно. Нажав в нем кнопку Load, вы перейдете в обычное окно открытия файла рисунка и можете выбрать файл битовой матрицы .bmp, содержащий желаемое изображение. В частности, с C++Builder поставляется большое количество изображений для кнопок. Они расположены в каталоге \lmages\Buttons, а сам каталог Images в C++Builder обычно расположен в каталоге ...\Program Files\Common Files\ Borlarid\Barland Shared. После того как вы выбрали изображение, нажмите ОК и выбранное изображение появится на вашей кнопке левее надписи.

Файл изображения для кнопки может содержать до четырех изображений пиктограмм размера 16х16. Самое левое соответствует отжатой кнопке. Второе слева соответствует недоступной кнопке, когда ее свойство Enabled равно false. Третье слева изображение используется при нажатии пользователя на кнопку при ее включении. Четвертое слева изображение используется в кнопках с фиксацией SpeedButton, для изображения кнопки в нажатом состоянии. Большинство изображений для кнопок использует две пиктограммы. Число пиктограмм вы можете узнать из свойства кнопки NumGlyphs, которое после загрузки изображения покажет вам число пиктограмм в нем.

Расположение изображения и надписи на кнопке определяется свойствами Margin, Layout и Spacing. Если свойство Margin равно -1 (значение по умолчанию), то изображение и надпись размещаются в центре кнопки. При этом положение изображения по отношению к надписи определяется свойством Layout, которое может принимать значения: blGlyphLeft (слева, это значение принято по умолчанию), blGlyphRight (справа), blGlyphTop (вверху), blGlyphBottom (внизу). Если же Margin > 0, то в зависимости от значения Layout изображение и надпись смещаются к той или иной кромке кнопки, отступая от нее на число пикселов, заданное значением Margin.

Свойство Spacing задает число пикселов, разделяющих изображение и надпись на поверхности кнопки. По умолчанию Spacing = 4. Если задать Spacing = 0, изображение и надпись будут размещены вплотную друг к другу. Если задать Spacing = -1, то текст появится посередине между изображением и краем кнопки. pascal delphi калькулятор программирование

Еще одно свойство BitBtn - свойство Kind определяет тип кнопки. По умолчанию значение этого свойства равно bkCustom - заказная. Но можно установить и множество других предопределенных типов: bkOK, bkCancel, bkHelp, bkYes, bkNo, bkClose, bkAbort, bkRetry, bklgnore, bkAll. В этих типах уже сделаны соответствующие надписи, введены пиктограммы, заданы еще некоторые свойства. Обычно все-таки лучше ими не пользоваться. Во-первых, надписи все равно надо переводить на русский язык. Во-вторых, предопределенные рисунки обычно выбиваются из общего стиля конкретного приложения. И самое главное - предопределение некоторых свойств, не учтенных вами, может иногда приводить к странным результатам работы. Уж лучше использовать заказные кнопки и самому устанавливать в них все необходимые свойства.

2. Создание программ с помощью Turbo Pascal и Delphi

2.1 Создание программы калькулятор в Delphi

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

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

ѕ произведение простых математических вычислений.

ѕ обеспечивать правильное вычисление.

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

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

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

Программа Калькулятор (Калькулятор.exe) разработана в среде Delphi.

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

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

Разработка интерфейса

1. Создал форму

2. Разместим на форме 2 объекта Edit

3. Разместим на форме соответствующее число кнопок:

ѕ цифры от 0 до 9;

ѕ знаки арифметических операций;

ѕ знак «=»;

ѕ знаки функций (корень, синус, косинус и т.д.);

ѕ кнопка закрытия калькулятора.

Написание процедур выполнения арифметических операций

I. Напишем процедуры ввода чисел. Для этого щелкаем два раза по кнопке «1» (объект BitBtn1) и ввести следующий код:

procedure TForm1. BitBtn1Click (Sender: TObject);

begin

edit2. Text:=edit2. Text+'1'

end;

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

II. Создаем процедуру очистки поля Edit1 и Edit2, кнопка «С» (объект BitBtn11)

procedure TForm1. BitBtn22Click (Sender: TObject);

begin

edit1. Clear;

edit2. Clear;

end;

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

ѕ Ввел число в поле Edit2. При этом в поле Edit2 число будет представлено как текстовая строка.

ѕ Нажал кнопку «+». В процедуре обработки этой кнопки выполнил следующие действия:

1. Преобразовываем эту строку в число с помощью функции StrToFloat;

2. Сохраняем это число в переменной X;

3. Сохраняем в переменной, например, kod код этой операции;

ѕ Очищаем поле Edit2.

ѕ Вводим второе число в поле Edit2.

ѕ Нажимаем кнопку «=». В процедуре обработки этой кнопки выполняем следующие действия:

1. Преобразовываем эту строку в число с помощью функции StrToFloat;

2. Сохраняем это число в переменной Y;

3.В зависимости от кода операции, сохраненной в переменной kod, выполняем арифметическую операцию, например, z:=x+y;

4. Преобразовываем число, находящееся в переменной Z, в текст с помощью функции FloatToStr и вывести в поле Edit1.

IV. Для реализации этого алгоритма выполняем следующие действия:

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

var

Form1: TForm1;

kod: char;

x, y, z: real;

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

procedureTForm1. BitBtn17Click (Sender: TObject);

begin

if edit2. Text<>'' then x:=strtofloat (edit2.text);

kod:= `+';

edit2. Clear;

end;

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

3. Создаем процедуру обработки нажатия кнопки «=». В этой процедуре необходимо в зависимости от значения переменной kod выполнять четыре разных операции. Такая структура называется «Множественное ветвление» или «Выбор»:

procedure TForm1. BitBtn19Click (Sender: TObject);

begin

if edit2. Text<>'' then y:=strtofloat (edit2.text);

case kod of

'+': z:=x+y;

'-': z:=x-y;

'*': z:=x*y;

'/': z:=x/y;

end;

edit1. Text:=floattostr(z);

end;

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

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

procedure TForm1. BitBtn26Click (Sender: TObject); кнопка «корень»

begin

x:=strtofloat (edit2. Text);

edit2.clear;

z:=sqrt(x);

edit1. Text:=floattostr(z);

end;

Процедура возведения в квадратный корень

procedure TForm1. BitBtn26Click (Sender: TObject); кнопка «корень»

begin

x:=strtofloat (edit2. Text);

edit2.clear;

z:=sqr(x);

edit1. Text:=floattostr(z);

end;

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

procedure TForm1. BitBtn11Click (Sender: TObject); кнопка «sin»

begin

x:=strtofloat (edit2. Text);

x:=(x*3.14)/180;

edit2. Clear;

z:=sin(x);

edit1. Text:=floattostr(z);

end;

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

procedure TForm1. BitBtn11Click (Sender: TObject); кнопка «sin»

begin

x:=strtofloat (edit2. Text);

x:=(x*3.14)/180;

edit2. Clear;

z:=sin(x)/cos(x);

edit1. Text:=floattostr(z);

end;

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

procedure TForm1. BitBtn11Click (Sender: TObject); кнопка «sin»

begin

x:=strtofloat (edit2. Text);

x:=(x*3.14)/180;

edit2. Clear;

z:=cos(x)/sin(x);

edit1. Text:=floattostr(z);

end;

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

procedure TForm1. BitBtn11Click (Sender: TObject); кнопка «sin»

begin

x:=strtofloat (edit2. Text);

x:=(x*3.14)/180;

edit2. Clear;

z:=sin(x)/cos(x);

edit1. Text:=floattostr(z);

end;

Оформление программы выполняется по желанию. Конечный результат показан на рисунке 2.

Рисунок 2. Калькулятор.

Листинг программы:

unit Unit8;

interface

uses

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

Dialogs, StdCtrls, Buttons;

type

TForm8 = class(TForm)

Edit1: TEdit;

Edit2: TEdit;

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

BitBtn3: TBitBtn;

BitBtn4: TBitBtn;

BitBtn5: TBitBtn;

BitBtn6: TBitBtn;

BitBtn7: TBitBtn;

BitBtn8: TBitBtn;

BitBtn9: TBitBtn;

BitBtn10: TBitBtn;

BitBtn11: TBitBtn;

BitBtn12: TBitBtn;

BitBtn13: TBitBtn;

BitBtn14: TBitBtn;

BitBtn15: TBitBtn;

BitBtn16: TBitBtn;

BitBtn17: TBitBtn;

BitBtn18: TBitBtn;

BitBtn19: TBitBtn;

BitBtn20: TBitBtn;

BitBtn21: TBitBtn;

BitBtn22: TBitBtn;

BitBtn23: TBitBtn;

procedure BitBtn1Click(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

procedure BitBtn3Click(Sender: TObject);

procedure BitBtn4Click(Sender: TObject);

procedure BitBtn5Click(Sender: TObject);

procedure BitBtn6Click(Sender: TObject);

procedure BitBtn7Click(Sender: TObject);

procedure BitBtn8Click(Sender: TObject);

procedure BitBtn9Click(Sender: TObject);

procedure BitBtn10Click(Sender: TObject);

procedure BitBtn23Click(Sender: TObject);

procedure BitBtn16Click(Sender: TObject);

procedure BitBtn15Click(Sender: TObject);

procedure BitBtn14Click(Sender: TObject);

procedure BitBtn13Click(Sender: TObject);

procedure BitBtn11Click(Sender: TObject);

procedure BitBtn22Click(Sender: TObject);

procedure BitBtn21Click(Sender: TObject);

procedure BitBtn19Click(Sender: TObject);

procedure BitBtn20Click(Sender: TObject);

procedure BitBtn18Click(Sender: TObject);

procedure BitBtn17Click(Sender: TObject);

procedure BitBtn12Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form8: TForm8;

kod: char;

x, y, z: real;

implementation

{$R *.dfm}

procedure TForm8.BitBtn10Click(Sender: TObject);

begin

edit2. Text:=edit2. Text+'0'

end;

procedure TForm8.BitBtn11Click(Sender: TObject);

begin

if edit2. Text<>'' then y:=strtofloat (edit2.text);

case kod of

'+': z:=x+y;

'-': z:=x-y;

'*': z:=x*y;

'/': z:=x/y;

end;

edit1. Text:=floattostr(z);

end;

procedure TForm8.BitBtn12Click(Sender: TObject);

begin

Close;

end;

procedure TForm8.BitBtn13Click(Sender: TObject);

begin

if edit2. Text<>'' then x:=strtofloat (edit2.text);

kod:= '/';

edit2. Clear;

end;

procedure TForm8.BitBtn14Click(Sender: TObject);

begin

if edit2. Text<>'' then x:=strtofloat (edit2.text);

kod:= '*';

edit2. Clear;

end;

procedure TForm8.BitBtn15Click(Sender: TObject);

begin

if edit2. Text<>'' then x:=strtofloat (edit2.text);

kod:= '-';

edit2. Clear;

end;

procedure TForm8.BitBtn16Click(Sender: TObject);

begin

if edit2. Text<>'' then x:=strtofloat (edit2.text);

kod:= '+';

edit2. Clear;

end;

procedure TForm8.BitBtn17Click(Sender: TObject);

begin

x:=strtofloat (edit2. Text);

x:=(x*3.14)/180;

edit2. Clear;

z:=sin(x)/cos(x);

edit1. Text:=floattostr(z);

end;

procedure TForm8.BitBtn18Click(Sender: TObject);

begin

x:=strtofloat (edit2. Text);

x:=(x*3.14)/180;

edit2. Clear;

z:=cos(x)/sin(x);

edit1. Text:=floattostr(z);

end;

procedure TForm8.BitBtn19Click(Sender: TObject);

begin

x:=strtofloat (edit2. Text);

x:=(x*3.14)/180;

edit2. Clear;

z:=sin(x);

edit1. Text:=floattostr(z);

end;

procedure TForm8.BitBtn1Click(Sender: TObject);

begin

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

end;

procedure TForm8.BitBtn20Click(Sender: TObject);

begin

x:=strtofloat (edit2. Text);

x:=(x*3.14)/180;

edit2. Clear;

z:=sin(x)/cos(x);

edit1. Text:=floattostr(z);

end;

procedure TForm8.BitBtn21Click(Sender: TObject);

begin

x:=strtofloat (edit2. Text);

edit2.clear;

z:=sqr(x);

edit1. Text:=floattostr(z);

end;

procedure TForm8.BitBtn22Click(Sender: TObject);

begin

x:=strtofloat (edit2. Text);

edit2.clear;

z:=sqrt(x);

edit1. Text:=floattostr(z);

end;

procedure TForm8.BitBtn23Click(Sender: TObject);

begin

edit1. Clear;

edit2. Clear;

end;

procedure TForm8.BitBtn2Click(Sender: TObject);

begin

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

end;

procedure TForm8.BitBtn3Click(Sender: TObject);

begin

edit2. Text:=edit2. Text+'3'

end;

procedure TForm8.BitBtn4Click(Sender: TObject);

begin

edit2. Text:=edit2. Text+'4'

end;

procedure TForm8.BitBtn5Click(Sender: TObject);

begin

edit2. Text:=edit2. Text+'5'

end;

procedure TForm8.BitBtn6Click(Sender: TObject);

begin

edit2. Text:=edit2. Text+'6'

end;

procedure TForm8.BitBtn7Click(Sender: TObject);

begin

edit2. Text:=edit2. Text+'7'

end;

procedure TForm8.BitBtn8Click(Sender: TObject);

begin

edit2. Text:=edit2. Text+'8'

end;

procedure TForm8.BitBtn9Click(Sender: TObject);

begin

edit2. Text:=edit2. Text+'9'

end;

end.

2.2 Создание программы в Turbo Pascal

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

Задание: Найти номер последнего отрицательного элемента массива.

Введем обозначения: n - количество элементов в массиве; А - имя массива; i - индекс элемента массива; Ai - i-й элемент массива A; m - номер последнего отрицательного элемента массива.

Входные данные: n, A.

Выходные данные: m.

Последний отрицательный элемент массива - это первый отрицательный элемент, который встретится при просмотре массива с конца. Если очередной элемент не является отрицательным, то нужно уменьшать значение текущего индекса (i:=i-1), пока он не станет меньше номера первого элемента или не будет найден отрицательный элемент. Переменная m получает значение i (номер отрицательного элемента), т.е. m := i. Если в массиве нет отрицательного элемента, то значение переменной m остается равным нулю.

Листинг программы:

Program mer;

Const n=10;

Var A: Array[1..n] Of Integer;

i, m: Integer;

Begin

For i:=1 To n Do Readln (A[i]);

m := 0; i:=n;

While (i >= 1) and (A[i] >=0) Do i:=i-1; m:=i;

Writeln (`m=', m);

Readln

End.

Размещено на Allbest.ru

...

Подобные документы

  • Ознакомление с историей создания и особенностями объектно-ориентированного языка программирования Delphi. Разработка приложения, фиксирующего количество повторений какого-либо слова в тексте, введённом в поле MEMO. Описание интерфейса программы.

    курсовая работа [880,1 K], добавлен 21.04.2015

  • Написание программы, состоящей из двух модулей и реализующей простейший калькулятор. Разработка алгоритма решения задачи, реализация его в среде программирования Delphi. Список использованных переменных. Блок-схема программы, руководство пользователя.

    курсовая работа [106,6 K], добавлен 16.06.2014

  • Организация вычислительных процессов и программирования на алгоритмическом языке. Создание программы "Калькулятор". Выбор языка и среды программирования. Функциональная схема работы программы, описание разработанных алгоритмов. Способы устранения ошибок.

    курсовая работа [434,1 K], добавлен 27.08.2012

  • Особенности разработки приложений для операционной системы с помощью императивного, структурированного, объектно-ориентированного языка программирования Delphi. Формальное начало программы. Выделение конца программного блока. Листинг и описание программы.

    курсовая работа [1,2 M], добавлен 04.08.2014

  • Разработка приложения "Калькулятор с переходом в строковый калькулятор" с применением объектно-ориентированного программирования. Концепция и понятия объектно-ориентированного программирования. Язык программирования Java. Листинг программы "Калькулятор".

    курсовая работа [966,9 K], добавлен 11.02.2016

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

    курсовая работа [1,2 M], добавлен 07.07.2012

  • Создание программы "Калькулятор". Возможность выбора типа калькулятора: обычный или инженерный. Главный модуль проекта CALC. Программа Calc for win (calc4win.exe), разработанная в среде Delphi версии 6. Руководство пользователя. Результаты моделирования.

    курсовая работа [56,1 K], добавлен 10.01.2010

  • Теоретические основы объектно-ориентированного языка программирования Delphi, изучение среды визуального проектирования приложений. Определение 40-го числа Фибоначчи, составление листинга и блок-схемы программы, тестирование ее на работоспособность.

    курсовая работа [261,1 K], добавлен 25.03.2015

  • Разработка программы обработки типизированных файлов с кодом на языке Object Pascal, с использованием компонентов Delphi для ввода и вывода данных. Разработка экранных форм и алгоритма программы. Описание программных модулей и инструкция оператору.

    курсовая работа [1,5 M], добавлен 08.02.2011

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

    реферат [21,0 K], добавлен 13.01.2015

  • Освоение языка программирования Delphi. Построение блок-схемы запуска главного таймера и основная логика программы. Использованные свойства и события Form, MediaPlayer, Timer, MainMenu. Запуск, пауза и остановка анимациии. Создание листинга программы.

    курсовая работа [771,9 K], добавлен 22.06.2014

  • Основные способы создания в среде Lazarus на языке программирования Pascal программ "Калькулятор" и "Лабиринт". Создание программы "Простейший калькулятор". Вычисление значения выражения, сумм ряда чисел, системы функций "Логическая развилка".

    курсовая работа [2,9 M], добавлен 27.09.2014

  • Общая характеристика интерфейса языка программирования Delphi. Рассмотрение окна редактора кода, конструктора формы, инспектора объектов и расширения файлов. Ознакомление с основными этапами создания и сохранения простого приложения; проверка его работы.

    презентация [184,3 K], добавлен 18.03.2014

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

    курсовая работа [506,5 K], добавлен 21.02.2011

  • Особенности создания программы "Файловый менеджер" в среде объектно-ориентированного программирования Delphi. Назначение и основные функции программы, формулировка задачи. Описание программы, использованные компоненты, интерфейс и порядок применения.

    контрольная работа [1,3 M], добавлен 19.06.2012

  • Принципы разработки алгоритмов и программ на основе процедурного подхода и на основе объектно-ориентированного подхода. Реализация программы Borland Pascal 7.0, ее интерфейс. Разработка простой программы в среде визуального программирования Delphi.

    отчет по практике [934,7 K], добавлен 25.03.2012

  • Теория чисел как одно из направлений математики, изучающее свойства натуральных чисел. Разработка программы-калькулятора CalcKurs на языке программирования Pascal. Основные функции, реализованные в программе. Интерфейс программы, описание процедур.

    курсовая работа [1,9 M], добавлен 03.06.2010

  • Рассмотрение теоретических аспектов создания баз данных с применением системы объектно-ориентированного программирования Delphi. Ознакомление с компонентами доступа. Разработка базы данных "Библиотека". Описание основ интерфейса созданной программы.

    курсовая работа [1004,9 K], добавлен 26.10.2014

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

    курсовая работа [1,2 M], добавлен 19.02.2015

  • Разработка программы автоматизации процесса проверки знаний учащихся. Использование языка программирования Borland Delphi 7.0, его свойства, компоненты для работы со строками. Создание обучающих тестов на знание лексики и грамматики английского языка.

    курсовая работа [521,0 K], добавлен 06.03.2016

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.