Материал: LR-INF-01

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

  1. Изменить заголовок формы можно, щелкнув в области Form1, а затем в правом столбце свойства Text окна Свойства, и ввести текст Вычисление периметра и площади треугольника

    В верхней части формы напишите задание, как показано на рисунке 5.

Рисунок 5

  1. Составление таблицы используемых объектов и их свойств.

Используемые объекты и их установленные свойства студенты должны свести в таблицу 1 самостоятельно. Таблица 1 должна иметь следующий формат:

Таблица -1

Объект

Имя объекта

Свойство

Значение свойства

Форма

Form1

Name

Form1

Text

Вычисление периметра и площади треугольника

BackColor (Palette)

Светло-зеленый

Текстовое

поле

textBox1

Name

txtx1

Text

“”(Пусто)

Font

Размер 10

Enabled

True

Текстовое

поле

textBox2

Текстовое

поле

textBox7

Name

txtPttr

Text

“”(Пусто)

Font

Размер 10

Enabled

False

Метка

label3

Кнопка

button1

  1. Разработка схемы алгоритма

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

  1. Написание программного кода

Теперь можно написать программный код для проекта Проект-ЛР1-1. Так как большинство созданных ранее объектов уже «знают», как им надо работать, при запуске программы они будут готовы к приему ввода от пользователя и его обработке. Встроенная функциональность объектов является одной из самых сильных сторон VS и C++ – после того, как объекты будут размещены на форме и их свойства будут установлены, они готовы к запуску без дополнительного программирования (визуальное программирование).

Так как программой управляют кнопки Вычислить и Завершить, программный код нашего проекта должен быть связан именно с этими кнопками. Для ввода и редактирования операторов программы на C++ предназначено окно Редактор программного кода.

Операторы программы, которые используются совместно для выполнения некоторого действия, обычно группируются в программные конструкции, называемые процедурами, функциями или методами. В прошлом семестре вы создавали функции пользователя, т.е. функции, программный код которых (и заголовок, и тело) полностью определяет программист. Такие функции (методы) выполняются оператором вызова, в котором указано имя этой пользовательской функции со списком фактических параметров. В технологии визуального программирования используются событийные функции, т.е. функции, тело которых (программный код, записанный внутри фигурных скобок) выполняется при наступлении какого-либо события, например, такого, как щелчок на кнопке. Такая событийная функция (метод) всегда ассоциирована с конкретным объектом и конкретным событием. Заголовок такой событийной функции жестко определяется самой системой VS и изменять его программист ни в коем случае не может. Чтобы получить «заготовку» событийной функции (заголовок и пустое тело) требуется в окне Конструктора форм Form1.h[Конструктор] дважды щелкнуть мышью на том объекте (элементе управления) формы, для которого и требуется эта событийная функция. После двойного щелчка по объекту на форме открывается окно Редактор программного кода Form1.h, внизу которого записана пока пустая событийная функция для этого объекта.

  1. Необходимо вставить код обработки события нажатия кнопки button2, используя окно Редактор кода. Для этого надо дважды щелкнуть по кнопке button2. При двойном щелчке мышью на кнопке button2 «Завершить» автоматически добавляется первая и последная строки процедуры события private void button2_Click() – рисунок 7.

private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e

{

Тело процедуры пустое

}

Рисунок 7

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

this->Close();

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

Обратите внимание, что при описании событийной процедуры используются операции ::, ^, ->. Подробнее их мы обсудим далее. Кратко можно сказать, что:

:: – операция доступа, которая обеспечивает обращение к именованной глобальной области памяти, находящейся вне области видимости. Эта операция применяется при работе с одноимёнными объектами, расположенными во вложенных областях действия имён;

^ – регулируемый указатель, который ссылается на объекты, расположенные в общей регулируемой куче динамической памяти, предоставленной приложению в момент исполнения. Позже, при изучении динамических массивов, мы будем создавать свои объекты (массивы), выделяя для них память и освобождая ее после того, как объект уже не нужен. Память под такие объекты выделяется в так называемой неуправляемой куче и указатели на участки памяти в такой куче обозначаются символом «*». А в среде CLR приложение отличается тем, что его заготовка обеспечивает подключение к приложению специального системного пространства System, содержащего объекты, размещение в памяти, которых надо автоматически регулировать. Режим CLR работает уже с управляемой кучей памяти, в которой размещение объектов и ее освобождение от них происходит под управлением среды. В этой среде употребляются так называемые регулируемые указатели на объекты и для таких указателей принято специальное обозначение: вместо символа «*» применяется символ «^»;

-> операция косвенного выбора компонентов структурированного объекта.

  1. Теперь, когда написан код, связанный с кнопкой Завершить, надо написать код для кнопки Вычислить.

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

Так как при нажатии на кнопку Вычислить должны вычисляться периметр и площадь треугольника, то код событийной процедуры для кнопки должен содержать операторы ввода исходных данных (координат вершин треугольника), оператор(ы) вычисления периметра и площади треугольника и операторы вывода результатов. Ранее, в лабораторной работе 11 прошлого семестра, для этих целей мы создавали отдельные пользовательские функции. Сейчас для ввода и вывода пока отдельных функций делать не будем, но вычисление периметра и площади треугольника реализуем функцией пользователя PS. Так же, как и раньше, код этой и вспомогательных функций будем записывать в отдельном файле и раздельно компилировать для локализации возможных ошибок. Поэтому, прежде, чем записывать код событийной процедуры для кнопки Вычислить, создадим файл с функцией PS и необходимых вспомогательных функций, разработанных ранее при изучении метода пошаговой детализации (лабораторная работа 11 прошлого семестра).

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

В открывшемся окне Добавление нового элемента Проект ЛР-1 в поле Имя ввести имя файла, например, Resh, где будут находиться программные коды пользовательских функций, вычисляющие периметр и площадь треугольника. Затем активизировать элемент Файл С++ (.срр) и нажать на кнопку Добавить.

После чего откроется редактор программного кода с вкладкой Resh.cрp.

В редактор кода добавить тексты функций, представленные на рисунке 8.

Рисунок 8.

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

  1. Теперь можно можно написать программный код, который будет выполняться при нажатии кнопки Вычислить, то есть событийную процедуру button1_Click. Чтобы отобразить форму, щелкнуть в окне Обозреватель решений на пиктогрампе Form1.h или на вкладке Form1[Конструктор].

    Дважды щелкнуть мышью на кнопке Вычислить.

    Через некоторое время появится окно Редактор кода, и рядом с процедурой события, связанной с кнопкой button2, появится заготовка процедуры события, ассоциированная с кнопкой button1.

Хотя текст этой кнопки был изменен на Вычислить, ее имя в программе осталось button1. (Имя и текст элемента интерфейса могут быть различными для удобства программирования.) Каждый объект может иметь несколько связанных с ним процедур – по одной для каждого распознаваемого события.

Дополним событийную процедуру программным кодом: операторами ввода зачений координат вершин треугольника из текствых полей, оператором вызова функции PS(x1,y1,x2,y2,x3,y3,p); и операторами отображения в текстовых полях соответствующих результатов.

Рисунок 9

Для ввода и вывода данных в текстовое поле используется свойство Text объектов textBox1textBox6 с именами txtx1, txty1,txtx2,txty2,txtx3,txty3, записываемое через операцию косвенного выбора (->). Так как значения, заданные в объектах textBox, имеют строковый тип данных String, то при чтении данных из текстовых полей в переменные числовых типов, необходимо их явное преобразование методами класса Convert, например, метод Convert::ToDouble(х) преобразует тип записанного в скобках объекта х в числовой тип Double.

Также и для вывода числовых данных в текстовые поля нужно их явное преобразование в строковый тип:

txtPttr -> Text = p.ToString();

  1. Не забудьте также записать прототип функции PS() в начало файла Form1.h, сразу после автоматически сгенерированной препроцессорной директивы #pragma once, (это директива для контроля за тем, чтобы конкретный исходный файл при компиляции подключался строго один раз).

  2. Сохранить введенный программный код, выполнив команду Сохранить все элемента главного меню Файл.

Команда Сохранить все сохраняет все файлы, входящие в проект – собственно файл проекта, файл формы, все модули кода и все связанные с приложением компоненты. Если это первое сохранение проекта, то, возможно, появится диалоговое окно Сохранить проект запрашивающее имя и место для сохранения проекта. (Если ваша копия VS настроена так, чтобы запрашивать место сохранения проекта при его создании, то сейчас диалогового окна Сохранить проект вы не увидите – VS просто сохранит все изменения.) Если необходимо сохранить только элемент, с которым в настоящий момент работаете (форму, модуль кода или что-либо еще), то используется команда Сохранить, также находящаяся в меню Файл. Если необходимо сохранить текущий элемент с другим именем, то используется команда Сохранить как.

Источник: https://studfile.net/preview/16487040/