- •Уровни языков программирования
- •Язык c#
- •Переменные и константы
- •Числа без знака
- •Числа со знаком
- •Числа с плавающей точкой
- •Текстовые символы
- •Логический тип данных
- •Выражения и операторы с#
- •Составные операторы
- •Поразрядные операторы
- •Логические операторы
- •Операторы отношения
- •Приоритеты операторов
- •Работа с консолью
- •Преобразование типов
- •Оператор явного преобразования типов
- •Преобразование типов констант
- •Алгоритмизация и решение задач Понятие алгоритма
- •Словесное описание
- •Блок-схема
- •Описание Блоков
- •Псевдокод
- •Реализация алгоритмических конструкций в с# Следование
- •Ветвление
- •Ветвление и условный оператор
- •Вложенные условия
- •Применение логических операций
- •Цикл Пока
- •Цикл Делать-Пока
- •Цикл с параметром
- •Прерывание и возобновление цикла
- •Оператор goto
- •Особые виды циклов
- •Сложные типы данных – массивы чисел и символов Одномерные массивы
- •Использование оператора foreach
- •Типы задач обработки одномерных числовых массивов
- •Многомерные массивы
- •Типы задач обработки двумерных числовых массивов
- •Невыровненные (ступенчатые) массивы
- •Обработка массива символов
- •Работа с текстовыми строками
- •Базовые операции со строками
- •Методы типа string
- •Форматирование текстовых строк
- •Функции
- •Описание и использование функций
- •Возвращаемые значения
- •Передача параметров
- •Массивы параметров
- •Передача параметров по ссылке и по значению
- •Выходные параметры
- •Область действия переменных
- •Глобальные переменные
- •Область действия переменных и управляющие конструкции
- •Рекурсия
- •Структуры
- •Работа с текстовыми файлами
- •Работа с двоичными файлами
Обработка массива символов
Символьный тип char неплохо подходит для работы с массивами букв. Каждая переменная char в C# занимает 2 байта и определяет один символ. Каждый символ имеет свой код, который определяется используемой кодировкой. В языке С# используется кодировка UNICODE.
Таким образом установливается взаимооднозначная зависимость символов с целыми положительными числами. Это позволяет проводить явное преобразование типа char в целочисленные типы, и наоборот.
char ch=' ';
int n=(int)ch;
int n=32;
char ch=(char)n;
Использование кодов символов позволяет сводить массивы символов к массивам целых чисел.
В качестве примера приведем пример программы, которая выводит код каждого символа в введенной строке:
static void Main(string[] args)
{
char[] str = new char[80];
int i = 0;
char bukva;
bukva = Console.ReadKey().KeyChar; // Считываем первый символ
while(bukva != '.')
{
str[i] = bukva;
i++;
// Считываем следующий символ
bukva = Console.ReadKey().KeyChar;
}
for (i = 0; i < str.Length; i++)
{
Console.WriteLine(str[i] + " = " + (int)str[i]);
}
Console.ReadLine();
}
Ввод символа с консоли осуществляется с помощью метода ReadKey(). К сожалению, просто вызвать этот метод недостаточно, т.к. он возвращает не просто прочитанный с клавиатуры символ, а объект стандартного класса ConsoleKeyInfo. Это сделано разработчиками .NET для обеспечения работы со всеми клавишами, в том числе и функциональными. Нам эта возможность не нужна, достаточно получить код нажатого символа. Для этого нужно воспользоваться свойством KeyChar класса ConsoleKeyInfo:
Для ввода всех обрабатываемых символов и завершения программы при вводе точки используется цикл while. Первый символ вводится отдельно перед началом цикла, что позволяет легко задать условие завершения цикла, все остальные вводятся внутри цикла перед его повторением.
Работа с текстовыми строками
Практически в любом языке программирования предусмотрен набор стандартных функций, предназначенных для работы с текстовыми строками. Эти функции позволяют объединять строки, выделять из строк фрагменты, менять строчные буквы на прописные и обратно, искать в строках другие строки и произвольные символы и т. д.
Для представления текстовых строк в библиотеке классов Microsoft .NET Framework имеется класс System.String. Вместе с набором операций, методов и индексаторов этот класс представляет собой мощное средство обработки строк.
Что же касается программ С#, то все операции с текстовыми строками выполняются только при помощи методов, предусмотренных в соответствующих классах библиотеки Microsoft .NET Framework.
Строка схожа с массивом элементов, которые мы можем читать, но не изменять. Предположим, что мы объявляем и инициализируем строку следующим образом:
string s = "abcdefghij";
Мы можем получить доступ к каждому символу строки и напечатать его с помощью такого цикла:
for(int i = 0; i < s.Length; i++)
{
Console.WriteLine("Element {0} = {1}", i, s[i]);
}
Строки не считаются массивами.
s[3] = 'х'; //Неверная попытка заменить букву d на букву х
Присваивание является неверным, потому что переменные строкового типа являются неизменяемыми — их нельзя модифицировать. Для того чтобы создать новое строковое значение, необходимо создавать новый экземпляр строкового типа.
