Найти тему

C# Урок 3. Переменные и типы данных

Оглавление

Чтобы программа могла оперировать данными, данные должны находиться в оперативной памяти компьютера. Переменная - это область памяти, в которой находятся данные (рис. 1.19).

Рис. 3.1 Переменная - область памяти, в которой находятся данные
Рис. 3.1 Переменная - область памяти, в которой находятся данные

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

Следует обратить внимание, на то, что компилятор С# различает прописные и строчные буквы, поэтому, например, имена (идентификаторы) Name, name и NAME обозначают разные объекты (переменные).

В соответствие с правилами хорошего стиля программирования, имя переменной должно быть логически связано с ее назначением. Например, если переменные предназначены для хранения коэффициентов квадратного уравнения, то вполне логично присвоить им имена A, B и C, а переменным, предназначенным для хранения значений корней уравнения, — имена X1 и X2. Другой пример. Если в программе переменные предназначены для хранения суммы покупки и величины скидки, то этим переменным можно присвоить имена Sum и Discount.

Тип данных

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

К основным типам C # можно отнести следующие типы данных:

  • int (целый)
  • double (вещественный)
  • char (символьный)
  • bool ( логический)
  • string (строковый)

int

Значением переменной типа int может быть положительное или отрицательное целое число, а также ноль. Диапазон изменения значения переменных типа int от -2147483648 до 2147483647. Помимо типа int для представления целых данных можно использовать типы Int16, Int32 (эквивалентен int ), Int64 (long ), а также беззнаковые типы UInt 16, UInt 32 и UInt 64.

-2

double

Характеристики вещественных типов приведены в следующей таблице.

-3

Выбирая тип данных для переменных, следует учитывать, что переменная типа double занимает в оперативной памяти в два раза больше места, чем переменная типа single (float) . Это важно, тем более, когда речь идет о выборе типа элементов для массива.

Также следует понимать, что несмотря на широкий диапазон значений переменных вещественного типа, количество значащих цифр мантиссы (точность) для значений single – 7-8, а для double – не более 15.

char

Значением переменной типа char может быть любой символ в том числе, цифра, знак препинания, буква русского и латинских алфавитов, символ валюты и другие одиночные символы. Помимо обычных, т.е. отображаемых в окне консоли символов, значением переменной типа char может быть специальный (управляющий) символ. Управляющие символы на экране консоли не отображаются, но их отправка на консоль приводит к выполнению определенных действий. Например, символ Новая строка переводит курсор в начало следующей строки. В тексте программы специальные символы записывают особым образом. Например, символ новая строка записывается двумя символами \n.

string

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

bool

Переменная типа bool может принимать одно из двух логических значений: true (истина) или false (ложь).

Объявление переменных

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

Инструкция объявления переменной в общем виде выглядит так:

Тип Имя;

Например:

double weight;
int k;
string name ;

Несколько переменных одного типа можно объявить в одной инструкции, например, так:

double r1, r2, r;

Считается хорошим тоном после инструкции объявления переменной добавить комментарий, пояснить, для чего используется переменная.

double r1, r2; // сопротивления, Ом
int t; // способ соединения: 1 - посл., 2 - пар.
double u; // напряжение, вольт
double r; // сопротивление цепи, Ом
double i; // ток, ампер

C # позволяет объявить переменную практически в любом месте программы, там, где она нужна (единственное условие – переменная должна быть объявлена до первой инструкции, в которой она используется). Вместе с тем, переменные обычно объявляют в начале той функции, в которой они используются. Исключение составляют счетчики циклов, которые принято объявлять непосредственно в инструкции for.

Если в начале программы переменная должна иметь определенное значение, то присвоить ей это значение (выполнить инициализацию переменной) можно непосредственно в инструкции объявления переменной,

Например:

double discount = 0.25; // скидка
int n = 0; // количество совпадений
string address = "" ;

Инструкция присваивания

Инструкция присваивания это - основная вычислительная инструкция. В результате ее выполнения переменная получает значение.

