Нажмите здесь, чтобы прочитать ЧАСТЬ ПЕРВУЮ

УРОК ВТОРОЙ

РАЗДЕЛ 1

Введение

Многие приложения, которые вы создадите на C#, потребуют от вас работы с данными. Иногда эти данные будут жестко запрограммированы в вашем приложении. Например, вам может понадобиться напечатать сообщение для пользователя, когда какая-то операция завершится успешно. Сообщение «успех», скорее всего, будет одним и тем же каждый раз при выполнении приложения.

Но чаще вы будете работать с неизвестными данными при создании приложения. Возможно, данные захвачены с помощью ввода с клавиатуры или получены из файла или из Интернета. Поэтому вам нужно будет создать структуры, называемые переменными, которые могут хранить данные в памяти во время работы вашего приложения.

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

На этом уроке вы создадите жестко закодированные литеральные значения, которые содержат разные типы данных. Вы создадите переменные, которые могут содержать определенные типы данных, присвоите этим переменным значение, а затем получите эти значения позже в коде. И, наконец, вы узнаете, как можно упростить код, позволив компилятору взять на себя часть работы. К концу этого урока вы сможете создавать литеральные значения, а также сохранять и извлекать данные в переменных.

Цели обучения

На этом уроке вы:

Создайте литеральные значения для пяти основных типов данных

Объявить и инициализировать переменные

Получить и установить значения в переменных

Разрешить компилятору определять тип данных для вашей переменной при инициализации

Предпосылки

Должен понимать основные правила синтаксиса C#, например, как использовать

Console.WriteLine()

МОДУЛЬ 2

Буквальные значения

Литеральное значение — это жестко запрограммированное значение, которое никогда не изменяется.

Упражнение. Распечатайте различные литеральные типы данных

В C# существует множество типов данных. Но по мере того, как вы начинаете, вам нужно знать только о пяти или шести типах данных, поскольку они охватывают большинство сценариев. Давайте отобразим буквальный экземпляр типа данных на панели вывода.

Примечание. — Когда вы начинаете работать с окном кода, вы можете заметить, что оно окрашивает определенный синтаксис в разные цвета, чтобы указать ключевые слова, операторы, типы данных и многое другое. Начните обращать внимание на цвета. Это может помочь вам обнаружить синтаксические ошибки при вводе символов и помочь вам лучше понять код.

Шаг 1.Запишите строковый литерал в консоль. Если нам нужны буквенно-цифровые слова, фразы или данные для представления, а не вычисления, мы используем строковый литерал, заключая слова в двойные кавычки.

Добавьте следующую строку кода в редакторе кода:

Console.WriteLine("Hello World!");

Если вы запустите код, вы получите следующий вывод.

Привет, мир!

Шаг 2. Запишите литерал char в консоль. Если бы нам нужно было вывести на экран только один буквенно-цифровой символ, мы могли бы создать литерал char, заключив один буквенно-цифровой символ в одинарные кавычки.

Добавьте следующую строку кода в редакторе кода:

Console.WriteLine('b');

Если вы введете следующий код:

Console.WriteLine('Hello World!');

Вы получите следующую ошибку:

(1,19): ошибка CS1012: Слишком много символов в символьном литерале Компилятор C# ожидал один символ (поскольку вы использовали синтаксис символьного литерала), но вместо этого вы предоставили 12 символов! Как и в случае со строковым типом данных, вы используете char всякий раз, когда у вас есть один буквенно-цифровой символ для представления (не вычисления).

Термин char является сокращением от символа. В C# и некоторых других языках программирования они официально называются «символами», но часто называются «символами».

Шаг 3. Запишите в консоль литерал типа int. Если вы хотите вывести целое числовое значение (без дробей) в вывод, вы можете использовать литерал типа int. Литерал int не требует дополнительных операторов, таких как char или string (подробнее о строке позже).

Термин int — это сокращение от integer, которое вы можете узнать, изучая математику. В C# они официально называются "int", но часто известны под своим альтер-эго "integer".

Добавьте следующую строку кода в редакторе кода:

Console.WriteLine(123);

Если вы запустите код, вы получите следующий вывод.

123

Шаг 4: запись десятичного литерала в консоль Если мы хотим напечатать число, включающее значения после запятой, мы можем использовать десятичный литерал. Чтобы создать десятичный литерал, добавьте букву m после числа. В этом контексте m называется буквальным суффиксом. Литеральный суффикс сообщает компилятору, что вы хотите работать со значением типа decimal.

Добавьте следующую строку кода в редакторе кода:

