Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Курс лекций CS (первый семестр)

.pdf
Скачиваний:
7
Добавлен:
20.05.2015
Размер:
2.69 Mб
Скачать

Кафедра теоретической механики ИМЭМ ОНУ им. И.И.Мечникова

Максимальные и минимальные значения целых типов можно посмотреть через соответствующие свойства классов. Например выведем на экран предельные значения для типа int.

using System;

using System.Collections.Generic; using System.Text;

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

Console.WriteLine("{0}", int.MaxValue);

Console.WriteLine("{0}", int.MinValue);

Console.ReadLine();

}

}

}

Результат.

Переполнение беззнаковых целых.

41

Кафедра теоретической механики ИМЭМ ОНУ им. И.И.Мечникова

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

Переполнение знаковых целочисленных значений.

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

Какой тип выбрать?

В языке С# имеется такое богатство целочисленных типов данных, что может возникнуть вопрос: какой тип данных следует использовать в данном конкретном случае? Обычно для данных целого типа используется тип int, так как он является наиболее естественным для компьютера. Естественная величина для компьютера означает, что целые числа такого типа обрабатываются компьютером наиболее эффективно. Если переменная представляет собой величину, которая будет принимать только положительные значения, например, количество чего-то, то можно использовать тип данных без знака. Если Вы знаете, что переменная может принимать значения, превышающие 32-битовое целое, то используйте тип данных long.

Определение переменной.

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

int myAge;

При объявлении переменной для нее выделяется (резервируется) память.

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

Например, myAge=17; В случае отсутствия такого оператор компилятор выдаст Вам сообщение об ошибке.

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

Инициализация: int myAge=17;

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

42

Кафедра теоретической механики ИМЭМ ОНУ им. И.И.Мечникова

Например:

int myAge, mySize;

Можно инициализировать сразу несколько переменных:

int myAge=17, mySize=38;

43

Кафедра теоретической механики ИМЭМ ОНУ им. И.И.Мечникова

Лекция №8.

Действительные числа с плавающей точкой.

В языке С# имеется два способа записи чисел с плавающей точкой. Первый способ это стандартная запись чисел с десятичной точкой, которой вы обычно пользуетесь:

12.34

939001.32

8.0

Даже если дробная часть равна 0, как в числе 8.0, наличие десятичной точки гарантирует, что число будет храниться в формате числа с плавающей точкой, а не целых чисел.

Второй способ записи чисел с плавающей точкой называется экспоненциальной формой записи или просто экспоненциальной записью, например: 3.45Е6. 6 – называется экспонентой, а 3.45

мантиссой.

2.52е+8

8.33Е-4

7Е5

-18.32е13

9.11е-31

В языке С# имеется два типа данных с плавающей точкой: float и double. Наиболее часто используемым типом является тип double. Это объясняется тем, что математические функции, встроенные в компилятор, возвращают значения типа double.

Пример. Выведем на экран диапазон значений типа float. using System;

using System.Collections.Generic; using System.Text;

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

44

Кафедра теоретической механики ИМЭМ ОНУ им. И.И.Мечникова

{

Console.WriteLine("{0}", Single.MaxValue);

Console.WriteLine("{0}", Single.MinValue);

Console.WriteLine("{0}", Single.Epsilon);

Console.ReadLine();

}

}

}

Результат.

Пример. Выведем на экран диапазон значений типа double. using System;

using System.Collections.Generic; using System.Text;

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

Console.WriteLine("{0}", Double.MaxValue);

Console.WriteLine("{0}", Double.MinValue);

Console.WriteLine("{0}", Double.Epsilon);

Console.ReadLine();

}

45

Кафедра теоретической механики ИМЭМ ОНУ им. И.И.Мечникова

}

Результат.

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

Пример. using System;

using System.Collections.Generic; using System.Text;

namespace ConsoleApplication1

{

class MyProgram

{

static void Main(string[] args)

{double a=2.34e+22; double b=a+1.0;

Console.WriteLine("a={0}", a);

Console.WriteLine("b-a={0}", b-a);

}

}

}

Результат.

46

Кафедра теоретической механики ИМЭМ ОНУ им. И.И.Мечникова

В программе к некоторому числу добавляется 1, а затем из суммы вычитается само число. В результате должна получиться единица. Проблема заключается в том, что 2.34е+22 – это число с 23 значащими цифрами. Прибавляя к нему единицу, вы пытаетесь добавить единицу к 23-й цифре этого числа. Но тип данных double имеет только 15-16 значащих цифр, поэтому попытка изменить 23-ю цифру не оказывает на число никакого влияния.

Типы с фиксированной точкой.

В языке C# имеется еще один тип для записи вещественных чисел decimal. В отличие от других типов с плавающей точкой он представляет действительное число с точностью до 28 разрядов. Однако диапазон возможных значений уже:

1.0 10 28 7.9 1028

Числа типа decimal должны записываться в программах с завершающей буквой «М».Такие числа используются в основном в финансовых вычисления, где необходимо исключить ошибку округления. Например,

decimal myPer=12.5M; ~ decimal myPer=12.5m;

Замечание. Буква в конце записанной константы называется суффикс. При инициализации переменных типа float необходимо использовать суффикс f(F).

Логический тип данных (Boolean).

Логический тип bool (файл System.Boolean)— один из наиболее часто используемых в С# типов переменной; аналогичные типы часто встречаются в кодах на других языках программирования. Использование переменной, которая может принимать только два значения — либо true, либо false,— создает очень важную возможность ветвления логики приложения. В качестве простого примера представьте себе, какое огромное количество вопросов допускают в качестве ответа true или false ("да" или "нет").

bool tBool=true;

bool fBool=false;

Символы.

47

Кафедра теоретической механики ИМЭМ ОНУ им. И.И.Мечникова

В языках программирования был найден простой способ хранения символов – использование числового кода. Таким образом, тип данных char – это еще один целочисленный тип данных (файл

System.Char).

Символьные переменные (типа char) занимают два байта, этого достаточно для хранения 65536 значений печатаемых символов. Значение типа char можно интерпретировать как число в диапазоне 0-65535, или символ в кодировке Unicode. В языке С# символ заключается в одинарные кавычки, например ‘M’.

Пример. char mySim=’d’;

Для вывода символьного значения используется оператор WriteLine(). Следующая строка выводит значение переменной mySim.

Console.WriteLine(―Значение переменной mySim:‖+ mySim);

Некоторые символы нельзя вводить в программу с клавиатуры непосредственно. Например, символ новой строки нельзя ввести, просто нажав клавишу Enter; программа текстового редактора интерпретирует нажатие этой клавиши как требование начать новую строку в вашем файле исходного текста. Для таких символов в языке С# имеется специальная форма записи, которая называется escape-последовательностью (управляющей последовательностью).

Таблица 1. Коды escape-последовательностей языка С#.

 

Код

Имя символа

C#

 

 

Новая строка

\n

 

 

Горизонтальная табуляция

\t

 

 

Возврат на одну позицию

\b

 

 

Возврат каретки

\r

 

 

Предупреждение

\a

 

 

48

Кафедра теоретической механики ИМЭМ ОНУ им. И.И.Мечникова

Обратная наклонная черта

\\

 

 

Двойная кавычка

\‖

 

 

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

Константы бывают трех видов: литералы, символические константы и перечисления. В

операторе присваивания:

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

int myVozr=17;

myVozr является переменной типа int, а число 17 - литеральной константой.

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

Программист определяет символьную константу с помощью ключевого слова const в соответствии со следующим синтаксисом:

const тип идентификатор = значение;

Например,

const int myVozr =17;

Здесь 17 - это литеральная константа, a myVozr - символическая, имеющая тип int.

49

Кафедра теоретической механики ИМЭМ ОНУ им. И.И.Мечникова

Приведение типов (явным образом).

С помощью механизма приведения типов в языке C# можно явно преобразовывать данные одного типа в данные другого типа.

(имяТипа) переменная //преобразует значение переменной в данные типа имяТипа

При приведении типов сама переменная не изменяется; создается новое значение указанного типа, которое можно использовать в каком-нибудь выражении.

Пример.

float f = 7.8f;

int k = (int) f;

Console.WriteLine("k={0}", k);

Console.WriteLine("f={0}", f);

Результат:

50