- •Глава 1. Структура программы на языке с# 6
- •Глава 1. Структура программы на языке с#
- •Задание 1. Вывод строки на экран с использованием esp-последовательности
- •Глава 2. Переменные. Основные типы данных
- •Int.MinValue
- •Задание 2. Описание переменных и преобразование типов
- •Глава 3. Ввод – вывод значений переменных
- •Задание 3. Форматирование вывода
- •Глава 4. Обработка исключительных ситуаций
- •Задание 4. Обработка стандартных исключений
- •Задание 5. Генерация исключений
- •Глава 5. Массивы в c#
- •Initially,
- •Integer array: 1 2 3 4 5
- •Integer array: 1 2 3 4 5
- •Integerarray: 1 2 3 29 30
- •Задание 6. Одномерные массивы
- •Задание 7. Многомерные массивы и массивы массивов
- •Глава 6. Символы и строки
- •If (char.IsLetter(a)) Console.WriteLine("Буква");
- •Задание 8. Работа со строками
- •Глава 7. Описание классов
- •Int m, n;// числитель и знаменатель
- •Пример решения задачи
- •Intyear_tr;
- •If (Enum.IsDefined(typeof(gender_type),value))
- •Int year_tr;
- •If (Enum.IsDefined(typeof(gender_type),value))
- •Задание 9. Описание классов
- •Глава 8. Наследование
- •Задание 10. Наследование
- •Глава 9. Итерфейсы
- •Interface iOutput
- •Void outputName();
- •Interface iOutput
- •Void outputName();
- •If ( a is iOutput )
- •Interface iComparable
- •Int CompareTo( object obj )
- •Задание 11. Стандартные интерфейсы.
- •Глава 10. Файлы
- •Задание 12. Работа с файлами
- •Список использованных источников
Задание 1. Вывод строки на экран с использованием esp-последовательности
Каждому студенту рекомендуется выполнить хотя бы одно из упражнений 1–10.
Используя esc–последовательности, выведите на экран следующий текст.
Это строка, иначе –“стринг”, иначе – “строковый литерал”
Это звуковой
сигнал! (Сопроводите вывод строки звуковым сигналом)
Это строка? “Да!”
“ – это двойные кавычки ‘ – это апостроф
Это “строка”? Это “строка”! (Используя символ возврата на шаг, во второй строке удалите восклицательный знак)
Это строка? Это строка! (Замените слово “Это” во второй строке словом “Да”, используя возврат каретки)
\\Это комментарий? //Нет, это комментарий
C:\Program Files\Far
D:\Program Files\Far
(Замените символ D на символ F используя возврат каретки)
Используя шестнадцатеричные коды символов, выведите на экран текст:
Цена=
=100$
Используя шестнадцатеричные коды символов в кодировке Unicode, выведите на экран текст:
Цена=
=100$
Глава 2. Переменные. Основные типы данных
Любая программа, суть которой не есть вывод на экран некоторой текстовой информации, содержит описание переменных. Переменная это пара “имя” – “значение”. Имени соответствует адрес участка памяти, выделенной переменной, а значением является содержимое этого участка. Именем переменной служит идентификатор. В С# идентификатор – это последовательность из букв латинского алфавита и национальных языков, десятичных цифр и символов подчеркивания, начинающаяся не с цифры. Прописные и строчные буквы различаются. Примеры идентификаторов:
i,i2,i_2,stroka,STROKA,F_I_O, Сумма .
Каждый программный объект (переменная, выражение, метод, экземпляр класса) имеет тип, определяющий внутреннее их представление данных в памяти компьютера, а следовательно множество их возможных значений, а также операции, которые могут над ними производиться. Все типы языка С# можно разделить на встроенные (основные) и определяемые программистом (производные). Переменные типизируются с помощью описаний. Для описания переменных встроенных типов используют ключевые слова, содержащиеся в таблице 2.1.
Описание переменных заданного типа имеет следующий формат:
[const] тип имя1 [иницал._выражение1], имя2 [иницал._выражение2],…; где
тип – один из типов данных;
имя– идентификатор;
Таблица 2.1.
Встроенные типы данных
Тип данных |
Ключевое слово |
Диапазон значений |
Количество битов |
Логический |
bool |
true, false |
|
Символьный (Unicode-символ) |
char |
от U+0000 до U+ffff |
16 |
Целый (со знаком) |
sbyte |
-128...127 |
8 |
Целый (без знака) |
byte |
0..255 |
8 |
Целый (со знаком) |
int |
-2147483648 ... 2147483647 |
32 |
Целый (без знака) |
uint |
0 ... 4294967295 |
32 |
Целый (короткий, со знаком) |
short |
–32768…32767 |
16 |
Целый (короткий, без знака) |
ushort |
0 ... 65535 |
16 |
Целый (длинный, со знаком) |
long |
-9223372036854775808 ... 9223372036854775807 |
64 |
Целый (длинный, без знака) |
ulong |
0 ... 18446744073709551615 |
64 |
Вещественный (7 цифр) |
float |
1.510-45…3.41038 |
32 |
Вещественный с удвоенной точностью (15-16 цифр) |
double |
5.010-324…1.710308 |
64 |
Финансовый (28-29 цифр) |
decimal |
1.010-28…7.91028 |
128 |
Строковый |
string |
Длина ограничена доступной памятью |
|
Тип obiect |
obiect |
Любые данные |
|
С языке С# идентификатор – это последовательность букв (латинских букв и букв национальных алфавитов), цифр и знаков подчеркивания, начинающаяся не с цифры.
инициал._выражение– необязательный инициализатор, определяющий начальное значение соответствующего объекта.
Синтаксис инициализатора переменной:
= инициал._выражение
либо
(инициал._выражение).
В качестве инициирующего выражения может применяться операция языка new, которая служит для создания нового объекта и имеет следующий формат:
new тип ([параметры])
Эта операция может быть применена для создания объекта любого типа, но обычно она применяется для создания объектов т.н. ссылочного типа, к которым относят, например, массивы, строки, классы. Величины ссылочного типа в отличии от величинзначимого типа(например, целых, вещественных, символьных, логических), хранят не сами данные, а адрес по которому распложены данные.
Приведем несколько примеров описания программных объектов, в т.ч. переменных.
int i,j,k,n=10;
// Определены целые переменные i,j,k,n и только n
//инициализирована значением 10;
inti=newint(); // то же самое, чтоinti=0;
Student s1=new Student();
// создание объекта класса Student;
strings= “Hello”;
//создание строки и инициализация ее строковой константой
string s = new string(‘ ’, 20 );
//создание строки из 20 пробелов
char simbol1= ‘\n’;
// Определена символьная переменная simbol1 co
// значением ‘\n’
double pi=3,1415926535897932385;
// Определена вещественная
//переменная pi с удвоенной точностью co значением
//3,1415926535897932385
К встроенному типу можно применять спецификатор const. Это дает тип, имеющий те же свойства, что и исходный тип, за исключением того, что значение переменных типа const не может изменяться после инициализации. Например,
constfloatpi= 3,14;
constcharplus= '+';
В данном случае говорят, что описаны константы. Символ, заключенный в одинарные кавычки, является символьной константой. Константа должна инициализироваться при описании. Для переменных инициализация необязательна, но настоятельно рекомендуется. Оснований для введения локальной переменной без ее инициализации очень немного.
Кроме типов, приведенных в таблице2, к значимым типам в языкеC# относят перечислимый типenum.
Перечислимый тип, который вводится с помощью служебного слова enum, по существу описывает целые константы (типаint), которым приписаны уникальные и удобные для использования имена. Например,
enum{one=1,two=2,three=3};
Здесь one, two, three – произвольным образом выбранные программистом идентификаторы для обозначения констант 1,2,3. После такого определения в программе наряду, например, с константой 2 можно использовать ее обозначение two. Если в определении перечислимых констант опустить знаки “=” и не указывать числовых значений, то они будут присваиваться идентификаторам по умолчанию следующим образом: самый левый в фигурных скобках идентификатор получит значение 0, а каждый последующий увеличивается на 1. Имена перечислимых констант должны быть уникальными, однако к значениям констант это не относится. Одно значение могут иметь разные константы. Для перечислимых констант можно ввести имя типа, соответствующего приведенному списку констант, например, определение
enum week {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday};
не только определяет константы Sunday==0, Monday==1,…, но и вводит перечислимый тип с именем week, который может в дальнейшем использоваться в определениях и описаниях других типов.
Особое значение в языке имеет тип void, множество значений которого пусто. Его используют для обозначения типа метода класса, если он не возвращает значения, например, static void Main(). Объектов типа void не существует, то есть описание void i; недопустимо.
Для определения размера (в байтах) области памяти, выделяемой для переменной определенного типа, в С# используется операция sizeof:
sizeof (тип данных).
Например, операция sizeof(int) определит, сколько байт выделено для переменойтипа int.
Определенные операции могут в зависимости от их операндов вызывать неявное преобразование значения операнда от одного типа к другому. Например,
char сh= ‘a’;
int k = ch; // символьный тип преобразуется к целому
Console.WriteLine(k);// ASCII–код символа ch 97
Не для всех типов данных допустимо неявное преобразование, например запись
double a=1.0;
decimal b=a;
приведет к ошибке. В этом случае необходимо явным образом преобразовывать типы, для этого используют операцию преобразования типа:
(тип) выражение
где тип – это имя типа, в который осуществляется преобразование, а выражение чаще всего представляет собой имя переменной.
Таким образом, чтобы в предыдущем примере устранить ошибку следует добавить преобразования типа следующим образом:
double a=1.0;
decimal b=(decimal) a;
Другим примером явного преобразования типа является вывод на экран ASCII–кода символа ch без использования вспомогательной переменной целого типа будем писать
char сh= ‘a’;
Console.WriteLine((int)сh);// 97
Использовать преобразования значимых типов необходимо с большой осторожностью, так как они это может привести к потере информации, например
int a=300;
Console.WriteLine(a);// 300
Console.WriteLine((byte)b); //44
Подробнее о преобразовании типов можно узнать в библиотеке MSDN3.
На практике преобразование типа часто применяется для ссылочных типов при работе с иерархиями объектов.
Все встроенные типы данных языка С# однозначно соответствуют стандартным классам библиотеки .Net, определенным в пространстве именSystemи, следовательно, имеют одного общего предкаobject. Таким образом, любой встроенный тип данных имеет поля и методы. С их помощью можно получать, например, минимальные и максимальные значения для разных типов данных:
double.MaxValue