ym104432846
Вставьте ссылку на видео из Youtube, Rutube, VK видео
Задайте вопрос по видео
Что вас интересует?
00:02:02
Проблема конвертации типов данных:
  • При получении данных из консоли тип данных является строкой.
  • Конкатенация строк вместо арифметического сложения.
00:04:20
Класс Convert для конвертации:
  • Метод ToInt32 используется для преобразования строки в целое число.
  • Пример использования метода ToInt32.
00:07:08
Программа сложения двух чисел:
  • Запрос первого числа у пользователя.
  • Сохранение числа в переменную типа int.
  • Запрос второго числа и его сохранение.
  • Сложение двух целых чисел и вывод суммы.
00:09:26
Отладка программы:
  • Использование точек останова для проверки состояния программы.
  • Просмотр значений переменных в процессе выполнения.
00:12:45
Конвертация дробных чисел:
  • Методы класса Convert для дробных чисел.
  • Различия в региональных настройках операционных систем.
  • Необходимость указания правильного разделителя дробной части.
00:15:17
Использование NumberFormatInfo:
  • Подключение пространства имён System.Globalization.
  • Создание экземпляра класса NumberFormatInfo.
  • Указание нужного разделителя дробной части.
0: Приветствую вас, друзья. Меня зовут Сергей. Мы с вами продолжаем изучать программирование на примере языка сишарп. В прошлом уроке. Мы с вами выяснили, каким способом мы можем получить с вами данные путём консольного ввода. И, собственно, тогда же мы выясни,
1: Что сделать мы это можем лишь в формате строки. То есть тип данных, который мы получим при считывании информации с консоли, будет строка. Собственно, сегодня мы и разберёмся, каким образом мы можем конвертировать эту самую строку в другие типы.
2: Данных, чтобы у нас была возможность выполнять над этими данными, которые мы ввели из консоли, какие-либо другие операции, характерные не для строки. Немножечко позже я покажу на примере, что я имею ввиду. Кстати говоря, сделать мы это можем
3: Разными способами. Поэтому эту тему мы разобьём на несколько уроков, чтобы это все было более систематизировано в нашем плейлисте. И вам было проще найти нужную информацию по конкретному способу. Кроме того, когда мы будем говорить о конвертации помимо каких-то базовых
4: Вещей. Мы зайдём немножечко дальше. Это означает, что, возможно, некоторые вещи, о которых я буду говорить, будут непонятны для тех, кто совсем новичок. Тем не менее я решил оставить более сложные моменты в конвертации именно в начале
5: Уроках, потому что не считают, что эти темы следует разделять таким образом. Если вы только начинаете свой путь в программировании, вы впоследствии сможете вернуться сюда и посмотреть эту информацию снова и, скажем так, осознать эту более сложную часть. Если же вы уже не
6: Совсем новичок, то это видео будет для вас гораздо более полезным. И тем не менее термин более сложный. Возможно, здесь не совсем корректный. И это будет относиться только к тем людям, которые только совсем, совсем новички в программировании. Также важно понимать и не путать то, что
7: Конвертация строки в какой-то тип данных и конвертация 1 типа данных в другой. Это не тоже самое, что и приведение типов, приведение типов мы будем рассматривать подробно в отдельном уроке. Не забудьте поддержать это видео Лайком, если вам интере
8: Курсе шарп. И вы хотите, чтобы уроки выходили дальше? Ну и теперь, собственно, к нашей проблеме. Почему это вообще, в принципе, проблема. Давайте сэмулируем ситуацию, когда мы получаем какие-либо данные из консоли.
9: Допустим, мы 2 раза ввели в консоль, 2 числа, сохранили их 2 переменные. Далее мы это сделаем именно через консоль. Сейчас же просто для простоты решения создадим 2 строки и теперь попытаемся сложить эти данные с помощью оператора. Плюс
10: Подробно все математические операции мы, конечно же, будем рассматривать. Далее. Сейчас же нам потребуется оператор плюс для конкретного наглядного примера. Итак, как видите, у нас в строке 1 число 5, в строке 2 число 2. Если бы
11: Это были числа, то есть тип данных int, то при сложении этих 2 чисел мы бы получили 7, при сложении g2 строк у нас выполняется не операция сложения, а конкатенация строк таким образом вроде как оператор 1.
12: Тот же, то есть плюс, но здесь мы получаем 52. Это не сумма чисел, это просто объединение 2 строк. В 1 строке у нас число 5, во 2 строке у нас число 2. Поэтому, сложив 2 эти строки, мы получили 52. А что мы
13: Хотели. На самом деле, на самом деле мы хотели сложить 2 числа, которые лежат в 2 переменных, пускай это будет переменная a b, и хотели получить результат 7 так вот, если у нас в качестве типа данных будут выступать строки,
14: И мы их не конвертируем в какой-то другой тип данных, который предполагается для нашей операции, то и операции у нас будут выполняться такие, какие подразумеваются для строк. В данном случае, если мы сложим 2 строки, мы выполним конкатенацию.
15: Просто их объединим, а не сложим число 5 и 2. Соответственно, в таком случае нам логично конвертировать данные из нашей строки в тип данных, который нам требуется. Давайте выполним простейший пример. Вот в нашей строке сейчас
16: Число 5 хотя у нас строки и число 5 мы уже с вами знаем что это просто напросто символ 5, а не число, не тип данных int, над которым мы можем выполнять к примеру операции сложения как мы можем конвертировать эти данные, сегодня мы рассмотрим способ.
17: С помощью класса конверт класс convert выглядит следующим образом и имеет множество различных вариантов своей работы, то есть методов, которые могут что-либо делать и посмотреть все их мы можем, просто поставив после названия.
18: Класса конверт точку основной задачей этого класса, как понятно из названия, конвертировать что-то в что-то он может конвертировать не только строки, а и 1 тип данных, другой, но нас прежде всего интересует этот класс.
19: С точки зрения конвертации строк какой в данном случае метод нам подойдёт, нам подойдёт метод to int 32, почему именно int 32. Обратите внимание когда я пишу имя метода to int 32 и навожусь на него курсором мыши.
20: Среда разработки нам подсказывает, что результатом работы этой функции будет тип данных int, но метод называется to int 32. Если же мы к примеру выберем метод to int 16, то типом возвращаемого значения у нас будет шорт.
21: Если вы помните урок о типах данных, то вы поймёте почему именно так. Int 16 и short это 1 и тоже, а инт 32 это тоже самое что обычный int если вы не понимаете разницу, то просто посмотрите этот урок о типах данных, нужную ссылку я.
22: Оставлю внизу в описании. Так вот, в этот метод мы должны передать нашу строку, то есть ту переменную, в которую мы считали данные, которая хранит строку с нашим числом. Таким образом помещаем эту переменную. В данном случае она у нас
23: Называется стр в круглые скобки и ставим в конце точку с запятой таким образом вот эта вот строка с числом 5 будет конвертирована именно в число с типом данных int и соответственно нам результат операции вот этого метода у класса.
24: Нужно куда-то сохранить, поэтому давайте создадим переменную типа и назовём её a и присвоим ей результат выполнения вот этой вот операции конвертации. Мы сейчас даже не будем ничего выводить на консоль, а просто поработаем с отладчиком и посмотрим.
25: Что у нас здесь будет? Я поставлю точку Останова специально вот на 16 строчке кода, там, где у нас будет выполнено преобразование нашей строки с пятёркой в ind. Давайте посмотрим что у нас сейчас находится в строке, здесь у нас находится число
26: 5 и после того, как на 16 строчке кода выполнится операция конвертации в инт 32 нашей строки, в переменную a у нас тоже будет помещено число 5 собственно, это и будет конвертация строки.
27: Число сейчас у нас отладчик показывает, что там 0, но после выполнения операции на 16 строчке кода там будет 5. Таким образом, в переменную a мы получили число 5, над которым мы можем выполнять уже.
28: Операции, которые характерны именно для этого типа данных для Инта. Таким образом, мы уже сможем производить, к примеру, тоже самое сложение. Теперь рассмотрим более реальный пример на простенькой программке, которая складывает 2 числа, которые мы
29: Вводим в консоль. Давайте посмотрим сначала работу этой программы, а затем посмотрим по коду, как она работает. Программка запрашивает у нас 2 числа сначала 1 число. Пускай это будет пятёрка, потом 2 число. Пускай это будет девятка и выводит их сумму, собственно.
30: Давайте рассмотрим, как мы это сделали. У нас объявлена переменная типа string стр, в которой мы будем считывать данные с консоли. После запроса у нас объявлена переменная, a переменная b. Собственно, это те переменные, в которые мы будем конвертировать данные.
31: После получения их в строку из консоль. И теперь давайте пошагово посмотрим, что у нас здесь происходит. Сначала мы выводим в консоль сообщение, введите число 1. Далее с помощью метода редлайн класса console считываем то число, которое мы вводим в консоль, в стро.
32: Стр. И конвертируем эту строку с помощью класса конверт и method to en 32. И результат помещаем в переменную. A далее мы выполняем эту операцию ещё раз, но теперь уже для 2 числа вводим сообщение. Введите 2 число, сохраняем это.
33: Число опять-таки в нашу переменную стр. Перезаписываем её и далее конвертируем данные с нашей переменной стр. Уже в переменную b. Далее мы складываем переменную a и b, который у нас уже типа int это
34: Значит, что если мы их сложим, то это будет сумма чисел, а не конконтинация строк и эту сумму мы присваиваем в переменную result, которая у нас тоже типа int и далее на 32 строчке кода выводим сообщение, сумма чисел равна и добавляем туда наши
35: Переменную реза, обратите внимание на то, что здесь мы, по сути, складываем строку с числом. Если у нас что-либо складывается со строкой, то это все будет конвертировано в строку и сконкатенировать им образом.
36: Если мы прибавляем число к строке, то число опять конвертируется в строку и конкатенируется с другой строкой, к которой мы прибавляем это самое число. Собственно, вот такой вот наглядный пример того, каким образом мы можем использовать класс.
37: Патроны канала с доступом к исходному коду и выше смогут скачать этот код на патрионе для того, чтобы новичкам было более понятно, как работает эта программа. Мы сейчас пройдёмся по ней отладчикам и посмотрим, какое состояние данных, на какой момент времени
38: Будет. И вообще, что здесь будет происходить внутри этой программы? Как это все выполняется? Поставим точку основного на 18 строчке кода там, где у нас выполняется 1 запрос на ввод числа и запустим эту программу на выполнение. Итак, у нас
39: Открылось окно нашей консоли. Сейчас мы поставили точку Останова. Ещё до вывода запроса. Введите число 1. Если мы сделаем шаг, то у нас этот запрос выведется на 20 строчке кода. У нас считывание данных из
40: Консоли, сделаем ещё шаг. У нас программа запрашивает ввод с консоли. Как только мы введём сюда какое-то число и нажмём enter, выполнение в отладчике продолжается. Заметьте, что в переменной стр. У нас сейчас пятёрка, и эта пятёрка.
41: В виде строки. Вот даже 2 кавычки нам это подсказывает, что это строка на 22 строчке кода сейчас выполнится конвертация пятёрки нашей строки в число, и мы конвертируем
42: Строковую пятёрку в интовую пятёрку мы это сделали теперь в переменной, a вот здесь у нас находится пятёрка далее у нас на консоль выводится следующий запрос введите число 2, сейчас его здесь ещё нету, но мы сделали шаг в нашей программе, и он появился.
43: Опять ожидаем ввод в консоль. Давайте введём какое-то число. Пускай это будет 4. Нажимаем enter нашу переменную. Стр. Считались данные с консоли, которые мы снова ввели. И сейчас 28 строчке кода четвёрка из нашей
44: Переменная стр. Конвертируется в интовое число и вместо нуля здесь будет четвёрка. Выполняем далее на 30 строчке кода данные, которые у нас находятся в переменной.
45: Эй, би, вот они вот, a вот би будут сохранены в переменную result, точнее сложены и сохранены в переменную result, делаем шаг нашей переменной. Result, число 9 и на 3.
46: 2 строчки кода мы выводим сообщение сумма чисел в которое дописываем данные нашего результата все это дело конвертируется в строку и выводится с помощью метода write line в консоль обратите внимание, сейчас ещё этого здесь нету.
47: Но как только мы сделаем шаг, сумма чисел 9 вывелась в консоль. Собственно, вот таким вот образом наша программа отрабатывает в отладчике. Мы рассмотрели простейший пример. Каким образом мы можем работать с классом конверт и примите во внимание.
48: Что работать с ним таким образом вам придётся не только при работе с консолью, а и во многих других случаях, будь то окна или вообще веб интерфейс это неважно. То есть это очень часто встречающаяся задача, помимо того, что класс convert может
49: Выполнять конвертацию в целые числа он, понятное дело, может выполнять конвертацию в дробные числа и вообще в булиан, то есть true или false собственно, то, во что конвертировать зависит только от ваших.
50: Принцип работы тот же самый, только нужно выбирать нужный метод. Ну то есть списка вот, вот этих названий, что, во что мы хотим конвертировать. Давайте сейчас попробуем конвертировать строку в дробное число туда, бл, сначала нам потребуется
51: Такая строка. Не будем сейчас организовывать консольный ввод. Там принцип такой же самый, а сконцентрируемся именно на процессе конвертации. Итак, давайте сюда введём какое-то дробное число, пусть это будет 1 и 9.
52: И вот эту вот строку с числом 1 и 9 мы передадим в конверт тудаб и сохраним это в переменную. A разница лишь в том, что сейчас у нас переменная string не целое число, а дробное. Тем не менее метод тудал.
53: Класса convert может конвертировать дробные числа таким образом, мы можем и дробное число в строке конвертировать в тип данных double, ну и над этим типом уже выполнять операции, которые характерны для этого типа подробнее.
54: Математических операциях. Мы будем говорить в следующих уроках. Сегодня только для примера посмотрели сложение. Далее у нас пойдёт более сложный материал, который людям, которые совсем новички в программировании может быть тяжело понять. Тем не менее, как я уже говорил, я не хочу отделять его от этого урока.
55: И расскажу его здесь после того, как мы в нашем курсе рассмотрим нужные темы, вы сможете вернуться сюда и освежить свои знания. И конкретно. В этом случае нам понадобятся основы ооп, но совсем немножечко. И в чем, собственно, сложности, и почему могут возникнуть проблемы. Дело в том, что в разных регио
56: Нальных настройках операционной системы. Дробные числа, к примеру, и даты могут работать по разному. В данном случае мы с вами, когда описывали дробное число строкой, мы указали в качестве разделителя запятую, но что будет?
57: Если мы укажем точку ну или вот так сделаем да ну давайте пока точку укажем и передадим вот такую строку нашему методу, который должен конвертировать нашу строку стр. В double мы получим ошибку и проблема заклю.
58: Заключается в том, что вот этот метод не смог конвертировать наше дробное число в строке в формат дабл и причиной тому послужила именно наша точка вместо запятой. И дело в том, что если вы будете получать какие-то, да,
59: Не вводя их самостоятельно из каких-то сторонних источников, то все будет зависеть от того, какие региональные настройки будет использовать та операционная система, где хранились эти данные и, собственно, в каком формате они хранились, с какими региональными настройками, что мы
60: В таком случае можем сделать нам нужно подключить пространство имён system globalization в этом пространстве имён есть class numbers, формат инфо нам нужно создать экземпляр объекта этого класса.
61: Опять-таки, я сейчас не останавливаюсь на некоторых моментах, которые сейчас происходят. Поэтому и говорил, что для Новичков это может быть немного сложно. Тем не менее, я считаю нужным оставить эту информацию здесь, собственно,
62: Создаём экземпляр класса number формат инфо и нас интересует поле number децимал separate, он носит строковую форму и собственно здесь мы должны указать какой разделитель дробной.
63: В числах мы используем. Если мы используем точку, мы должны здесь указать точку. Таким образом, даже вот в таком формате, когда мы будем использовать этот конверт под нашей строкой, конвертация выполнится успешно и собственно экземпляр вот этого класса нам
64: Формат инфа нам нужно передать 2 параметром в метод то double, который конвертирует нашу строку в переменную double давайте посмотрим, что произойдёт теперь обратите внимание все та же точка, не запятая в прошлый раз у нас здесь была ошибка.
65: Сейчас же мы передаём дополнительный параметр в виде объекта типа numbers формат инфо, в котором мы указали какого типа разделитель в Дробных числах мы будем использовать и благодаря этому конвертация у нас проходит успешно на самом.
66: Деле, вы можете никогда и не столкнуться с такой проблемой. Это будет зависеть от специфики вашей работы. Но в любом случае знать о том, что такая проблема возможна, вам необходимо. Таким образом, мы с вами рассмотрели 1 из примеров, каким образом
67: Мы можем конвертировать строку с помощью класса конверт в другие типы данных и в дальнейшем уже над этими типами данных выполнять какие-либо операции. Нам это понадобится. Для дальнейших наших домашних заданий. Функционал класса конверт не ограничивается лишь
68: Конвертация строк, но тем не менее, в моей практике это наиболее частое использование этого класса. В следующем уроке мы рассмотрим другой способ, каким образом мы можем конвертировать данные строки в нужный нам тип данных и также некие дополнительные возможности.
69: Какие у нас будут присутствовать в связи с этим. А на этом у меня пока все. Если вам урок понравился, он был для вас полезным, интересным, то не забудьте поставить лайк под этим видео. Также буду рад, если вы поделитесь этим уроком со своими друзьями, которые изучают программирование. Ну и конечно же, если у вас есть жела,
70: Поддержать меня и канал финансово.