Console.WriteLine(12.30m);

Если вы запустите код, вы получите следующий вывод.

12.30

Без литерального суффикса m десятичное число в предыдущем примере будет рассматриваться компилятором как тип double, и вывод будет

12.3

Примечание. В качестве буквенного суффикса для десятичной дроби можно использовать букву m в нижнем регистре или букву M в верхнем регистре.

Шаг 5. Запишите в консоль литерал bool. Если мы хотим напечатать значение, представляющее либо true, либо false, мы можем использовать bool литерал.

Добавьте следующие строки кода в редакторе кода:

Console.WriteLine(true);
Console.WriteLine(false);

Это приведет к следующему результату:

Верно Ложно

Термин bool является сокращением от boolean, который вы также можете узнать, изучая математику. В C# и некоторых других языках программирования они официально называются «bool», но часто разработчики используют термин «boolean». Логические литералы представляют идею истины и лжи. Мы будем широко использовать логические значения, когда начнем добавлять логику принятия решений в наши приложения. Мы будем оценивать выражения, чтобы увидеть, является ли выражение истинным или ложным.

Зачем подчеркивать типы данных?

Типы данных играют центральную роль в C#. На самом деле упор на типы данных — одна из ключевых отличительных особенностей C# по сравнению с другими языками, такими как Python и JavaScript. Разработчики C# полагали, что они могут помочь разработчикам избежать распространенных программных ошибок, применяя типы данных. Вы увидите, как эта концепция раскрывается, когда вы больше узнаете о C#.

Представление по сравнению с расчетом и оценкой

Типы данных, такие как строки и символы, используются для «представления, а не вычисления». Если вам нужно выполнить математическую операцию над числовыми значениями, вы должны использовать int или decimal. Если у вас есть данные, которые используются только для презентаций или справочных целей, вы должны использовать строковый или символьный тип данных.

Предположим, вам нужно было получить данные от пользователя, такие как номер телефона или почтовый индекс. В зависимости от страны, в которой вы живете, эти данные могут состоять из числовых символов. Однако, поскольку вы редко выполняете математические вычисления с телефонными номерами и почтовыми индексами, при работе с ними следует предпочесть использовать строковый тип данных. То же самое можно сказать и о bool. Если вам нужно работать со словами «истина» и «ложь» в вашем приложении, вы должны использовать строку. Однако, если вам нужно работать с концепцией истинности или ложности при выполнении оценки, вы используете логическое значение. Это должно стать яснее, когда мы будем проводить оценки на других уроках.

Важно знать, что эти значения могут выглядеть как эквиваленты их строковых литералов. Другими словами, вы можете подумать, что эти утверждения одинаковы:

Console.WriteLine("123");
Console.WriteLine(123);
Console.WriteLine("true");
Console.WriteLine(true);

Тем не менее, это просто то, как они печатаются на экране. Дело в том, что действия, которые вы можете выполнять с базовыми типами int или bool, будут отличаться от их строкового эквивалента.

Подведение итогов

Главный вывод заключается в том, что существует много типов данных, но мы сосредоточимся пока только на нескольких: строках для слов, фраз или любых буквенно-цифровых данных для представления, а не вычисляемых char для одного буквенно-цифрового символа, int для целого числа, decimal для десятичного числа, bool для значения true/false.

Группа 3

Объявить переменные

Буквальное значение — это буквально жестко закодированное значение. Однако в большинстве приложений нам потребуется работать со значениями, о которых мы мало знаем заранее. Другими словами, нам нужно будет работать с данными, поступающими от пользователей, из файлов или из сети.

Когда нам нужно работать с данными вне нашего кода, мы объявляем переменную.

Что такое переменная?

Переменная — это элемент данных, который может изменить свое значение в течение своего существования. Вы используете переменные для временного хранения значений, которые вы собираетесь использовать позже в своем коде. Переменная — это дружественная метка, которую мы можем присвоить адресу памяти компьютера. Когда мы хотим временно сохранить значение в этом адресе памяти или всякий раз, когда мы хотим получить значение, которое хранится в адресе памяти, мы просто используем созданное нами имя переменной.

Объявление переменной

Чтобы создать новую переменную, вы должны сначала объявить тип данных переменной, а затем дать ей имя.

string firstName;

В этом случае мы создаем новую переменную строкового типа с именем firstName. Отныне эта переменная может содержать только строковые значения. Я могу выбрать любое имя, если оно соответствует нескольким правилам синтаксиса C# для именования переменных.

Правила и соглашения об именах переменных

