Пригодилось!!! Кароче не работает точное сравнение на дробных числах по естественной причине - точно посчитать число с плавающей точкой с помощью целых чисел - крайне сложно. Этот флоат на самом деле с момента создания нифига не 0, а 0.0000000... и где то после 10 знака начинаются артефакты, которые мешают сравнивать значения потому что из-за них число... не может быть равно целому числу. Это железная фигня, а не программная. Ну и все таки если создать флоат нейм; то он будет таки равен чистому нулю. Но если создать 1 или к тому нулю чета прибавить - сразу появляется артефакт. И кстати по началу этот артефакт не видно хз почему, вот это интересно. Он там есть с самого первого тика. На этом артефакте, кстати, однажды дико проебались военные. У них была какая то установка для сбивания ракет и она просто почему то в один момент перестала сбивать ракеты - вроде как начинала палить сильно спереди и нифига не попадала. Нашли, хз как, в чем была проблема. Внутренний счетчик времени прибавлял типа по 1 секунде, но эта секунда была не настоящей, а флоат, то есть у неё где то далеко за ней был артефакт в виде рандомных чисел и в итоге секнду была на миллионную больше настоящей. Происходил неправильный расчет траектории и установка мазала. А все дело было в том, что она без перезагрузки стояла несколько месяцев, поэтому ложная секунда накапала очень существенно. 100% случай можно найти в википедии, но я не могу вспомнить как.
@XpucT5 жыл бұрын
Закрепил 👍
@omoloni4 жыл бұрын
округлять до целых и использовать decimal
@sabiradil4 жыл бұрын
это были ракеты Пэтриот, на канале JavaRush где-то на третьем уроке объясняется
@ersafap4 жыл бұрын
Тут еще такое дело. Не знаю как в шарпе а в СИ то, что записано в коде в виде литерала для чисел с плавающей запятой нифига не равно строго тому что лежит в памяти. Пишем float F = 5.0; а в памяти на самом деле висит что-то типа 4.99999999993. Компилятор подставляет туда константу, наиболее близкую той, которую хотел юзер. Кроме того, точность динамически зависит от фактической величины. Утрировано и очень грубо говоря, число 23432432749.00001 может иметь значимую дробную часть 5 разрядов а 2.347587349573498 намного больше.
@alexs85793 жыл бұрын
да, эта ошибка заложена в архитектуре проца, при создании пакетов типа матлаб и при прочих продуктах, когда не было изображений поверхностей проектируемых конструкций, а на экран выводилась матрица еЁ описывающая это учитывали в 80-х, еще до создания джавы. а военные погорели больше на секретности и на квалификации кадров.
@sirakeks5 жыл бұрын
5.30 утра, а Хачатур не спит, уроки херачит. Малаца! Спасибо.
@serpotapov4 жыл бұрын
Итерировали, итерировали, итерировали, да не выитерировали... =) Спасибо за уроки!
@ПавелЮров-з9ж Жыл бұрын
нигде не встречал такой пример с for.....Моё почтение =)
@aleksadrfedotov8084 Жыл бұрын
Класс видео, закрепляю по твоим урокам материал прочитанный ранее из книг!!!
@alexandrsol2844 жыл бұрын
итерация - повторное применение какой-либо математической операции. можно так же обозвать, как последовательное "приращение" к какому-нибудь элементу одинакового значения, после выполнения инструкций(набора инструкций). или еще проще его называют "шаг цикла"
@ГеоргийЧупин-в1е4 жыл бұрын
Спасибо тебе за уроки! За пару дней смог написать полезную для себя прогу с нормальным интерфейсом)
@xasthul23555 жыл бұрын
Очень полезные и интересные видео уроки. Спасибо!
@gunman156 Жыл бұрын
Огромное спасибо за ваш труд! По запросам на ютубе, вроде выдает много разных уроков, но они или на английском или на индуском, вы как оазис среди пустыни.
@thecloufer Жыл бұрын
Совершенно метко подмечено! 😇
@grimmiir6717 ай бұрын
2024 Учу C# по твоим урокам для вката в геймдев. Спасибо за курс)
@Slonick5 жыл бұрын
На счёт почему for, а не while в типичных задачах выполнения N раз одной и той же задачи. For на уровне интерпретатора и процессора проще предугадать и оптимизировать, в отличии от того же while.
@PhAnToM-bn1es5 жыл бұрын
Добрый день! Погрешность в операциях с плавающей точкой объясняется работой с этими числами на уровне процессора, т.е. на уровне архитектуры самого процессора. Погрешность будет абсолютно на любом языке программирования. Чтобы избежать таких ситуаций, можно использовать функции округления.
@ТимофейБелый-ы8ч4 жыл бұрын
Спасибо за урок!
@ОльгаКононова-м3ч9 ай бұрын
В одной из книг о программировании части условия цикла for называют так: (инициализатор; условие цикла; итератор){тело цикла}
@АлександрРюмин-п5ы2 жыл бұрын
В Python при итерации есть очень похожие настройки, называются start-stop-step
@ЗахарПанасенко-ю8ж4 жыл бұрын
Третье значение в скобках for напоминает мне некий корректировщик, после применения которого, цикл проверяет условие i
@ЕвгенийЛитвин-н3ш4 жыл бұрын
Спасибо, классные уроки, жаль что раньше по поиску не находил.
@Kozeniuk5 жыл бұрын
Хачатур доброго времени суток. Извините. А не будет ли видео типа:"О вкусах спорят". Очень концептуально. И прекрасно информативно.
@XpucT5 жыл бұрын
С высокой вероятностью будет. Набралось на самом деле много тем. У Меня также есть основной канал: kzbin.info
@Slonick5 жыл бұрын
Фантомные дробные части это нормально, все с этим смирились. Когда-то натыкался на объяснение этой вещи, но не помню ответа. Если найду то самое видео, то поделюсь. Оно из канала DotNext. Там много интересных, специфичных видео, уверен, найдешь там что-то полезное.
@ВладимирВладимирович-ю6х4 жыл бұрын
Спасибо
@kostya13062 жыл бұрын
Казлось бы, что нового я могу узнать про цикл for? Могу, оказывается.
@bxshlyator4 жыл бұрын
XpucT, так вот кто делал репаки на торренте
@СтаниславМожейко-п9н Жыл бұрын
1) Почему при < останавливается на 94, а при
@КапляРосы-ш6э4 жыл бұрын
спасибо)
@unclesam16144 жыл бұрын
Досмотрел до 20:50, и предполагаю что цикл не работает так как: Нужно писать >= или
@MariyaKornilova2 жыл бұрын
Спасибо. Я рада, что нашла твои уроки.Университетская образовательная программа и рядом не стояла. Но кое-что все равно не могу уразуметь. Как, например, узнать какие методы есть в ЯП для реализации необходимой задачи и есть ли они или необходимы дополнительные библиотеки? Например, как бы я без тебя узнала, что надо Opacity
@XpucT2 жыл бұрын
Многие вещи приходят, как и говорил в Уроке 0, из Google =) Опыт, время, практика.
@DeLLnuSSАй бұрын
Есть смысл идти в уник или лучше самоучкой быть?
@YariikR5 жыл бұрын
Доброго времени суток Хачатур, огромное спасибо за уроки! С появлением окна очень красиво выходит, хочется что то такое сделать для label или panel внутри программы, но я не могу найти параметр Opacity для них, это можно как то реализовать? Делал черед visible появления и исчезновение того же текста, но выходит как то топорно, а хочется какой то плавности.
@XpucT5 жыл бұрын
Добрый день 🖐 Очень хороший вопрос. Об этом чуть позже. На Windows Forms менять Opacity можно только у формы и нельзя у контролов. А на WPF можно. Но для нас - это не преграда и скоро покажу, как Я обошёл систему 🤟🏻 и делаю это для себя.
@YariikR5 жыл бұрын
@@XpucT, спасибо за ответ! Буду ждать видео по дизайну, прям очень интересует эта тема, потому что хотелось добавить тень под панель, а идей нет, даже те видео, что на ютюбе у них все плоское и они просто набрасывают панели. И вообще интересно, насколько хороший дизайн можно реализовать на вин формс. Тот же фотошоп, можно ли такой дизайн повторить на формс или уже нужен впф. Уверен, что видео будет интересное, жду!:)
@user-wu-tang Жыл бұрын
Привет ув.Хачатур for (условие ; вопрос; решение) - это самое понятное наверно
@Айдар102-з1э2 жыл бұрын
for (начальное значение параметра, условие прекращения цикла, модификатор параметра)
@ZaharS20003 жыл бұрын
Сейчас напишем что бы кнопка бегала по всему экрану и программа исчезала и возвращалась и загрузка грузилась то вперед то назад :)
@infinitynoir54415 жыл бұрын
Хачатур, привет! Спасибо большое тебе за уроки! Подскажи пожалуйста, для бинда твоей паузы ты используешь Snippet Designer из магазина VS или как там его, или что - то другое? Спасибо.
@XpucT5 жыл бұрын
Привет 🖐 Я использую Punto Switcher =) Ещё до всяких emmet и прочих много лет уже юзаю и строю свои сокращалки. Must Have 👍
@infinitynoir54415 жыл бұрын
@@XpucT Ух ты! Удивлен! Спасибо большое. Пожалуй тоже воспользуюсь. Еще задам тебе интересующий вопрос, а то не знаю куда тебе точно писать. У тебя вот Win10 Tweaker использует левую часть интерфейса как меню(кнопки), а правая - это панели? По нажатию нужного пункта меню, он меняет свою панель на Visible true, а остальные скрывает? Или как это устроено. Мне просто нужно сейчас крайне похожее и я сижу думаю, как сделать правильно, чтобы потом не спотыкаться об свой же способ. Или может он панельку делает топ мост каким либо образом? Или это вообще не панели, а формы?)) После просмотра курса я более чем стал доверять твоему мнению, так что спасибо, если найдешь время на ответ :)
@XpucT5 жыл бұрын
@@infinitynoir5441 на самом деле Ты очень точно угадал => клик на LinkLabel скрывает другие панели и отображает ту, что нужно. Касаемо правильно - это не правильный подход. Можно и Location менять, то совсем правильно - это пилить на WPF. Однако в рамках обучения может получиться каша. Поэтому считаю, что сначала правильно делать неправильно, а так, как подсказала смекалка. А потом уже искать правильные пути. Почему Я допускаю такой парадокс - очень просто - некоторые костыли, до которых Я додумался работают намного эффективнее того, что уже было придумано. Так и сделан Win 10 Tweaker. Тысячи функций и методов, но работает быстрее других и весит мало. И всё потому что у Меня свои велосипеды и свои функции.
@infinitynoir54415 жыл бұрын
@@XpucT Спасибо огромное, Хачатур, крайне благодарен. С меня лайки и просмотры =))
@ВладПідгайний-х8э5 жыл бұрын
То есть, грубо говоря, третья часть в скобках цикла фор не особо то и нужна? Можно попросту писать i++ в конце кода в фигурных скобках, если я все правильно понял?
@XpucT5 жыл бұрын
Можно и так сказать, однако не всегда это нужно делать именно так. Но строго говоря - да. Просто всё зависит от ситуации.
@FalyonkiGuy5 жыл бұрын
можно и первую часть не писать, и вторую тоже... зависит только от твоих потребностей
@mlgretard55963 жыл бұрын
Привет, XpucT, можно ли как-нибудь оптимизировать это? Избавится от костыля в виде постоянной переменной X. И debug ругается Text = "" - System.InvalidOperationException: "Недопустимая операция в нескольких потоках: попытка доступа к элементу управления 'Form1' не из того потока, в котором он был создан." public partial class Form1 : Form { readonly int X = 1; public Form1() { InitializeComponent(); } async void Form1_Load(object sender, EventArgs e) { for (Opacity = 0; Opacity { while (X == 1) { int time = DateTime.Now.Hour; if (time < 6) { Text = "Иди спать, заебал"; } else if (time < 12) { Text = "Доброе утро"; } else if (time < 18) { Text = "Добрый день"; } else { Text = "Добрый вечер"; } } }); }
@XpucT3 жыл бұрын
Привет 🖐 После прохождения 20 основных уроков идут 20 дополнительных, в которых Я как раз объясняю, что контролы нельзя просто так в других потоках менять, если это Debug. Объяснение очень понятное и подробное. ОЧЕНЬ не советую смотреть это видео раньше времени. Просто помни, что Твой код написан правильно 👍 Но в Debug Ты пока не можешь его смотреть. Пока просто забей и не ищи причину. Сейчас не нужно. Нужно набрать другие знания. Это важно.
@mlgretard55963 жыл бұрын
@@XpucT Спасибо
@kovtannn3 жыл бұрын
Забыл сказать, что переменная i может быть использована только внутри цикла, если инициализировать её в скобках.
@XpucT3 жыл бұрын
Вообще-то не забыл. Всё это уже было и уроки нужно смотреть последовательно. Вопрос с фигурными скобками был рассмотрен ранее.
@gorVerbinsky4 жыл бұрын
Не совсем понятно почему так медленно в конце видео выводятся цифры, задержка 1 мс это 0,001 секунды. Получается, за одну секунду счетчик должен на 1000 увеличиться, а так не просиходит.
@XpucT4 жыл бұрын
Это уже вопрос к интерфейсу. Может сложиться мнение, что cmd или dism долго отвечают, но это лишь оболочка. Сам объект быстр и быстро отвечает. Также форма. Отрисовка - это не показатель.
@NewbieTM_3 жыл бұрын
Можно ли сделать задержку менее чем в 1 миллисекунду?
@XpucT3 жыл бұрын
Нет
@knutovleonid824 жыл бұрын
Аналогично в Бейсик for next
@grabson82325 жыл бұрын
Привет, Хачатур, нужна помощь!! Я пишу калькулятор и чтобы весь код не писать пишу только проблемную часть. Допустим есть label1 и его Text "3+2", я хотел обхитрить ситуацию и сразу это конвертировать в Int32, а потом обратно в string и вывести юзеру ответ но не тут то было, при анализе в Debug пишет "неверный формат данных" подскажи как это правильно конвертировать или попробовать запихнуть в переменные заранее СПАСИБО.
@XpucT5 жыл бұрын
Привет 🖐 Если из цифр в текст, то число.ToString(); Если из текста в число, то Convert.ToInt32(текст);
@FalyonkiGuy5 жыл бұрын
если ты сразу выражение "3+2" пытаешься обработать, то не выйдет: надо числа извлечь из строки, а для этого, наверное, подойдёт Split()
@goldenkingmidas3825 жыл бұрын
У тебя соседей зовут Вася и Люда)?
@XpucT5 жыл бұрын
Если бы.
@AleksPanable Жыл бұрын
дробные округлять нужно и тогда будет ровно всё
@xGazpromx5 жыл бұрын
Может при != он просто пропускает 95 и догоняет до 100 (я не кодер, только скачал - тыкаюсь)
@oldschool24454 жыл бұрын
Из-за этого артефакта в наносекунды условие Opacity = 95 никогда не выполнится, а соответственно будет всегда Opacity != 95 и цикл не остановится.
@Chrescoe15 жыл бұрын
Задержка соответственно как видно не в 1 милисекунду а приблизительно 1/60 секунды, с чем это связано и как это исправить?
@XpucT5 жыл бұрын
Всё зависит от процессора.
@vygram4 жыл бұрын
for (int i = 0; i < 5; i++) { label1.Text += " " + i; } Тоже самое: int i = 0; for (;i < 5;) { label1.Text += " "+i; i++; } так и так работает
@omoloni4 жыл бұрын
int i=0;while(i
@omoloni4 жыл бұрын
про такую "конвертацию" не знал
@JINERAL4 жыл бұрын
Мне непонятно почему опасити пишется просто опасити а не опасити.ОсновнаяФорма например, неужели больше нету ни у чего прозрачности в ВиндовсФорм? У других кнопок например.
@XpucT4 жыл бұрын
Так точно.
@НикитаСиницын-щ6э5 жыл бұрын
Привет, у меня проблема. Помоги, если можешь Я хотел сделать плавное закрытие программы написал код: for (Opacity = 1; Opacity > 0; Opacity -= .02) { await Task.Delay(15); } Но после вычитание, когда уже не 1, а 0.98, происходит так Он вновь доходит до вычитание и Opacity вновь 1 и так до бесконечности
Ну не только у метанита нет этой запятой , в цикле for , но и не в одном Ютуб ролике . Честно говоря сомнительная полезность, а точнее даже вообще нужность этой запятой