Добавил:
Developer Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЯП Лабораторная работа №1.1.docx
Скачиваний:
6
Добавлен:
14.01.2023
Размер:
1.46 Mб
Скачать

3.4.Схемы функциональных алгоритмов решенной задачи.

Рисунок 4 – Схемы алгоритмов функций CalcP() и CalcS() вычисления периметра и площади соответственно

Рисунок 5 – Схемы алгоритмов функций LenS() и Ps()

Рисунок 6 – Схемы алгоритмов функций PutPS() и GetCoord() вывода и ввода значений соответственно

Рисунок 7 - Схема алгоритма главной функции

3.5.Программные коды разработанных функциональных алгоритмов.

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

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

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

Для того чтобы вставить код обработки события после двойного нажатия кнопку button2, использется окно Редактор кода. При двойном щелчке мышью на кнопке button2 «Завершить» автоматически добавляется первая и последная строки процедуры private voidbutton2_Click.

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

this->Close();

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

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

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

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

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

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

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

В редактор кода добавить тексты процедур.

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

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

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

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

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

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

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

Convert, например, метод Convert::ToDouble(х) преобразует тип записанного в скобках объекта х в числовой тип Double.

Также и для вывода числовых данных в текстовые поля нужно их явное преобразование в строковый тип: txtPttr->Text=p.ToString();

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

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

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

]

Рисунок 8 – Код функций решения задачи

Рисунок 9 – Преобразование типов переменных

Рисунок 10 – Объявление функции PS()