1629295407-c61bfe4caba98380ea3e7cdae6295416 (846200), страница 10
Текст из файла (страница 10)
Операторинкремента обозначается двумя последовательными знаками “плюс” (++). С его помощьюпредыдущую инструкцию можно переписать следующим образом:count++;Следовательно, начало цикла for в предыдущей программе опытный программистоформил бы так:for(count = 0; count < 5; count++)Если вам захочется выполнить предыдущую программу, используя операторинкремента, вы убедитесь, что результат останется прежним.В C# также предусмотрен оператор декремента (--). Нетрудно догадаться, что этотоператор уменьшает значение операнда на единицу.Использование блоков кодаНе менее важным, чем инструкции управления, элементом языка C# являетсяпрограммный блок. Программный блок представляет собой группирование двух или болееинструкций.
Такое группирование инструкций реализуется посредством их заключениямежду открывающей и закрывающей фигурными скобками. После создания блок кодастановится логическим элементом программы, который можно использовать в любом ееместе, где может находиться одна инструкция. Например, блок может быть частью, if- илиfor-инструкций. Рассмотрим следующую if-инструкцию:if(w < h){v = w * h;w = 0;}Здесь сравниваются значения переменных w и h, и если оказывается, что w < h, тобудут выполнены обе инструкции внутри блока.
Следовательно, две инструкции в блокеобразуют логический элемент, в результате чего одна инструкция не может быть выполненабез выполнения другой. Важно то, что, если нужно логически связать две или болееинструкций, это легко реализуется созданием программного блока. Именно благодаряблокам можно упростить код реализации многих алгоритмов и повысить эффективность ихвыполнения.Рассмотрим программу, в которой программный блок используется дляпредотвращения деления на нуль.// Демонстрация использования программного блока.48Часть I. Язык C#using System;class BlockDemo {public static void Main() {int i, j, d;i = 5;j = 10;}}// Эта if-инструкция управляет программным// блоком, а не одной инструкцией.if(i != 0) {Console.WriteLine("i не равно нулю");d = j / i;Console.WriteLine("j / i равно " + d);}Результат выполнения этой программы имеет следующий вид:i не равно нулюj / i равно 2В этом случае if-инструкция управляет программным блоком, а не просто однойинструкцией.
Если управляющее условие if-инструкции окажется истинным (а оно такимздесь и является), будут выполнены все три инструкции, составляющие этот блок.Проведите небольшой эксперимент. Замените в этой программе инструкциюi = 5;инструкциейi = 0;и сравните результат выполнения нового варианта программы со старым.А вот еще один пример. На этот раз программный блок используется для вычислениясуммы чисел от 1 до 10 и их произведения.// Вычисляем сумму и произведение чисел от 1 до 10.using System;class ProdSum {static void Main() {int prod;int sum;int i;}}sum = 0;prod = 1;for(i=1; i <= 10; i++) {sum = sum + i;prod = prod * i;}Console.WriteLine("Сумма равна " + sum);Console.WriteLine("Произведение равно " + prod);В результате выполнения программы получаем следующее:Глава 2.
Обзор элементов языка C#49Сумма равна 55Произведение равно 3628800Здесь (благодаря блоку) в одном цикле вычисляется как сумма чисел, так и ихпроизведение. Без этого средства языка пришлось бы использовать два отдельных forцикла.И еще. Программные блоки не снижают динамику выполнения программ. Другимисловами, наличие фигурных скобок ({ и }) не означает дополнительных затрат времени навыполнение программы. Наоборот, благодаря способности блоков кода упрощатьпрограммирование алгоритмов, повышается скорость и эффективность выполненияпрограмм в целом.Использование точки с запятой и оформлениетекста программыВ C# точка с запятой означает конец инструкции, т.е. каждая отдельная инструкциядолжна оканчиваться точкой с запятой.Как вы уже знаете, блок — это набор логически связанных инструкций, заключенныймежду открывающей и закрывающей фигурными скобками.
Поскольку каждая изинструкций блока завершается точкой с запятой, то признаком завершения самого блокаявляется закрывающая фигурная скобка (а не точка с запятой).C# не распознает конец строки как конец инструкции; признаком конца инструкциислужит только точка с запятой, поэтому расположение инструкции в строке не имеетзначения. Например, в C# следующий фрагмент кодаx = y;y = y + 1;Console.WriteLine(x + " " + y);абсолютно идентичен представленному в виде одной строке.x = y; y = y + 1; Console.WriteLine(x + " " + y);Более того, различные элементы инструкции можно расположить на отдельныхстроках. Например, следующая запись инструкции абсолютно приемлема.Console.WriteLine("Это длинная текстовая строка" +x + y + z +"другие данные, подлежащие выводу");Подобное разбиение длинных программных строк часто позволяет сделатьпрограмму более читабельной.Использование отступовГлядя на текст предыдущих программ, вы, вероятно, заметили, что некоторыеинструкции записаны с отступами от левого края.
C# — это язык, допускающий свободнуюформу записи инструкций, т.е. не имеет значения, как расположены инструкции на строкеотносительно друг друга. Однако у программистов выработался определенный стильоформления программ, который позволяет сделать программу максимально читабельной.Программы, представленные в этой книге, оформлены с соблюдением этого стиля, чторекомендуется делать и вам. Согласно этому стилю, после каждой открывающей фигурнойскобки следует делать отступ (в виде нескольких пробелов), а после каждой закрывающейфигурной скобки — возвращаться назад (к предыдущему уровню отступа).
Для некоторыхинструкций рекомендуется делать дополнительный отступ, но об этом речь впереди.50Часть I. Язык C#Ключевые слова C#В языке C# на данный момент определено 77 ключевых слов, которые перечислены втабл. 2.1. Эти ключевые слова (в сочетании с синтаксисом операторов и разделителей)образуют определение языка C#. Ключевые слова нельзя использовать в качестве именпеременных, классов или методов.Таблица 2.1. Ключевые слова C#abstractasbaseboolbreakbytecasecatchcharcheckedclassconstcontinuedecimaldefaultdelegatedodoubleelseenumeventexplicitexternfalsefinallyfixedfloatforforeachgotoifimplicitinintinterfaceinternalislocklongnamespacenewnullobjectoperatoroutoverrideparamsprivateprotectedpublicreadonlyrefreturnsbytesealedshortsizeofstackallocstaticstringstructswitchthisthrowtruetrytypeofuintulonguncheckedunsafeushortusingvirtualvolatilevoidwhileИдентификаторыВ C# идентификатор представляет собой имя, присвоенное методу, переменной илииному элементу, определенному пользователем.
Идентификаторы могут состоять из одногоили нескольких символов. Имена переменных должны начинаться с буквы или символаподчеркивания. Последующим символом может быть буква, цифра и символподчеркивания. Символ подчеркивания можно использовать для улучшения читабельностиимени переменной, например line_count. В C# прописные и строчные буквывоспринимаются как различные символы, т.е. myvar и MyVar — это разные имена. Вотнесколько примеров допустимых идентификаторов.Testxу2MaxLoadup_topmy_varsample23Помните, что идентификатор не должен начинаться с цифры.
Например, 12х —недопустимый идентификатор. Конечно, вы вольны называть переменные и другиепрограммные элементы по своему усмотрению, но обычно идентификатор отражаетназначение или смысловую характеристику элемента, которому он принадлежит.Глава 2. Обзор элементов языка C#51Несмотря на то что в C# нельзя использовать ключевые слова в качествеидентификаторов, любое ключевое слово можно “превратить” в допустимыйидентификатор, предварив его символом “@”. Например, идентификатор @fоr вполнепригоден для употребления в качестве допустимого C#-имени. Интересно, что в этомслучае идентификатором все-таки является слово for, а символ @ попросту игнорируется.Теперь самое время рассмотреть программу, в которой используется @-идентификатор.// Демонстрируем использование @-идентификатора.using System;class IdTest {static void Main() {int @if; // Используем if в качестве идентификатора.}}for(@if = 0; @if < 10; @if++)Console.WriteLine("@if равно " + @if);Результат выполнения этой программы доказывает, что @if действительноинтерпретируется как идентификатор.@if равно 0@if равно 1@if равно 2@if равно 3@if равно 4@if равно 5@if равно 6@if равно 7@if равно 8@if равно 9Однако (за исключением специальных случаев) использование ключевых слов вкачестве @-идентификаторов не рекомендуется.
Кроме того, символ @ может стоять вначале любого идентификатора (а не только созданного из ключевого слова), но это такжене считается хорошим стилем программирования.Библиотеки классов C#В примерах программ, представленных в этой главе, использовано два встроенныхC#-метода — WriteLine() и Write(). Как упоминалось выше, эти методы — членыкласса Console, который является частью пространства имен System, определенного вбиблиотеках классов среды .NET Framework.
Вы уже знаете, что C#-среда опирается набиблиотеки классов среды .NET Framework, что позволяет ей обеспечить поддержкуопераций ввода-вывода, обработку строк, сетевые возможности и графические интерфейсыпользователя (GUIs). Таким образом, C# в целом — это объединение самого языка C# (егоязыковых элементов) и классов .NET-стандарта. Как будет показано ниже, библиотекиклассов существенно повышают функциональность C#-программы. Чтобы статьпрофессиональным C#-программистом, важно научиться эффективно использовать этистандартные классы. В части I мы познакомимся с элементами библиотечных классов .NETстандарта, а детали .NET-библиотеки описаны в части II.52Часть I.