Один разработчик программного обеспечения однажды сказал: «Самое сложное в разработке программного обеспечения — дать имена». Мало того, что имя переменной должно соответствовать определенным правилам синтаксиса, оно также должно использоваться для того, чтобы сделать код более информативным. человекочитаемый и понятный. Этого многого можно ожидать от одной строки кода!

Вот несколько важных соображений относительно имен переменных:

· Имена переменных могут содержать буквенно-цифровые символы и символ подчеркивания. Специальные символы, такие как символ решетки # (также известный как символ числа или символ фунта) или символ доллара $, не допускаются.

· Имена переменных должны начинаться с буквы алфавита или символа подчеркивания, а не с цифры. Разработчики используют подчеркивание для особой цели, поэтому постарайтесь пока не использовать его.

· Имена переменных не должны быть ключевыми словами C#. Например, нельзя использовать следующие объявления переменных: decimal decimal; или строка строка;.

· Имена переменных чувствительны к регистру, т.е.

string Value;

и

string value;

это две разные переменные.

· В именах переменных следует использовать верблюжий регистр, который представляет собой стиль письма, в котором используется строчная буква в начале первого слова и заглавная буква в начале каждого последующего слова.

Например,

string thisIsCamelCase;

· Имена переменных должны быть описательными и значимыми в вашем приложении. Выберите имя для вашей переменной, которое представляет тип данных, которые она будет содержать.

· Имена переменных должны состоять из одного или нескольких целых слов, соединенных вместе. Не используйте сокращения, потому что имя переменной (и, следовательно, ее назначение) может быть непонятно другим, кто читает ваш код.

· Имена переменных не должны включать тип данных переменной. Вы можете увидеть некоторые советы по использованию такого стиля, как

string strValue;

Этот совет уже не актуален. Пример

string firstName;

следует всем этим правилам и соглашениям, предполагая, что я хочу использовать эту переменную для хранения данных, представляющих чье-то имя.

Примеры имен переменных

Вот несколько примеров объявления переменных с использованием типов данных, о которых мы узнали ранее.

char userOption;
int gameScore;
decimal particlesPerMillion;
bool processedCustomer;

Подведение итогов

Вот основные выводы, которые вы уже узнали о переменных:

Переменные — это временные значения, которые вы храните в памяти компьютера. Прежде чем вы сможете использовать переменную, вы должны объявить ее. Чтобы объявить переменную, вы сначала выбираете тип данных, которые вы хотите сохранить, а затем даете переменной имя, соответствующее правилам. Теперь, когда мы знаем, как объявить переменную, давайте узнаем, как устанавливать, извлекать и инициализировать значение переменной.

Группа 4

Установка и получение значений переменных

Поскольку переменные являются временными контейнерами для хранения данных, они предназначены для записи и чтения. Вы получите возможность сделать и то, и другое в следующем упражнении.

Упражнение -

Работа с переменными

В этом упражнении вы объявите переменную, присвоите ей значение, получите ее значение и т. д.

Шаг 1. Удалите весь код в редакторе кода.

Используйте мышь, чтобы выделить весь текст в редакторе кода, затем нажмите клавишу Backspace или Del, чтобы удалить все. Позже мы изучим другую, менее разрушительную технику отключения строк кода, которые вы больше не хотите выполнять.

Шаг 2. Объявите переменную и присвойте ей значение

Чтобы присвоить значение переменной, вы используете оператор присваивания, который представляет собой один символ равенства =.

Добавьте следующий код в редактор кода:

string firstName;
firstName = "Bob";

Присвоение значения также называется «настройкой переменной» или просто операцией «установки». присвоить значение переменной Важно отметить, что присваивание происходит справа налево. Другими словами, компилятор C# должен сначала понять значение в правой части оператора присваивания, а затем выполнить присваивание переменной в левой части оператора присваивания. Если вы измените порядок, вы запутаете компилятор C#.

Шаг 3. Измените код, написанный на шаге 2, чтобы он соответствовал следующему коду:

string firstName;
"Bob" = firstName;

Теперь запустите код. Первая ошибка, которую вы увидите в консоли вывода:

(2,1): ошибка CS0131: левая часть присваивания должна быть переменной, свойством или индексатором

Шаг 4. Неправильное присвоение переменной значения неправильного типа данных Ранее мы объявили, что C# был разработан для принудительного применения типов. При работе с переменными применение типов означает, что вы не можете присвоить значение одного типа данных переменной, объявленной для хранения другого типа данных.

Измените код, который вы написали на шаге 3, чтобы он соответствовал следующему коду:

