Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Rummy_s
0 / 0 / 0
Регистрация: 14.12.2017
Сообщений: 18
#1

Объясните принцип работы кода

15.12.2017, 10:12. Просмотров 755. Ответов 4
Метки нет (Все метки)

Доброго дня. Объясните пожалуйста принцип работы кода построчно.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public partial class Form1 : Form
    {
        private Random rand = new Random();
        private int size = 30;
        private int callCount = 3;
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private Point NextRandomPoint()
        {
            return new Point(rand.Next(size, Width - size * 2), rand.Next(size, Height - size * 2));
        }
 
        private void DrawCircle(int callCount, Graphics g)
        {
            Point p = NextRandomPoint();
            g.DrawEllipse(new Pen(Color.Black, callCount), p.X, p.Y, size, size);
 
            if (callCount > 1)
            {
                DrawCircle(callCount - 1, g);
                DrawCircle(callCount - 1, g);
            }
        }
 
        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            DrawCircle(callCount, e.Graphics);
        }
    }
Код взят отсюда:
Рекурсия: построение ряда увеличивающихся окружностей


Добавлено через 21 минуту
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2017, 10:12
Ответы с готовыми решениями:

Объясните часть кода работы с картинкой
public partial class Form1 : Form { private Bitmap fon; Graphics g; ...

Принцип работы foreach при переборе элементов управления
Доброго дня, форумчане. Имеется форма с 9 TextBox. В программе необходимо из коллекции внести...

Принцип работы Task
static void Main(string args) { var task = Task.Factory.StartNew(() => ...

Принцип работы класса Random
Может кто нибудь объяснить мне принцип генерации случайных чисел? Меня интересует по какому...

Принцип работы асинхронного метода BeginReceive
Здравствуйте. Можете объяснить как работает BeginReceive у сокетов? Сначала метод вызывается,...

4
ViterAlex
6413 / 3613 / 1482
Регистрация: 11.02.2013
Сообщений: 7,963
Завершенные тесты: 3
15.12.2017, 10:33 #2
Тебе известно, что такое рекурсия?
0
Rummy_s
0 / 0 / 0
Регистрация: 14.12.2017
Сообщений: 18
15.12.2017, 10:41  [ТС] #3
ViterAlex, разбирался бы,не написал
0
ViterAlex
6413 / 3613 / 1482
Регистрация: 11.02.2013
Сообщений: 7,963
Завершенные тесты: 3
15.12.2017, 10:56 #4
Лучший ответ Сообщение было отмечено Rummy_s как решение

Решение

Рекурсия — это когда метод вызывает сам себя. что и просходит в 24, 25 строках.
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
//Объявление класса Form1, наследника класса Form. 
//Слово "partial" означает, что функционал класса реализован в нескольких файлах
public partial class Form1 : Form
    {
        //Объявление приватного поля rnd типа Random и инициализация этого поля при создании экземпляра класса
        private Random rand = new Random();
        //Объявление приватного поля size типа int инициализация этого поля значением 30 при создании экземпляра класса
        private int size = 30;
        //Объявление приватного поля callCount типа int инициализация этого поля значением 3 при создании экземпляра класса
        private int callCount = 3;
        //Конструктор класса Form1
        public Form1()
        {
            //Вызов метода инициализации. Код метода расположен в файле Form1.Designer.cs
            InitializeComponent();
        }
        
        //Объявление метода NextRandomPoint, возвращающего экземпляр структуры Point
        private Point NextRandomPoint()
        {
            //создание экземпляра структуры Point и возвращение его как результат  работы метода
            //Экземпляр создаётся генерацией случайных значений для первого и второго аргументов конструктора Point
            return new Point(rand.Next(size, Width - size * 2), rand.Next(size, Height - size * 2));
        }
        
        //Объявление метода DrawCircle, возвращающего void и имеющего два входных параметра: callCount типа int и g типа Graphics
        private void DrawCircle(int callCount, Graphics g)
        {
            //Создание локальной переменной типа Point и присвоение ей значения, возвращённого методом NextRandomPoint
            Point p = NextRandomPoint();
            //Вызов метода DrawEllipse у экземпляра класса Graphics, переданного в метод DrawCircle через параметры
            //Аргументы для метода DrawEllipse: новый экземпляр класса Pen с заданным цветом и толщиной пера, левая координата
            //прямоугольника, описанного возле эллипса; верхняя координата прямоугольника, описанного возле эллипса;
            //ширина прямоугольника, описанного возле эллипса; высота прямоугольника, описанного возле эллипса
            g.DrawEllipse(new Pen(Color.Black, callCount), p.X, p.Y, size, size);
            //Если значение параметра callCount больше 1
            if (callCount > 1)
            {
                //Рекурсивный вызов метода DrawCircle с уменьшением callCount на 1
                DrawCircle(callCount - 1, g);
                //Рекурсивный вызов метода DrawCircle с уменьшением callCount на 1
               DrawCircle(callCount - 1, g);
            }
        }
        //Объявление метода Form1_Paint с сигнатурой, соответствующей делегату события Paint.
        //Этот метод вызывается при возникновении события Paint
        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            //Вызов метода DrawCircle
            DrawCircle(callCount, e.Graphics);
        }
    }
1
Rummy_s
0 / 0 / 0
Регистрация: 14.12.2017
Сообщений: 18
15.12.2017, 11:00  [ТС] #5
ViterAlex, Спасибо!
0
15.12.2017, 11:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.12.2017, 11:00

Каков принцип работы клиент-серверного приложения
Структура прилажения такая: Клиент весит и ждет пока сервер пришлет текст, сервер отсылает...

Объясните, пожалуйста, отрывок кода.
Здравствуйте! Помогите, пожалуйта, разобраться в таком отрывке кода: if...

Завершение работы кода после соытия
Существует класс с событием: public class Hearer { private Hearer() { } private static...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru