- •Глава 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. Структура программы на языке с#
Для того чтобы описать структуру программы, написанной на C#, необходимо ввести понятие класса. Подробно способы описания и использования классов будут рассмотрены в главе 7.
Класс описывает общее свойства и общее поведения для объектов одного типа. В программе класс – это тип данных, определяемый пользователем.
Для создания простейшего класса в С# используют запись
class имя_класса
{список элементов};
Обычно класс содержит следующие элементы:
поля, определяющие данные которые хранит класс (свойства объектов);
методы, определяющие функции обработки этих данных (поведение объектов).
Синтаксис описания полей класса в С# в целом соответствует синтаксису описания переменных в языке С, а синтаксис описание методов в С# в целом соответствует – синтаксису описанию функций в языке С (см главу 7).
Однако работа с полями и методам класса отличается от работы с обычными переменными и функциями. Для того чтобы обратиться к любому элементу класса (полю или методу) используют операцию уточненного имени:
имя_класса.имя_элемента
или
имя_объекта_класса.имя_элемента
Программист может описывать собственные классы и также может использовать стандартные классы.
Например, для ввода-вывода данных для консольных приложений в языке С# используется стандартный класс с именем Consoleиз библиотеки классов.Net1.
Для того чтобы использовать любой из его методов в программе необходимо использовать следующую запись:
Console.имя_метода([список параметров])
Например, для вывода данных на экран используется метод WriteLine. Метод является переопределенным и может использоваться с разными параметрами. Для вывода строки на экран используется методWriteLineс параметром строковой константы, например:
Console. WriteLine (“Hello, World”);
Все стандартные классы библиотеки .Netи классы, которые создает программист организованы в единую иерархическую структуру классов с одним общим предком – классомobject. Внутри этой иерархии классы сгруппированы в так называемые пространства имен. Любая программа использует пространство именSystem. В этом пространстве имен определены классы, обеспечивающие базовые функции программы: ввод-вывод, математические операции, управление памятью и др. Например, упомянутый выше классConsoleописан именно в пространстве именSystem. Для того, чтобы в программе использовать стандартный класс можно перед его именем указать через точку имя пространства имен, например,
System.Console.WriteLine("\nHello, World!\n");
Однако удобнее для использования стандартных класс в начале программы подключить соответствующее пространство имеем с помощью директивы
using Имя-простаства_имен
Например, чтобы использовать класс Consoleподключают пространство именSystem:
using System;
В этом случае в программе можно непосредственно использовать имя класса без указания его пространства имен, например,
Console. WriteLine (“Hello, World”);
Рассмотрим простейшую программу, выводящую на экран строку Hello, world.
// Program.cs
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main()
{
Console.WriteLine("\nHello, World!");
Console.ReadKey();
}
}
}
В первой строке данной программы находится однострочный комментарий. В приведенном комментарии указано имя файла, в котором хранится исходный текст программы. В С#, так же как и в языке С, комментарии задаются двумя основными способами. Для однострочных комментариев используют символы //, как в нашем примере. Для многострочных комментариев можно использовать символы /* , */, между которыми и должен находится сам текст комментария. В тексте комментария могут содержаться любые символы, а вся последовательность символов эквивалентна символу пропуска (например, символу пробела). Комментарии не могут быть вложенными. Кроме того, в языке С# есть еще один способ задания комментариев, который используется для формирования документации к программе в формате XML. Такие комментарии начинаются с символов ///.
Во второй строке программы помещена команда препроцессора (директива) using. Данная директива, как было сказано выше, подключает указанное пространство имен, в данном случае System, что позволит использовать, в частности, класс для ввода-вывода данных Console.
В третьей строке программы с помощью ключевого слова namespace создается собственное пространство имен проекта. Обратите внимание, что при создании проекта в Visual Studio это имя пространства имен будет по умолчанию совпадать с именем проекта (в этом примере ConsoleApplication1), однако его можно изменить. Собственное пространство имен проекта создается для того, что в нем можно было описывать программные объекты (например, классы) с любыми именами, не заботясь о том, что объекты с такими именами существуют в других пространствах имен. Все объекты программы в данном пространстве имен описываются внутри операторах скобок языка C# {}.
Любая программа на языке C# представляет собой набор взаимодействующих между собой классов, следовательно, должна содержать хотя бы один класс. В нашем примере описан один класс с именем Program. Обратите внимание, что при создании проекта в Visual Studio имя класса будет по умолчанию совпадать с именем файла исходного текса с расширением .cs, однако его можно изменить.
В нашем примере class Program содержит только один элемент, а именно метод с именем Main.
Каждая программа должна содержать метод с именем Main, и работа программы начинается с именно с выполнения этого метода.
Любой метод в языке C#, как и функция в языке С, состоит из заголовка и тела. Заголовок метода должен в обязательном порядке определять его тип, имя и в круглых скобках список параметров (может быть пустой). В нашем примере методMainимеет заголовок
static void Main()
Из данного заголовка видно, что тип этого метода void(спецификатор типа, указывающий, что метод не возвращает никакого значения), имяMain, а список параметров пуст. Спецификаторstaticозначает, что данный метод класса является статическим, т.е. его можно использовать без создания объекта класса.
Тело метода определяет выполняемые в нем действия и представляет заключенную в фигурные скобки последовательность описаний и операторов. Каждое описание и оператор заканчивается символом ‘;’. В данном примере в теле метода Mainнет явных описаний, а есть только два оператора:
Console.WriteLine("\nHello, World!");
Console.ReadKey();
Первый из них, как было указано выше, представляет собой вызов метода WriteLine (вывода на экран) из класса Console. В данном случае на экран выводится строка "\nHello, World!". Строковая константа в языке С# –это последовательность символов, заключенная в двойные кавычки.
Строковая константа, также как и в языке С, может содержать в себе escape–последовательности (управляющие последовательности), то есть определенный символ, предваряемые обратной косой чертой ‘\’. Управляющие последовательности используются для представления символов, не имеющего графического изображения (например, \n – символ перевода строки ), символов имеющих специальное значение и символов, заданных шестнадцатеричным кодом или Unicode. и некоторые другие, но и выводить символьные константы, явно задавая их коды в восьмеричном или шестнадцатеричном виде. Последовательность литер, начинающаяся с символа ‘\’ называют esc–последовательностями (ескейп–последовательностями, управляющие последовательности). Их допустимые значения приведены в таблице 1.1.
Методы организации вывода и ввода данных будут подробно рассмотрены в главе 3.
Последняя строка программы Console.ReadKey(); представляет собой вызов метода ReadKey() класса Console, осуществляющего задержку экрана.
Таблица 1.1.
Допустимые ESC–последовательности
|
Изображение |
Значение |
|
\a |
Звуковой сигнал |
|
\b |
Возврат на шаг (забой) |
|
\f |
Перевод страницы (формата) |
|
\n |
Перевод строки (новая строка) |
|
\r |
Возврат каретки |
|
\t |
Табуляция горизонтальная |
|
\v |
Вертикальная табуляция |
|
\\ |
Обратная косая черта (\) |
|
\' |
Апостроф (') |
|
\" |
Кавычка (") |
|
\0 |
Ноль-символ (конец строки) |
|
\xhhhh |
Шестнадцатеричный код символа (hhhh – любые шестнадцатеричные символы) |
|
\uhhhh |
Шестнадцатеричный код символа в кодировке Unicode (hhhh – любые шестнадцатеричные символы) |
Для того чтобы вывести на экран символы в кодировке кириллица (DOS) необходимо:
1. Подключить пространство имен System.Text;
usingSystem.Text;
2. Изменить свовойство OutputEncoding класса Console следующим образом
Console.OutputEncoding= Encoding.GetEncoding("cp866");
или
Console.OutputEncoding = Encoding.GetEncoding(866);
Метод GetEncoding класса Text.Encoding возвращает кодировку символов, заданную числовой или строковой константой. В данном случае 866 – числовая константа, соответствующая кодировке кириллица DOS. С кодами кодировок можно ознакомиться в библиотеке MSDN2.