int firstName;
firstName = "Bob";

Теперь запустите код. Вы увидите следующую ошибку в консоли вывода:

(2,9): ошибка CS0029: невозможно неявно преобразовать тип «string» в «int»

Сообщение об ошибке намекает на то, что компилятор C# пытается сделать за кулисами. Он попытался «неявно преобразовать» строку «Bob» в значение типа int; однако это невозможно. Другими словами, вы не можете вставить квадратный колышек в круглое отверстие. Несмотря на это, C# попытался заставить квадратный штифт вписаться в круглое отверстие, но для слова «Боб» нет числового эквивалента, поэтому это не удалось. Подробнее о неявном и явном преобразовании типов мы поговорим в других уроках.

Шаг 5. Получите значение, которое вы сохранили в переменной.

Чтобы получить значение из переменной, вы просто используете имя переменной. В этом примере будет установлено значение переменной, затем получено это значение и напечатано на консоли.

Измените код, который вы написали на шаге 4, чтобы он соответствовал следующему коду:

string firstName; firstName = "Bob";
Console.WriteLine(firstName);

Теперь запустите код. Вы увидите следующий результат в консоли вывода:

Боб

Извлечение значения из переменной также называется «получением переменной» или просто операцией «получения».

Шаг 6. Переназначение значения переменной

Вы можете повторно использовать и переназначать переменную столько раз, сколько захотите. Этот пример иллюстрирует эту идею. Измените код, который вы написали на шаге 5, чтобы он соответствовал следующему коду:

string firstName; 
firstName = "Bob"; Console.WriteLine(firstName);
firstName = "Beth"; Console.WriteLine(firstName);
firstName = "Conrad"; Console.WriteLine(firstName);
firstName = "Grant"; Console.WriteLine(firstName);

Теперь запустите код. Вы увидите следующий результат в консоли вывода:

Боб Бет Конрад Грант

Шаг 7: Инициализируйте переменную

Вы должны установить переменную в значение, прежде чем сможете получить значение из переменной. В противном случае вы увидите ошибку. Измените код, который вы написали на шаге 6, чтобы он соответствовал следующему коду:

string firstName;
Console.WriteLine(firstName);

Теперь запустите код. Вы увидите следующий результат в консоли вывода:

(2,19): ошибка CS0165: использование неназначенной локальной переменной firstName.

Чтобы избежать возможности неназначенной локальной переменной, мы рекомендуем вам установить значение как можно скорее после его объявления. На самом деле вы можете выполнить и объявление, и установку значения переменной в одной строке кода. Этот метод называется инициализацией переменной. Измените код, который вы написали ранее на этом шаге, чтобы он соответствовал следующему коду:

string firstName = "Bob";
Console.WriteLine(firstName);

Теперь запустите код. Вы должны увидеть следующий вывод:

Боб

Подведение итогов

Вот основные выводы, которые вы узнали о работе с переменными:

Вы должны присвоить (установить) значение переменной, прежде чем сможете извлечь (получить) значение из переменной. Вы можете инициализировать переменную, присвоив значение переменной в точке объявления. Присвоение происходит справа налево. В качестве оператора присваивания используется один символ равенства. Чтобы получить значение из переменной, вы просто используете имя переменной

Группа 5

Неявно типизированные локальные переменные

Компилятор C# предоставляет множество удобств при написании кода. Он может вывести тип данных вашей переменной по ее инициализированному значению.

В этом модуле вы узнаете об этой функции, называемой неявно типизированными локальными переменными.

Что такое неявно типизированные локальные переменные?

Неявно типизированная локальная переменная создается с помощью ключевого слова var, которое указывает компилятору C# определить тип. После того, как тип выведен, это так же, как если бы фактический тип данных использовался для объявления переменной. В следующем примере мы объявим переменную, используя ключевое слово var вместо ключевого слова string.

var message = "Hello world!";

Поскольку переменной message сразу же присваивается строковое значение «Hello World!», компилятор C# понимает намерение и обрабатывает каждый экземпляр сообщения как экземпляр строкового типа. На самом деле переменная сообщения типизирована как строка и никогда не может быть изменена. Здесь мы попытаемся установить для сообщения буквальное десятичное значение 10,0 м.

var message = "Hello World!";
message = 10.0m;

Если вы запустите этот код, вы увидите следующее сообщение об ошибке.

(2,11): ошибка CS0029: невозможно неявно преобразовать тип «десятичный» в «строку».

Примечание. В других языках программирования ключевое слово var используется по-другому.

В C# переменная статически типизируется компилятором независимо от того, используете ли вы фактический тип данных или позволяете компилятору определить тип данных. Другими словами, тип блокируется во время объявления и, следовательно, никогда не сможет содержать значения другого типа данных. Вы можете использовать ключевое слово var только в том случае, если переменная инициализирована. Важно понимать, что ключевое слово var зависит от значения, которое вы используете для инициализации переменной. Если вы попытаетесь использовать ключевое слово var без инициализации переменной, вы получите сообщение об ошибке при попытке скомпилировать свой код.

var message;

Если вы попытаетесь запустить этот код, во время его компиляции вы увидите следующий вывод:

(1,5): ошибка CS0818: переменные с неявным типом должны быть инициализированы

Зачем использовать ключевое слово var?

Ключевое слово var получило широкое распространение в сообществе C#, поэтому вполне вероятно, что если вы посмотрите на пример кода в книге или в Интернете, вы увидите, что вместо фактического имени типа данных используется ключевое слово var. Итак, мы хотели обязательно представить его на этом уроке.

Однако ключевое слово var имеет важное значение в C#. По причинам, которые могут быть вам непонятны, пока вы не напишете расширенный код, бывают ситуации, когда тип данных может быть неочевидным во время инициализации переменной. Фактически, в некоторых случаях C# может изобрести новый тип данных только для вашего кода и не сможет заранее дать ему предсказуемое имя. Опять же, это расширенная функция C#, которая будет рассмотрена в других уроках.

Приступая к работе, мы рекомендуем вам продолжать использовать фактическое имя типа данных при объявлении переменных. Использование типа данных при объявлении переменных поможет вам быть целеустремленным при написании кода.

Подведение итогов

Самые важные выводы из этого раздела о ключевом слове var и неявно типизированных локальных переменных:

о1. Ключевое слово var указывает компилятору определить тип данных переменной на основе значения, которым она инициализирована.

о2. Скорее всего, вы встретите ключевое слово var, когда будете читать чужой код; однако по возможности следует использовать этот тип данных.

Блок 6

Вызов

В этом задании вы напишете код, который будет объединять литеральные и переменные значения в одно сообщение.

Шаг 1. Удалите весь код из предыдущего упражнения в редакторе .NET.

Выберите весь код в редакторе .NET, затем нажмите клавишу del или backspace, чтобы удалить его.

Шаг 2. Напишите код в редакторе .NET для отображения сообщения

Когда вы закончите, сообщение должно выглядеть следующим образом:

Привет, Боб! У вас 3 сообщения во входящих. Температура 34,4 по Цельсию.

Сохраните следующие значения из вывода в переменных:

Боб

3

34.4

Этим переменным должны быть присвоены имена, отражающие их назначение. Убедитесь, что вы выбрали правильный тип данных для каждой из переменных в зависимости от типа данных, которые она будет содержать.

Наконец, вы объедините переменные с литеральными строками, переданными в серию команд Console.Write(), чтобы сформировать полное сообщение.

Решение

Следующий код является одним из возможных решений проблемы из предыдущего модуля.

string name = "Bob";
int messages = 3;
decimal temperature = 34.4m;
Console.Write("Hello, ");
Console.Write(name);
Console.Write("! You have ");
Console.Write(messages);
Console.Write(" messages in your inbox. The temperature is ");
Console.Write(temperature);
Console.Write(" celsius.");

Этот код является просто «одним из возможных решений», потому что мы не указали, как именно создать вывод. Например, возможно, вы могли бы использовать больше операторов Console.Write(); однако вы должны были инициализировать три переменные для хранения трех значений в соответствии с инструкциями в вызове.

Кроме того, вы должны были использовать:

· переменная строкового типа для хранения имени «Боб».

· переменная типа int для хранения количества сообщений.

· переменная типа decimal для хранения температуры.

Если вы добились успеха, поздравляем!

Важно

Если у вас возникли проблемы с выполнением этого задания, возможно, вам следует просмотреть предыдущие блоки, прежде чем продолжить. Все новые идеи, которые мы будем описывать на других уроках, будут зависеть от вашего понимания идей, представленных на этом уроке.

Спасибо за ваше время, я надеюсь, что эта статья принесет вам пользу. Поделитесь, может кому понадобится.

Если вы пропустили первую часть, нажмите здесь или скопируйте и вставьте ссылку ниже

https://medium.com/@ferdinandcharles6/introduction-to-programmimg-c-b2568b7e8554

Пока, увидимся на следующей неделе, в третьей части будет еще интереснее