Вторник, 17.06.2025, 05:13 Приветствую Вас Гость

Решение задач любой сложности

Главная | Регистрация | Вход | RSS

Все статьи на сайте

Главная » Статьи » Решение заданий Delphi

Задача: Создать собственный класс для операции над числами
Решительно все учебники, самоучители и прочие пособия по Delphi для начинающих в первых главах содержат много текста о том, что собственно представляет собой эта среда программирования и как в ней организован код. В общей каше информации встречаются достаточно поверхностные упоминания о классах, процедурах, функциях и свойствах, которые в большинстве случаев никак не усваиваются читателем. Что в целом, грустно. Ведь эти блоки служат оптимизации программного кода, а значит быстродействию работы программы в первую очередь и читабельности вашего творчества - во вторую.
Так вот сегодня мы рассмотрим задачу на создание собственного класса, обладающего нужными функциями и доступным для основной формы нашего приложения.
Задача: Написать класс для сложения и вычитания двух положительных натуральных чисел, находящихся в промежутке от 1 до 10. Результаты требуется выводить римскими цифрами.
Ну что ж? Алгоритм программы на Delphi у нас должен преследовать две цели: создание собственного класса и вывод в заданном формате, т.е. римскими цифрами.
Класс у нас с вами обладает заданными функциями, поэтому особенно придумывать ничего не придется. Делаем запись по примеру класа TForm, создаваемого автоматически: структура type-private-public-end;
В тайпе объявим наш класс TMySuperClass = class (TObject), а под private зададим описание тех функций, которые нам пригодятся. Объявление функций выглядит следующим образом: function [название нашей функции](входные данные с указанием типа): тип выходных данных.
Теперь в теле программы, нам нужно разместить код функций - шапки для которых можно получить автоматически набрав function TMySuperClass. и выбрав из списка предлагаемых функций. Эта автоматизация будет свидетельством того, что все вы делаете правильно:)
Для того, чтобы использовать наш класс в действии над каким-либо элементом на форме, нам потребуется лишь присвоить его какой-либо переменной. И дальше обращаться к его функциям через уже известную нам точку.
Исходники Delphi:

type

  TMySuperClass = class (TObject)
private
  function vhodVdiapazon (N:integer):boolean;
  function Summ(A,B:integer):integer;
  function Razn(A,B:integer):integer;
  function ArabToRim(N:integer):string;

public

end;

type
  TForm1 = class(TForm)
  Edit1: TEdit;
  Button2: TButton;
  Button1: TButton;
  procedure Button1Click(Sender: TObject);
  procedure Button2Click(Sender: TObject);
private
  { Private declarations }
public
  { Public declarations }
end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
function TMySuperClass.vhodVdiapazon;
begin
  if (1<=N) and (N<=10) then
     result:=true
  else result:=false;
end;

function TMysuperClass.Summ(A: Integer; B: Integer):integer;
begin
  if vhodVdiapazon(A) and vhodVdiapazon(B) then 
      result:=A+B
  else ShowMessage('Введенные числа выходят за диапазон от 1 до 10')
end;

function TMySuperClass.Razn(A: Integer; B: Integer):integer;
begin
  if vhodVdiapazon(A) and vhodVdiapazon(B) then
      result:=A-B
  else ShowMessage('Введенные числа выходят за диапазон от 1 до 10')
end;

function TMySuperClass.ArabToRim(N: Integer):string;
var
  arRim: array [0..8] of string;
  s:string;
  i:integer;
begin
  arRim[0]:='I';
  arRim[1]:='II';
  arRim[2]:='III';
  arRim[3]:='IV';
  arRim[4]:='V';
  arRim[5]:='VI';
  arRim[6]:='VII';
  arRim[7]:='VIII';
  arRim[8]:='IX';

  s:=IntToStr(N);

  if Length(s)=2 then
    begin
      if s[1]<>'-' then
        begin
          s[1]:='X';
          if s[2]='0' then
             begin
               Delete(s,2,1);
               result:=s
               end
          else result:=s[1]+arRim[StrToInt(s[2])-1]
        end
      else result:=s[1]+arRim[StrToInt(s[2])-1]
    end
  else result:=arRim[StrToInt(s)-1]
end;


procedure TForm1.Button1Click(Sender: TObject);
var
  MyClass:TMySuperClass;
begin
  Edit1.Text:=MyClass.ArabToRim(Myclass.Summ(5,5))
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  MyClass:TMySuperClass;
begin
  Edit1.Text:=MyClass.ArabToRim(Myclass.Razn(5,6))
end;

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

Если у вас все еще остались трудности с решением конкретно вашего задания, готова помочь - напишите мне.
Категория: Решение заданий Delphi | Добавил: Мятка (28.10.2010) | Автор: Alexandra W
Просмотров: 2952 | Комментарии: 1 | Теги: программы на заказ, примеры Delphi, написать программу, алгоритм, решение заданий, Delphi исходники, решение на заказ, программирование на delphi | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: