Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.63/32: Рейтинг темы: голосов - 32, средняя оценка - 4.63
6 / 6 / 2
Регистрация: 09.12.2014
Сообщений: 140

Наставничество в изучении С#

20.08.2015, 12:38. Показов 7688. Ответов 95
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Изучаю С# более полугода считаю что знаю на недальнем уровне, хочется развиваться , язык очень нравиться. Из-за того что не очень много практикую многое забывается, а для практики не могу найти интересных задач. Да и во многом проблема в том что когда сам ставлю себе задачу то нет интереса в её решении, но когда кто то другой ставит, есть стремление в решении поставленной задачи. Хотелось что бы кто-то давал задания я делал и присылал решение, для проверки опытным программистом, критиковал ошибки или "быдло код". было бы хорошо получать задание по возрастающей сложности. Кому не сложно и кого это сильно не отвлечет от своих проблем, занятий и жизни просьба помочь.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.08.2015, 12:38
Ответы с готовыми решениями:

Наставничество\каталогизатор
Добрый день, форумчане! Изучаю язык c#, читаю "Герберт Шилдт - Полный справочник по С#", немного шарюсь в библиотеке майкрософта....

Трудности и лень в изучении C#
Уже как полгода назад я приобрел две книги по C#, Шилтда и Эндрю Стиллмена "Изучаем C#". Не знаю зачем две сразу купил, но книга Эндрю...

Нужен напарник в изучении языка
Здравствуйте, изучаю с#.net есть желание работать по данному направлению, хотелось бы изучать с кем-то вместе,ликбо же это будет более...

95
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
23.08.2015, 20:19
Студворк — интернет-сервис помощи студентам
Реализуй одновременный многопоточный вывод цифр в текстбокс - просто textBox.Text+="1";. - 2,3 итд
Кнопки при клике меняются Старт\Стоп для каждого потока.
Нужно продумать потокобезопасность при обращении к текстбокс - то есть
обращаться к контролу формы можно только из потока вызвавшего форму.

Пара способов создания потока:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
            using System.Threading;
 
 
            Thread t = new Thread(delegate() { /*твой код*/ });  //определение функции на месте
            t.Start();
 
            Thread t1 = new Thread(() => { /*твой код*/ }); //то же, через лямбда выражения
            t1.Start();
 
            Thread t2 = new Thread(Func);   //вызов в потоке определенной ф-ии
            t2.Start();
 
 
 
             public void Func()
             {
             /*твой код*/
             }
Вложения
Тип файла: zip CyberForumThreadsTask.zip (41.2 Кб, 4 просмотров)
0
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
23.08.2015, 20:29
Сложновато, может, но если освоишь - сразу апнешься на несколько левелов
0
6 / 6 / 2
Регистрация: 09.12.2014
Сообщений: 140
23.08.2015, 20:38  [ТС]
Хорошо, буду осваивать)
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
23.08.2015, 21:04
Цитата Сообщение от Woldemar89 Посмотреть сообщение
Не каждая функция - метод,
но каждый метод - это функция
А что вы мне даете ссылку на плюсы? Разговор идет относительно ЯП C#, в нем своя терминология (отличная от С++), так что следует ее соблюдать.
0
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
23.08.2015, 21:19
Цитата Сообщение от insite2012 Посмотреть сообщение
в нем своя терминология
Согласен, в C# все функции являются методами.
Цитата Сообщение от insite2012 Посмотреть сообщение
А что вы мне даете ссылку на плюсы?
Чтобы пояснить, что метод - особый вид функции.
С Вики ссылку неправильно вставил:
метод

Цитата Сообщение от valun Посмотреть сообщение
Хорошо, буду осваивать)
Как сделаешь или устанешь, выложу готовое решение.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
23.08.2015, 21:36
Цитата Сообщение от Woldemar89 Посмотреть сообщение
Согласен, в C# все функции являются методами.
Вот именно об этом и следует сказать. А про то
Цитата Сообщение от Woldemar89 Посмотреть сообщение
что метод - особый вид функции.
Это уже можете в ветке по С++ рассказывать.
0
Фрилансер
735 / 352 / 96
Регистрация: 05.05.2014
Сообщений: 2,621
23.08.2015, 21:41
Цитата Сообщение от insite2012 Посмотреть сообщение
Ну раз пошла такая пьянка, то и этих самых ф-ий в C# нет
пить не хорошо)))
https://msdn.microsoft.com/ru-... 82516.aspx
0
 Аватар для Рядовой
1524 / 914 / 329
Регистрация: 17.05.2015
Сообщений: 3,438
23.08.2015, 21:50
А можешь подкинуть ещё задачку?
За примером далеко ходить не надо. Парсер математических выражений. Не передать то чувство когда он стал адекватно считать)
0
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
23.08.2015, 21:50
Цитата Сообщение от pro_100_gram Посмотреть сообщение
пить не хорошо)))
Пить хорошо в меру
Замечание интересное, но, как я понимаю, анонимные функции вызвать можно,
лишь, передав их как параметр и - от "функции" лишь одно название.
В отличии от классической, которую можно вызвать нормально.
Или я не прав?
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
23.08.2015, 22:16
Цитата Сообщение от pro_100_gram Посмотреть сообщение
пить не хорошо)))
Именно в меру)))
Однако, все-таки базовым понятием C# являются именно методы.
Смотрим C# Language Specification 5.0, стр. 15 и далее по тексту.
0
6 / 6 / 2
Регистрация: 09.12.2014
Сообщений: 140
24.08.2015, 14:29  [ТС]
Woldemar89, Вот что то набросал.
Вложения
Тип файла: rar ConsoleApplication1.rar (30.9 Кб, 6 просмотров)
0
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
24.08.2015, 14:57
Цитата Сообщение от valun Посмотреть сообщение
Вот что то набросал.
Что-то не то ты вставил походу.
0
6 / 6 / 2
Регистрация: 09.12.2014
Сообщений: 140
24.08.2015, 15:04  [ТС]
Woldemar89, немного ошибся((
Вложения
Тип файла: rar CyberForumThreadsTask.rar (53.1 Кб, 4 просмотров)
0
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
24.08.2015, 15:19
C#
1
2
3
4
5
textBox1.Invoke((ThreadStart)delegate()
                    {
                        while (true) textBox1.Text += "2"; //надо так 
                         //у тебя после textBox1.Text += "2"; поток просто остановится
                    });
А вообще смотри реализацию и детально разбирайся.
Обрати внимание на названия контролов и переменных,
разметку кода, потокобезопасность при работе с контролами.

Я там покомментил чутка. Для каждого потока функия определена слегка по разному,
так, как я написал в примере к задачу.

Постарайся понять каждую строчку, потоки - очень важная тема.
Вложения
Тип файла: zip CyberForumThreadsTask.zip (60.3 Кб, 55 просмотров)
0
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
24.08.2015, 15:22
Единственное, что я там недопилил - перехват исключений.
0
6 / 6 / 2
Регистрация: 09.12.2014
Сообщений: 140
24.08.2015, 15:26  [ТС]
Woldemar89, Я сначала и сделал как

C#
1
2
3
4
5
textBox1.Invoke((ThreadStart)delegate()
                    {
                        while (true) textBox1.Text += "2"; //надо так 
                         //у тебя после textBox1.Text += "2"; поток просто остановится
                    });
но у меня походу прога не успевала обновлять текстбокс, про пустой текстбокс с постепенно увеличиваючимся скролом. И не особо реагировала на клик кнопки(
0
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
24.08.2015, 15:29
Цитата Сообщение от valun Посмотреть сообщение
Я сначала и сделал как
Ну начало в принципе более менее адекватное.
Просто когда дело касается контролов формы - возникают некоторые нюансы.
0
6 / 6 / 2
Регистрация: 09.12.2014
Сообщений: 140
24.08.2015, 15:38  [ТС]
Woldemar89, Уже понял ошибку что не добавил Sleep. Буду разбираться в твоем решении. структура для меня немного новая, раньше не сталкивался.
0
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
24.08.2015, 16:13
Лучший ответ Сообщение было отмечено valun как решение

Решение

Цитата Сообщение от valun Посмотреть сообщение
структура для меня немного новая
Структура самая обычная, просто выделил код в регионы, а так, все осталось на своих местах.
Из нового, скорей всего - делегаты, потоки.
Потоки, думаю, понятно, а вот делегат - это как бы тип переменной "функция".

Типа
C#
1
2
3
4
private int a; //целое число
private delegate void AddTextDelegate(object _control, object _text); //ссылка на метод, не возвращающий значения (void) и принимающий 2 объекта как аргумент
 
AddTextDelegate theDelegate = new AddTextDelegate(AddText);   //создаем новый экземпляр функции AddText, ее возвращаемый тип, и параметры совпадают с обозначенными в делегате
Добавлено через 17 минут
Наведи на InvokeRequired и прочитай что это значит - много сразу понятно станет.

InvokeRequired - "Получает значение, показывающее, следует ли вызывающему оператору обращаться к методу invoke во время
вызовов метода из элемента управления, так как вызывающий оператор находится не в том потоке, в котором был создан элемент управления."

У нас вызывающие операторы находятся в потоках 1,2,3. А не в главном потоке вызвавшем форму.
Значит нужно использовать метод Invoke, чтобы вызвать функцию вызываемую потоками 1,2,3 в потоке вызвавшем форму.
Для этого нужно создать ее копию и передать контролу в метод Invoke. Для этого используем делегат.
Копия функции будет вызвана в главном потоке, вызвавшем форму, поэтому в ней InvokeRequired вернет false и сработает
блок else, где находится добавление текста.



C#
1
2
3
4
5
6
7
8
9
10
if (out_Control.InvokeRequired)                                                  
            {
                AddTextDelegate theDelegate = new AddTextDelegate(AddText);                  
                out_Control.Invoke(theDelegate, new object[] { out_Control, text });         
 
            }
            else
            {
                out_Control.Text += text;                                                     
            }
Добавлено через 9 минут
Таким образом получается, что, методы, работающие с контролом, расположенным на форме, должны вызываться из потока, вызвавшего форму, иначе нельзя.
Но нам нужно их вызывать в наших потоках, поэтому приходится в наших потоках создавать их копии и передавать в главный поток.
1
6 / 6 / 2
Регистрация: 09.12.2014
Сообщений: 140
24.08.2015, 17:14  [ТС]
Спасибо за разъяснение.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.08.2015, 17:14

Использование сайта Microsoft при изучении
Не подскажете, что можно почитать на сайте? Вот это? https://msdn.microsoft.com/ru-ru/library/67ef8sbd.aspx

Изучении языка emenem97 ( общие недопонимания)
Ув. модераторы. Можно создать тему в которой буду задавать элементарные вопросы, которые будут возникать при изучении языка? Чтобы форум...

Нужен человек, который поможет в изучении программирования
С# для чайников, нужен опытный прогер, который качественно объясняет ракам. Я прочитал 2 книги, и несколько сайтов по теме C# только в...

Чему уделить внимание при изучении языка программирования C#?
Изучаю самостоятельно C# winforms. Написал пару программ, сапёр, крестики нолики и с бд (mysql workbeanch) ознакомился подключить и...

Помощь в изучении
Приветствую. Не так давно увлекся программированием (хотя интерес эта область вызывала всегда). Ну, как увлекся, скорее задумался, серьезно...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru