C++ или программирование по-универовски. Часть 2. Работа в программе.

от
ООП   c++, универ

Сессия успешно прошла, а потому - следующая часть "программирования", в которой мы рассмотрим решение конкретных задач и примеров, задаваемых студентам на парах, и возможность их практической реализации в программе Builder C++ v6.0. Перед работой рекомендуется прочитать 1-ю часть, чтобы иметь понятие о том, что вообще здесь необходимо сделать. В качестве примера, первая задача, даваемая самым двоечникам сообразительным студентам в качестве самостоятельной работы - написание калькулятора, а именно:
Задача 1. Начальный уровень. Написать программу, которая по нажатию кнопки сможет рассчитать периметр прямоугольника по заданным сторонам и вывести его в отдельное поле (сделать калькулятор).
Выполнение такой задачи изначально разделяется на следующие этапы (происходящие, соответственно, от структуры программы, описанной в 1 части - конструктора, редактора объектов и редактора кода). Для того, чтобы выполнить эту программу, нам нужно сделать три вещи: расположить нужные элементы в конструкторе формы и определить их дизайн (сделать т.н. морду или "front-end", если можно так выразиться), сделать связь между элементами программы и элементами кода, сделать код, осуществляющий функционал программы (back-end).
Прим. от автора: в крупных городах необъятной родины данное программирование может показаться смешным, однако, в нашем регионе даже такая работа считается высшим пилотажем. Я видел, как программы из этого конструктора работали с аппаратом и БД пациентов в местном медицинском учреждении.
Чтобы реализовать все эти шаги поэтапно, нам нужно сначала определить, какие элементы нужно разместить в форму. Вернёмся к исходной задаче - рассчитать периметр прямоугольника. Как мы помним из школьного курса, периметр прямоугольника вычисляется просто: P = 2*(a+b). Но, для того, чтобы наша программа работала, нужно сначала ввести, а затем вывести эти данные (три текстовых поля - Edit). При этом, нужно добавить ещё одну кнопку (Button), по которой будут организованы вычисления. Шаг 1. Мы открываем конструктор, и просто нажимаем на нужный нам элемент в панели помощника выбора элементов. После того, как мы выделили его, нужно просто кликнуть в определенном месте на форме, и этот элемент там появится. Добавим 1 Button и 3 Edit'а:
A1.png
Для функционирования программы достаточно уже этих элементов. Но, чтобы эти программы выглядели красиво, и вы могли уже смело рубить за них бабки показывать друзьям и преподавателю, давайте немного преобразим форму: для этого:
1. Очищаем поля Text в элементах Edit: Кликаем по элементу на форме, ищем в инспекторе объектов свойство Text и удаляем всё из него.
2. Аналогично кликаем на Button, и в поле "Caption" вместо стандартной надписи пишем "Выполнить", "Вычислить" или что душе угодно. Растянуть элемент и изменить его размер можно при помощи вспомогательных "точек", которые высвечиваются при нажатии на элемент.
3. Добавим несколько нефункциональных элементов типа Label перед полями, в их параметре "Caption" напишем пояснения, что каждое из них делает.
4. Выберем все элементы при помощи выделения (так же, как выделяете на рабочем столе ярлыки), и установим общий параметр Font -> Size равным 10.
5. Кликнем на форму в свободное от объектов поле, и изменим её Caption на название программы. Сохраним всё при помощи Ctrl+S.
Получили вот такую красоту:
A2.png. Конкретно для данной задачи форма закончена, добавлять в неё больше каких-то свистелок смысла не вижу.
Шаг 2. Добавляем связь между формой и программным кодом.
Немного теории для студентов, малознакомых со структурой кода: в программном коде, в первую очередь, существует разделение на т.н. "методы" (у нас их называли функциями). Внутри этих методов выполняются определённые участки кода, в них можно передать значения и забрать из них значения, а можно ничего не передавать. Для базового уровня этого знания достаточно. Так вот, для того, чтобы программа начала функционировать - нужно обозначить метод, в котором и будет находиться наш код. Конкретно для данной задачи - кодом будет являться формула вычисления периметра, а также функции, необходимые для ввода и вывода параметров из неё. Давайте создадим такой метод, где выполнить эти операции будет проще всего. Для этого нужно создать связь события (event) по нажатию на кнопку (onClick), при котором будет вызываться этот метод. Проще всего сделать это так: в конкструкторе формы нажимаем двойным щелчком ЛКМ по кнопке. Сразу же откроется редактор кода:
A3.png
В нём уже можно увидеть два метода:
1. __fastcall TForm1::TForm1 - метод, выполняемый при инициализации (запуске) программы - код в нём будет выполнен сразу же после запуска. Например, туда можно вместить автозаполнение шапок таблиц и т.п., нам он пока не нужен.
2. void __fastcall TForm1::Button1Click - метод, который был создан. В нём-то и нужно написать программный код. Приставка void обозначает, что метод ничего не возвращает - в нём просто исполнится программный код.
Если теперь в Object Inspector при выбранном элементе Button1 открыть вкладку Events, то будет видно, что на кнопку автоматически назначено событие.
A4.png
Шаг 3. Написание кода. Как нам уже известно, в нашей программе будет исполняться лишь одна формула, в которой есть 3 переменные - a, b, P. Как известно из 7-го класса, функция y=f(x) и y=f(y) имеет зависимость непосредственно от переменных x и y, поэтому эти переменные могут принимать любые значения определённого вида (в нашем случае - числовые целые значения). Поэтому эти три переменные необходимо объявить - зарезервировать в памяти место под них. Для объявления простых переменных целого числа используется оператор int. Идентификаторы (буквы или слова, по которым будем обращаться к конкретным переменным) можно записывать через запятую. Их можно объявить как внутри метода, так и снаружи (будут доступны для всех методов в классе). Находим в коде следующую строчку:
  1. TForm1 *Form1;
и объявляем сразу же после неё:
  1. int a, b, P;
Проверить, что всё написано правильно можно, нажав комбинацию клавиш Ctrl+F9 (в результате после сборки должно высветиться Done: Make. Если же пишет There are errors или there are warnings, значит вы 1. написали что-то не правильно 2. забыли сначала сохранить весь проект 3. компилятор встал криво (такое тоже было).
Теперь перейдём в сам метод:
  1. void __fastcall TForm1::Button1Click(TObject *Sender)
  2. {
  3.  
  4. }
Здесь, соответственно, после открывающей круглой скобки { мы начинаем писать код. Три переменные уже зарезервированы. Теперь необходимо заполнить значения первых двух. Они вводятся пользователем в форму. Так как наш метод был создан из конструктора, то возможность получить эти значения также передаётся в сам метод, поэтому нужно написать команды на получение этих данных (а именно: вытянтуь из поля Edit1-> Text текстовое значение и записать его в переменную. Мы могли бы записать так:
  1. a = Edit1->Text;
. Но это приведёт к ошибке.
Подробнее о типах данных: мы объявили наши переменные как целое число, а в поле Text будет содержаться строка (массив букв). При помещении массива букв в целое число возникнет ошибка. Для того, чтобы её исправить, нужно сначала перевести данные из строки (тип String) в тип число (int). Для этого используется соответственно выражение: a = StrToInt(<переменная String>);.
Запишем сразу же для двух переменных (писать код после первой открывающей скобочки { метода):
  1. a = StrToInt(Edit1->Text);
  2. b = StrToInt(Edit2->Text);
. Проверьте программу комбинацией Ctrl+F9, если всё нормально, то перейдём к следующему пункту.
Так как переменные a и b уже известны, запишем формулу:
  1. P = 2*(a+b);
. В программу она пишется именно в таком виде - элементарная математика низкого уровня. Теперь нужно сделать вывод текста в поле Text, в нашем случае Edit3. Пишем так:
  1. Edit3->Text = P;
Здесь конвертация уже не обязательна, и производится автоматически. Проверим программу, если всё нормально, то получаем вот такой код из 4-х строк:
A5.png
Запускаем его, нажав клавишу F9. Откроется форма в готовом виде. Запишите в неё значения, и попытайтесь выполнить программу. Вот пример успешно выполненной:
A6.png.
Собственно, на этом моменте программа выполнена, и задачу уже можно сдавать кому нужно. Для изменения параметров задачи нужно пошагово изменить введённые данные и их метод выполнения. Если тема будет интересной, покажу другие задачи, задаваемые на контрольные, например, с картинками :hack: . nitsu специально для студентов и annimon.com
-5   1   6
180

  © aNNiMON (Melnik Software)
Онлайн: 46 (0/46)
 
Яндекс.Метрика