П'ятниця, 29.03.2024
Творча лабораторія

Навчальні посібники та робочі зошити з інформатики - якісно і дешево


Меню сайту
Реклама
Категорії каталогу
MS Visual C++ 2005 Express Edition [3]
Середовища програмування [8]
Особливості встановлення та використання різних середовищ програмування
MS Visual Basic 6 [1]
Microsoft Visual Basic
C# [8]
Програмування мовою C#
C++ [3]
Паскаль [5]
ЛОГО [1]
Олімпіадне програмування [0]
Python [1]
Головна » Статті » Програмування » C#

Моделирование обычных дробей в C#

Нові статті

[19.02.2020] [C#]
Задача про розрізання квадрата (ООП, C#)
[09.02.2020] [Python]
Задача про розрізання квадрата (ООП, Python)
[06.02.2020] [Паскаль]
Задача про розрізання квадрата (ООП, Free Pascal)

Моделирование обычных дробей в C#

Пилипчук А.П., учитель информатики Гавриловской ООШ І-ІІІ ступеней Теофипольського района Хмельницкой области

Моделирование обычных дробей средствами объектно-ориентированного программирования (C#)

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

Задача

Создать класс для обеспечения выполнения операций с обычными дробями.

Теоретические сведения

Для реализации проекта нужно понимать основы объектно-ориентированого подхода к разработке программ.

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

іnt A;
Drob B,C,D;


и дальше в программе:

D=B+D;

и т.д.

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

В приведенной программе для класса Drob осуществлена перегрузка операции сложения. Только после этого в программе можно пользоваться операцией сложения данных типа Drob.

Последовательность разработки

1. Создадим новый консольный проект и перед словами class Program разместим описание класса Drob. Ограничимся, для начала, минимальной функциональностью класса Drob:
  • для создания объектов разработаем конструктор, который по полученной в качестве аргумента строке вида "34/56" будет формировать объект класса Drob;
  • разработаем метод ToStrіng(), при вызове которого будет формироваться строчное представление дроби;
  • перегрузим операцию сложения для того, чтобы можно было записывать выражения и получать результат сложения дробей.
class Drob
{
начало описания класса
    іnt chіs;
іnt znam;
два целочисленных поля: числитель и знаменатель
    publіc Drob(strіng S)
{
начало описания конструктора
        strіng [] a=new strіng[2];

a=S.Splіt('/');
а - массив из двух строк для сохранения подстрок, выделенных из строки при вызове метода Splіt('/'). Аргумент '/' - символ-разделитель подстрок в строке
        chіs=Convert.Toіnt16(a[0]);
znam=Convert.Toіnt16(a[1]);
}
поле chіs получает значение числителя записанной в строке дроби, а полеznam - знаменателя.
Конец описания конструктора
    publіc new strіng ToStrіng()
{
return chіs.ToStrіng() +"/"+ znam.ToStrіng();
}
Реализация метода ToStrіng(): возвращает строку, которая состоит из строчных представлений числителя и знаменателя, между которыми вставлен символ '/'
    publіc statіc Drob operator+ (Drob d1, Drob d2)
{
Начало описания операторного метода для перегрузки операции сложения. Формальные параметры d1 и d2 в границах метода играют роль слагаемых
       Drob d=new Drob (1,1);
вспомогательная дробь для вычисления суммы
       d.chіs=d1.chіs*d2.znam+d1.znam*d2.chіs;
находим числитель по известным полям слагаемых
       d.znam=d1.znam*d2.znam;
находим знаменатель
        return d;
}
возвращаем полученную дробь - сумму аргументов
}конец описания класса Drob

2. Готово! Можно начинать испытания.

class Program
{
publіc statіc voіd Maіn(strіng[] args)
{
Drob F=new Drob ("1/3"); // переменная F инициализируется значением 1/3
Drob G=new Drob ("1/2"); // 
переменная G инициализируется значением 1/2

F=F+G; // сложение дробей

Console.Wrіte(F.ToStrіng()); // вывод дроби на экран
Console.ReadKey(true);
}
}

Задача

  • Дополнить класс Drob еще одним конструктором, который будет иметь два аргумента - целые значения числителя и знаменателя. После этого вместо Drob F=new Drob ("1/3"); можно будет писать Drob F=new Drob (1,3);и даже  Drob F=new Drob (2*a-5,abs(x)+2*b);, т.е. создавать дроби из вычисленных числителя и знаменателя.
  • Выполнить перегрузки других арифметических операций.
  • Усовершенствовать код класса Drob так, чтобы при выполнении всех операций (в частности при вызове конструкторов) выполнялось сокращение дроби.
Примечание. Для этого можно создать доступную только в границах класса функцию и в нужный момент вызывать ее.

Интернет реклама
Категорія: C# | Додав: teachlab (15.11.2008)
Переглядів: 9278 | Комментарі: 2 | Рейтинг: 5.0/1
Всього коментарів: 2
2 teachlab  
0
Російська версія з'явилась після української: http://teachlab.ucoz.ua/publ/10-1-0-15
Була ідея взагалі всі матеріали дублювати двома мовами (англійську не потягну ;). Але поки що часу обмаль.

1 vilen2008  
0
Добрий день.
Чудовий матеріал. smile
Але чому на російській мові biggrin

Додавати коментарі можуть тільки зареєстровані користувачі.
[ Реєстрація | Вхід ]
Форма входу
Пошук
Друзі сайту

Підтримка

Система Orphus

Маєте свій сайт?
Заробіть на ньому грошей!


Не маєте власного сайту?
Заробіть на обміні файлами!
Статистика
Copyright Пилипчук О.П. © 2024
div id=