
- •Основы алгоритмизации и объектно-ориентированного программирования
- •Оглавление
- •Предисловие
- •1. Основы языка c#
- •1.1 Переменные. Типы данных
- •1.2 Литералы
- •1.3. Операторы объявления. Инициализация переменных
- •1.4. Математические операторы. Выражения
- •Приведение и преобразование типов в с#
- •1.5. Логические операторы. Выражения
- •1.6. Перечисление
- •1.7. Основные операторы
- •1.8. Ввод-вывод
- •2. Реализация простейших алгоритмов на языке c#.
- •2.1. Организация циклов
- •2.2. Организация разветвлений. Разветвления в цикле
- •2.3. Составление программ для обработки потока данных
- •3. Массивы. Типовые алгоритмы обработки массивов
- •3.1. Одномерные массивы и алгоритмы их обработки
- •Поиск заданного элемента в упорядоченном массиве (бинарный поиск).
- •12. Объединение двух массивов с чередованием элементов
- •Объединение двух упорядоченных массивов в один с сохранением упорядоченности.
- •14. Инвертирование массива
- •15. Циклический сдвиг
- •3.2. Работа с массивами как с объектами
- •3.3. Работа с матрицами
- •Типовые алгоритмы работы с матрицами
- •4. Структуры и классы
- •4.1. Использование структур
- •4.2. Использование Конструктора экземпляра и других методов при работе со структурами
- •4.3. Использование классов
- •5. Методы
- •5.1 Общие положения. Способы передачи параметров
- •5.2. Использование массивов в качестве параметров
- •5.3. Использование делегата для передачи метода в качестве параметра в другой метод
- •Использование массивов в качестве параметров.
- •6. Работа с текстовыми строками
- •Файлы данных (Пространство имен System.Io). Файлы и потоки
- •8. Разработка приложений с графическим интерфейсом пользователя Windows. Экранные формы
- •Работа с элементом управления TextBox.
- •Работа с элементом управления Button
- •Работа с элементом управления RichTextBox
- •Создание объекта Graphics пространства имен System.Drawing для рисования
- •9. Среда разработки
- •9.1. Создание нового проекта
- •9.2. Сохранение проекта
- •9.3. Открытие существующего проекта
- •9.4. Использование интегрированной среды разработки Visual c#
- •Обозреватель решений
- •Компилятор c# для преобразования исходного кода c# в исполняемую программу
- •Ошибки построения
- •Отладчик Visual Studio для тестирования программы
- •Обозреватель объектов для просмотра методов и классов, доступных в библиотеках.
- •Значки обозревателя объектов
- •Приложение 1. Платформа Microsoft .Net Framework
- •Приложение 2.
- •Приложение 3. Региональные стандарты
- •2. Библиотека msdn (по-русски) http://msdn.Microsoft.Com/ru-ru/library/default.Aspx
1. Основы языка c#
1.1 Переменные. Типы данных
C# имеет две разновидности типов: типы значений и ссылочные типы. Переменные, основанные на типах значений, содержат непосредственно значения. Переменные ссылочных типов сохраняют ссылки (адреса в специально выделенной памяти) на фактические данные. Таким образом, в переменной может храниться или значение, или объектная ссылка.
Для обозначения переменных используются идентификаторы: сочетание букв, цифр и знака подчеркивания, начинающееся с буквы.
В C# переменные объявляются с определенным типом данных.
Тип данных определяет место для хранения переменной, расположение, в котором будет выделена память для переменной во время выполнения программы, способ представления значения переменной в памяти, множество допустимых значений, а также набор операций, которые можно выполнять с этими данными.
Так как все переменные в C# являются объектами тех или иных классов или структур, то к сведениям, хранимым в типе, также относиться базовый тип, которому он наследует и содержащиеся в нем члены (методы, поля, события и т. д.).
В программах настоящего пособия будем использовать только переменные типа int (принимающие целые значения), double (вещественные значения) , string (строка символов), char (отдельный символ) и bool (принимающие значения true (истина) или false (ложь)).
Переменные типа int, double, char, и bool являются экземплярами структур и относятся к типам значений. Переменная типа string является экземпляром класса и относится к ссылочным типам, то есть переменная содержит адрес ячейки памяти, где размещается строка. К ссылочным типам относятся также массивы (см. п. 3).
Более полное перечисление элементарных (встроенных) типов, к которым относятся и упомянутые выше типы, и характеристики типов см. в Приложении 2.
Значения и объектные ссылки.
Значение — это двоичное представление данных, тип данных предоставляет способ представления значения переменной в памяти.
Значения переменных целых типов представляются в памяти как двоичные числа, полученные непосредственно переводом из десятичной системы счисления в двоичную систему счисления (это представление полностью справедливо лишь для положительных чисел). Целые числа в памяти представляются точно, и при выполнении операций с целыми числами никаких ошибок не возникает.
Идея представления в памяти вещественных чисел (конкретные способы могут варьироваться) заключается в следующем. Сначала число приводится к нормализованному виду, когда целая часть числа равна 0, первая цифра после запятой является значащей, а положение запятой в числе определяется значением показателя степени 10. Например, число 0,086 в нормализованной форме имеет вид 0.8610-1, число 123,45 - 0.1234510-3. При этом цифры, расположенные в нормализованной записи после точки, называются мантиссой, а показатель степени 10 это порядок. В памяти отдельно представляется мантисса и отдельно - порядок. При этом количество бит, предназначенных для мантиссы, определяет точность представления, а количество бит, предназначенных для порядка, определяет диапазон представляемых чисел. Если количество цифр в двоичном представлении мантиссы превышает количество отведенных под нее разрядов, то последние двоичные цифры теряются и число оказывается представленным в памяти приближенно. Кроме того, при выполнении арифметических операций ошибки могут накапливаться. Таким образом, в общем случае вещественные числа в памяти представляются приближенно и их сравнение на точное равенство невозможно. Так, например, равенство 0.2 + 0.2 + 0.2 + 0.2 + 0.2 = 1 может не выполняться, если левая часть его вычисляется на компьютере (cм. Пример 2.6). Обычно вещественные переменные используются для обозначения величин, полученных в результате измерений, которые всегда имеют некоторую погрешность, либо полученных в результате вычислений.
Символы всегда представлены 16-разрядными кодами Unicode (Юникод). Подробнее о символьных данных и операциях с ними см. п. 6.
Логические переменные могут иметь значение true либо false.
Объектная ссылка – адрес памяти. При создании объекта память для него выделяется в управляемой куче – специальной области памяти, переменная хранит только ссылку на расположение объекта.