В общем виде инструкция присваивания записывается так:

Имя = Выражение;

Выражение состоит из операндов и операторов и в общем виде выглядит так:
оп1 оп оп2
где:
оп1 и оп2 – операнды;
оп – оператор.

Операнды обозначают объекты, над которыми выполняется операция, оператор – выполняемое действие. В качестве операндов выражения могут выступать константы, переменные, функции и выражения.

Операторы - символы, обозначающие действия над операторами.

Примеры выражений:

i + 1
sum * 0.05
x + dx
x * sin (a )
gr / 454.0
d % 100

Операторы имеют разный приоритет. Так операторы *, /, % имеют более высокий приоритет, чем операторы + и -. Приоритет операторов влияет на порядок их выполнения. При вычислении значения выражения сначала выполняются операторы с более высоким приоритетом, т.е. умножение и деление, затем – с более низким (сложение и вычитание). Если приоритет операторов в выражении одинаковый, то сначала выполняется тот оператор, который находится левее.

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

(r1+r2)/(r1*r2)

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

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

Например, в результате выполнения инструкции
a = b + c
значением переменной a будет число, равное сумме значений переменных b и c.

В результате выполнения инструкции
j = j + 1
значение переменной j будет увеличено на единицу.

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

Значение переменной можно изменить не только при помощи инструкции присваивания, но и при помощи унарных операторов: ++ , -- и др.

Оператор ++ (инкремент, увеличение) увеличивает значение на единицу. Например, чтобы увеличить на единицу значение переменной i вместо инструкции i=i+1 можно записать i++. Аналогичным образом используется оператор -- (декремент, уменьшение).

Тип выражения и преобразование типов

Корректное выполнение операций +, -, * и / предполагает, что объекты, над которыми эти операции выполняются, одного типа. Если это не так, то выполняется преобразование типов по следующим правилам. Тип float преобразуется к double. Если один из операндов вещественного типа, а другой - целого, то целое значение преобразуется в вещественное.

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

Особое внимание следует обратить на операцию деления. Если оба операнда целого типа, то результат, в соответствии с приведенными выше правилами, преобразуется к целому, причем преобразование выполняется путем отбрасывания дробной части. Например, выражение 5/2 целого типа и, поэтому, его значение 2, а не 2.5.

Приведенная ниже программа пересчета веса из граммов в фунты демонстрирует особенности выполнения операции деления. Обратите внимание, если в инструкции пересчета вещественную константу 459.0 заменить целой константу 459, то программа будет работать неправильно – будет "теряться " дробная часть результата.

static void Main(string [] args)
{
int gr; // вес в граммах
double funt; // вес в фунтах

Console.Write( "Вес в граммах >" );
gr = System.
Convert .ToInt32( Console .ReadLine());

funt = gr / 459.0;

Console .WriteLine("{0} гр = {1} ф .", gr, funt);

Console .Write( "Press any key to continue" );
Console . ReadKey();
}

Контрольные вопросы

  1. Перечислите целые типы данных
  2. Перечислите вещественные типы данных
  3. Что такое "операнд"?
  4. Что такое "оператор"?
  5. Что можно использовать в качестве операнда выражения?
  6. Какой тип выражения R * 3.14 ?
  7. Какой тип и значение выражения U/R, если переменные U и R целого типа и имеют значения 15 и 6 соответственно?
  8. Какого типа должны быть переменные I, U и R, чтобы значение выражения I = U/R было правильным?

Заданиe

По аналогии с программой Конвертер, приведенной в этом уроке, напишите программу, при помощи которой можно посчитать ток в простой электрической цепи (закон Ома).

Следующий урок

Урок 4. Консольный ввод/вывод

Предыдущий урок

Урок 2. Первая программа

Литература

Культин Н. Б. C# для начинающих. Самоучитель с примерами и задачами для самостоятельного решения. эл. - 1 файл pdf : 130 c. Текст: электронный.

Культин Н.Б. Самоучиткль C#. Текст: электронный (приложение для Android)