Уроки C# - цикл for - Урок 16

  Рет қаралды 14,682

XpucT

XpucT

Күн бұрын

Пікірлер: 83
@iamdozerq
@iamdozerq 5 жыл бұрын
Пригодилось!!! Кароче не работает точное сравнение на дробных числах по естественной причине - точно посчитать число с плавающей точкой с помощью целых чисел - крайне сложно. Этот флоат на самом деле с момента создания нифига не 0, а 0.0000000... и где то после 10 знака начинаются артефакты, которые мешают сравнивать значения потому что из-за них число... не может быть равно целому числу. Это железная фигня, а не программная. Ну и все таки если создать флоат нейм; то он будет таки равен чистому нулю. Но если создать 1 или к тому нулю чета прибавить - сразу появляется артефакт. И кстати по началу этот артефакт не видно хз почему, вот это интересно. Он там есть с самого первого тика. На этом артефакте, кстати, однажды дико проебались военные. У них была какая то установка для сбивания ракет и она просто почему то в один момент перестала сбивать ракеты - вроде как начинала палить сильно спереди и нифига не попадала. Нашли, хз как, в чем была проблема. Внутренний счетчик времени прибавлял типа по 1 секунде, но эта секунда была не настоящей, а флоат, то есть у неё где то далеко за ней был артефакт в виде рандомных чисел и в итоге секнду была на миллионную больше настоящей. Происходил неправильный расчет траектории и установка мазала. А все дело было в том, что она без перезагрузки стояла несколько месяцев, поэтому ложная секунда накапала очень существенно. 100% случай можно найти в википедии, но я не могу вспомнить как.
@XpucT
@XpucT 5 жыл бұрын
Закрепил 👍
@omoloni
@omoloni 4 жыл бұрын
округлять до целых и использовать decimal
@sabiradil
@sabiradil 4 жыл бұрын
это были ракеты Пэтриот, на канале JavaRush где-то на третьем уроке объясняется
@ersafap
@ersafap 4 жыл бұрын
Тут еще такое дело. Не знаю как в шарпе а в СИ то, что записано в коде в виде литерала для чисел с плавающей запятой нифига не равно строго тому что лежит в памяти. Пишем float F = 5.0; а в памяти на самом деле висит что-то типа 4.99999999993. Компилятор подставляет туда константу, наиболее близкую той, которую хотел юзер. Кроме того, точность динамически зависит от фактической величины. Утрировано и очень грубо говоря, число 23432432749.00001 может иметь значимую дробную часть 5 разрядов а 2.347587349573498 намного больше.
@alexs8579
@alexs8579 3 жыл бұрын
да, эта ошибка заложена в архитектуре проца, при создании пакетов типа матлаб и при прочих продуктах, когда не было изображений поверхностей проектируемых конструкций, а на экран выводилась матрица еЁ описывающая это учитывали в 80-х, еще до создания джавы. а военные погорели больше на секретности и на квалификации кадров.
@sirakeks
@sirakeks 5 жыл бұрын
5.30 утра, а Хачатур не спит, уроки херачит. Малаца! Спасибо.
@serpotapov
@serpotapov 4 жыл бұрын
Итерировали, итерировали, итерировали, да не выитерировали... =) Спасибо за уроки!
@ПавелЮров-з9ж
@ПавелЮров-з9ж Жыл бұрын
нигде не встречал такой пример с for.....Моё почтение =)
@aleksadrfedotov8084
@aleksadrfedotov8084 Жыл бұрын
Класс видео, закрепляю по твоим урокам материал прочитанный ранее из книг!!!
@alexandrsol284
@alexandrsol284 4 жыл бұрын
итерация - повторное применение какой-либо математической операции. можно так же обозвать, как последовательное "приращение" к какому-нибудь элементу одинакового значения, после выполнения инструкций(набора инструкций). или еще проще его называют "шаг цикла"
@ГеоргийЧупин-в1е
@ГеоргийЧупин-в1е 4 жыл бұрын
Спасибо тебе за уроки! За пару дней смог написать полезную для себя прогу с нормальным интерфейсом)
@xasthul2355
@xasthul2355 5 жыл бұрын
Очень полезные и интересные видео уроки. Спасибо!
@gunman156
@gunman156 Жыл бұрын
Огромное спасибо за ваш труд! По запросам на ютубе, вроде выдает много разных уроков, но они или на английском или на индуском, вы как оазис среди пустыни.
@thecloufer
@thecloufer Жыл бұрын
Совершенно метко подмечено! 😇
@grimmiir671
@grimmiir671 7 ай бұрын
2024 Учу C# по твоим урокам для вката в геймдев. Спасибо за курс)
@Slonick
@Slonick 5 жыл бұрын
На счёт почему for, а не while в типичных задачах выполнения N раз одной и той же задачи. For на уровне интерпретатора и процессора проще предугадать и оптимизировать, в отличии от того же while.
@PhAnToM-bn1es
@PhAnToM-bn1es 5 жыл бұрын
Добрый день! Погрешность в операциях с плавающей точкой объясняется работой с этими числами на уровне процессора, т.е. на уровне архитектуры самого процессора. Погрешность будет абсолютно на любом языке программирования. Чтобы избежать таких ситуаций, можно использовать функции округления.
@ТимофейБелый-ы8ч
@ТимофейБелый-ы8ч 4 жыл бұрын
Спасибо за урок!
@ОльгаКононова-м3ч
@ОльгаКононова-м3ч 9 ай бұрын
В одной из книг о программировании части условия цикла for называют так: (инициализатор; условие цикла; итератор){тело цикла}
@АлександрРюмин-п5ы
@АлександрРюмин-п5ы 2 жыл бұрын
В Python при итерации есть очень похожие настройки, называются start-stop-step
@ЗахарПанасенко-ю8ж
@ЗахарПанасенко-ю8ж 4 жыл бұрын
Третье значение в скобках for напоминает мне некий корректировщик, после применения которого, цикл проверяет условие i
@ЕвгенийЛитвин-н3ш
@ЕвгенийЛитвин-н3ш 4 жыл бұрын
Спасибо, классные уроки, жаль что раньше по поиску не находил.
@Kozeniuk
@Kozeniuk 5 жыл бұрын
Хачатур доброго времени суток. Извините. А не будет ли видео типа:"О вкусах спорят". Очень концептуально. И прекрасно информативно.
@XpucT
@XpucT 5 жыл бұрын
С высокой вероятностью будет. Набралось на самом деле много тем. У Меня также есть основной канал: kzbin.info
@Slonick
@Slonick 5 жыл бұрын
Фантомные дробные части это нормально, все с этим смирились. Когда-то натыкался на объяснение этой вещи, но не помню ответа. Если найду то самое видео, то поделюсь. Оно из канала DotNext. Там много интересных, специфичных видео, уверен, найдешь там что-то полезное.
@ВладимирВладимирович-ю6х
@ВладимирВладимирович-ю6х 4 жыл бұрын
Спасибо
@kostya1306
@kostya1306 2 жыл бұрын
Казлось бы, что нового я могу узнать про цикл for? Могу, оказывается.
@bxshlyator
@bxshlyator 4 жыл бұрын
XpucT, так вот кто делал репаки на торренте
@СтаниславМожейко-п9н
@СтаниславМожейко-п9н Жыл бұрын
1) Почему при < останавливается на 94, а при
@КапляРосы-ш6э
@КапляРосы-ш6э 4 жыл бұрын
спасибо)
@unclesam1614
@unclesam1614 4 жыл бұрын
Досмотрел до 20:50, и предполагаю что цикл не работает так как: Нужно писать >= или
@MariyaKornilova
@MariyaKornilova 2 жыл бұрын
Спасибо. Я рада, что нашла твои уроки.Университетская образовательная программа и рядом не стояла. Но кое-что все равно не могу уразуметь. Как, например, узнать какие методы есть в ЯП для реализации необходимой задачи и есть ли они или необходимы дополнительные библиотеки? Например, как бы я без тебя узнала, что надо Opacity
@XpucT
@XpucT 2 жыл бұрын
Многие вещи приходят, как и говорил в Уроке 0, из Google =) Опыт, время, практика.
@DeLLnuSS
@DeLLnuSS Ай бұрын
Есть смысл идти в уник или лучше самоучкой быть?
@YariikR
@YariikR 5 жыл бұрын
Доброго времени суток Хачатур, огромное спасибо за уроки! С появлением окна очень красиво выходит, хочется что то такое сделать для label или panel внутри программы, но я не могу найти параметр Opacity для них, это можно как то реализовать? Делал черед visible появления и исчезновение того же текста, но выходит как то топорно, а хочется какой то плавности.
@XpucT
@XpucT 5 жыл бұрын
Добрый день 🖐 Очень хороший вопрос. Об этом чуть позже. На Windows Forms менять Opacity можно только у формы и нельзя у контролов. А на WPF можно. Но для нас - это не преграда и скоро покажу, как Я обошёл систему 🤟🏻 и делаю это для себя.
@YariikR
@YariikR 5 жыл бұрын
@@XpucT, спасибо за ответ! Буду ждать видео по дизайну, прям очень интересует эта тема, потому что хотелось добавить тень под панель, а идей нет, даже те видео, что на ютюбе у них все плоское и они просто набрасывают панели. И вообще интересно, насколько хороший дизайн можно реализовать на вин формс. Тот же фотошоп, можно ли такой дизайн повторить на формс или уже нужен впф. Уверен, что видео будет интересное, жду!:)
@user-wu-tang
@user-wu-tang Жыл бұрын
Привет ув.Хачатур for (условие ; вопрос; решение) - это самое понятное наверно
@Айдар102-з1э
@Айдар102-з1э 2 жыл бұрын
for (начальное значение параметра, условие прекращения цикла, модификатор параметра)
@ZaharS2000
@ZaharS2000 3 жыл бұрын
Сейчас напишем что бы кнопка бегала по всему экрану и программа исчезала и возвращалась и загрузка грузилась то вперед то назад :)
@infinitynoir5441
@infinitynoir5441 5 жыл бұрын
Хачатур, привет! Спасибо большое тебе за уроки! Подскажи пожалуйста, для бинда твоей паузы ты используешь Snippet Designer из магазина VS или как там его, или что - то другое? Спасибо.
@XpucT
@XpucT 5 жыл бұрын
Привет 🖐 Я использую Punto Switcher =) Ещё до всяких emmet и прочих много лет уже юзаю и строю свои сокращалки. Must Have 👍
@infinitynoir5441
@infinitynoir5441 5 жыл бұрын
@@XpucT Ух ты! Удивлен! Спасибо большое. Пожалуй тоже воспользуюсь. Еще задам тебе интересующий вопрос, а то не знаю куда тебе точно писать. У тебя вот Win10 Tweaker использует левую часть интерфейса как меню(кнопки), а правая - это панели? По нажатию нужного пункта меню, он меняет свою панель на Visible true, а остальные скрывает? Или как это устроено. Мне просто нужно сейчас крайне похожее и я сижу думаю, как сделать правильно, чтобы потом не спотыкаться об свой же способ. Или может он панельку делает топ мост каким либо образом? Или это вообще не панели, а формы?)) После просмотра курса я более чем стал доверять твоему мнению, так что спасибо, если найдешь время на ответ :)
@XpucT
@XpucT 5 жыл бұрын
​@@infinitynoir5441 на самом деле Ты очень точно угадал => клик на LinkLabel скрывает другие панели и отображает ту, что нужно. Касаемо правильно - это не правильный подход. Можно и Location менять, то совсем правильно - это пилить на WPF. Однако в рамках обучения может получиться каша. Поэтому считаю, что сначала правильно делать неправильно, а так, как подсказала смекалка. А потом уже искать правильные пути. Почему Я допускаю такой парадокс - очень просто - некоторые костыли, до которых Я додумался работают намного эффективнее того, что уже было придумано. Так и сделан Win 10 Tweaker. Тысячи функций и методов, но работает быстрее других и весит мало. И всё потому что у Меня свои велосипеды и свои функции.
@infinitynoir5441
@infinitynoir5441 5 жыл бұрын
@@XpucT Спасибо огромное, Хачатур, крайне благодарен. С меня лайки и просмотры =))
@ВладПідгайний-х8э
@ВладПідгайний-х8э 5 жыл бұрын
То есть, грубо говоря, третья часть в скобках цикла фор не особо то и нужна? Можно попросту писать i++ в конце кода в фигурных скобках, если я все правильно понял?
@XpucT
@XpucT 5 жыл бұрын
Можно и так сказать, однако не всегда это нужно делать именно так. Но строго говоря - да. Просто всё зависит от ситуации.
@FalyonkiGuy
@FalyonkiGuy 5 жыл бұрын
можно и первую часть не писать, и вторую тоже... зависит только от твоих потребностей
@mlgretard5596
@mlgretard5596 3 жыл бұрын
Привет, 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 = "Добрый вечер"; } } }); }
@XpucT
@XpucT 3 жыл бұрын
Привет 🖐 После прохождения 20 основных уроков идут 20 дополнительных, в которых Я как раз объясняю, что контролы нельзя просто так в других потоках менять, если это Debug. Объяснение очень понятное и подробное. ОЧЕНЬ не советую смотреть это видео раньше времени. Просто помни, что Твой код написан правильно 👍 Но в Debug Ты пока не можешь его смотреть. Пока просто забей и не ищи причину. Сейчас не нужно. Нужно набрать другие знания. Это важно.
@mlgretard5596
@mlgretard5596 3 жыл бұрын
@@XpucT Спасибо
@kovtannn
@kovtannn 3 жыл бұрын
Забыл сказать, что переменная i может быть использована только внутри цикла, если инициализировать её в скобках.
@XpucT
@XpucT 3 жыл бұрын
Вообще-то не забыл. Всё это уже было и уроки нужно смотреть последовательно. Вопрос с фигурными скобками был рассмотрен ранее.
@gorVerbinsky
@gorVerbinsky 4 жыл бұрын
Не совсем понятно почему так медленно в конце видео выводятся цифры, задержка 1 мс это 0,001 секунды. Получается, за одну секунду счетчик должен на 1000 увеличиться, а так не просиходит.
@XpucT
@XpucT 4 жыл бұрын
Это уже вопрос к интерфейсу. Может сложиться мнение, что cmd или dism долго отвечают, но это лишь оболочка. Сам объект быстр и быстро отвечает. Также форма. Отрисовка - это не показатель.
@NewbieTM_
@NewbieTM_ 3 жыл бұрын
Можно ли сделать задержку менее чем в 1 миллисекунду?
@XpucT
@XpucT 3 жыл бұрын
Нет
@knutovleonid82
@knutovleonid82 4 жыл бұрын
Аналогично в Бейсик for next
@grabson8232
@grabson8232 5 жыл бұрын
Привет, Хачатур, нужна помощь!! Я пишу калькулятор и чтобы весь код не писать пишу только проблемную часть. Допустим есть label1 и его Text "3+2", я хотел обхитрить ситуацию и сразу это конвертировать в Int32, а потом обратно в string и вывести юзеру ответ но не тут то было, при анализе в Debug пишет "неверный формат данных" подскажи как это правильно конвертировать или попробовать запихнуть в переменные заранее СПАСИБО.
@XpucT
@XpucT 5 жыл бұрын
Привет 🖐 Если из цифр в текст, то число.ToString(); Если из текста в число, то Convert.ToInt32(текст);
@FalyonkiGuy
@FalyonkiGuy 5 жыл бұрын
если ты сразу выражение "3+2" пытаешься обработать, то не выйдет: надо числа извлечь из строки, а для этого, наверное, подойдёт Split()
@goldenkingmidas382
@goldenkingmidas382 5 жыл бұрын
У тебя соседей зовут Вася и Люда)?
@XpucT
@XpucT 5 жыл бұрын
Если бы.
@AleksPanable
@AleksPanable Жыл бұрын
дробные округлять нужно и тогда будет ровно всё
@xGazpromx
@xGazpromx 5 жыл бұрын
Может при != он просто пропускает 95 и догоняет до 100 (я не кодер, только скачал - тыкаюсь)
@oldschool2445
@oldschool2445 4 жыл бұрын
Из-за этого артефакта в наносекунды условие Opacity = 95 никогда не выполнится, а соответственно будет всегда Opacity != 95 и цикл не остановится.
@Chrescoe1
@Chrescoe1 5 жыл бұрын
Задержка соответственно как видно не в 1 милисекунду а приблизительно 1/60 секунды, с чем это связано и как это исправить?
@XpucT
@XpucT 5 жыл бұрын
Всё зависит от процессора.
@vygram
@vygram 4 жыл бұрын
for (int i = 0; i < 5; i++) { label1.Text += " " + i; } Тоже самое: int i = 0; for (;i < 5;) { label1.Text += " "+i; i++; } так и так работает
@omoloni
@omoloni 4 жыл бұрын
int i=0;while(i
@omoloni
@omoloni 4 жыл бұрын
про такую "конвертацию" не знал
@JINERAL
@JINERAL 4 жыл бұрын
Мне непонятно почему опасити пишется просто опасити а не опасити.ОсновнаяФорма например, неужели больше нету ни у чего прозрачности в ВиндовсФорм? У других кнопок например.
@XpucT
@XpucT 4 жыл бұрын
Так точно.
@НикитаСиницын-щ6э
@НикитаСиницын-щ6э 5 жыл бұрын
Привет, у меня проблема. Помоги, если можешь Я хотел сделать плавное закрытие программы написал код: for (Opacity = 1; Opacity > 0; Opacity -= .02) { await Task.Delay(15); } Но после вычитание, когда уже не 1, а 0.98, происходит так Он вновь доходит до вычитание и Opacity вновь 1 и так до бесконечности
@XpucT
@XpucT 5 жыл бұрын
Привет. Моя формула: for (Opacity = .95; Opacity > .0; Opacity -= .15) await Task.Delay(7); Close();
@НикитаСиницын-щ6э
@НикитаСиницын-щ6э 5 жыл бұрын
@@XpucT Спасибо, сейчас все работает
@FlexICE
@FlexICE 5 жыл бұрын
for (Opacity = 0; Opacity
@АмэйзингЧенал
@АмэйзингЧенал 4 жыл бұрын
Ну не только у метанита нет этой запятой , в цикле for , но и не в одном Ютуб ролике . Честно говоря сомнительная полезность, а точнее даже вообще нужность этой запятой
Уроки C# - массивы, array - Урок 17
7:15
Уроки C# - цикл foreach - Урок 18
18:19
XpucT
Рет қаралды 21 М.
버블티로 부자 구별하는법4
00:11
진영민yeongmin
Рет қаралды 24 МЛН
This mother's baby is too unreliable.
00:13
FUNNY XIAOTING 666
Рет қаралды 42 МЛН
小丑家的感情危机!#小丑#天使#家庭
00:15
家庭搞笑日记
Рет қаралды 35 МЛН
Python VS С# | Согласен / Не согласен
14:27
Технологии в Контуре
Рет қаралды 50 М.
Асинхронное программирование на C# (блок 1)
1:01:53
Просто программист
Рет қаралды 8 М.
Теория Струн - БРЕД? Кризис в науке?
39:03
Космос Просто
Рет қаралды 11 М.
C# ЦИКЛ FOR | СИНТАКСИС, ПРИМЕРЫ, РАЗБОР 😱
7:36
Путь к Senior-у
Рет қаралды 2,1 М.
버블티로 부자 구별하는법4
00:11
진영민yeongmin
Рет қаралды 24 МЛН