Г. Шилдт - С# 3.0 Полное руководство. 2010 (1160798), страница 11
Текст из файла (страница 11)
Исхолное значение гнат: 100 Исходное значение очаг: 100 Значение ьчат после деления: 33 Значение бчат после деления: 33.3333333333333 Как видите, при делении значения переменной 1чаг типа 1пг на 3 остается лишь целая часть результата — 33, а дробная его часть теряется. В то же время при делении значения переменной бчаг типа бопЬ1е на 3 дробная часть результата сохраняется. Как демонстрирует данный пример программы, в числовых значениях с плавающей точкой следует использовать обозначение самой десятичной точки. Например, значение 100 в СФ считается целым, а значение 100,0 — с плавающей точкой. В данной программе обнаруживается еще одно новое свойство.
Для вывода пустой строки достаточно вызвать метод Иг1геп1пе () без аргументов. Типы данных с плавающей точкой зачастую используются в операциях с реальными числовыми величинами, где обычно требуется дробная часть числа. Так, приведенная ниже программа вычисляет площадь круга, используя значение 3,1416 числа "пи". // Вычислить плошадь круга.
пзгпд Буягеш) с1аяя С1тс1е ( ясас1с ноги Мата() ( бооЬ1е габгоя) бооЬ1е агеа; габ1оз = 10.0) агеа = таб1оя * табьая * 3.1416) сопяо1е.игггеьгпе("площадь равна " + агеа) ) Выполнение этой программы дает следующий результат: Площадь равна 314.1б Очевидно, что вычисление площади круга не дало бы удовлетворительного результата, если бы при атом не использовались данные с плавающей точкой.
54 Часть (. Язык С№ Два управляющих оператора Выполнение программы в методе происходит последовательно от одного оператора к другому, т.е. по цепочке сверху вниз. Этот порядок выполнения программы можно измеиить с помощью различных управляющих операторов, поддерживаемых в С№. Более подробно управляющие операторь) будут рассмотрены в дальнейшем, а здесь оии представлены вкратце, поскольку используются в последующих примерах программ. Условный оператор С помощью условного оператора 1Е в С№ можно организовать выборочное выполиеиие части программы. Оператор ЕЕ действует в С№ практически так же, как и оператор 1Р в любом другом языке программирования.
В частности, с точки зрения синтаксиса ои тождествен операторам ЕЕ в С, С++ и )ача. Ниже приведена простейшая форма этого оператора. 1Е(условие) оператор; Здесь условие представляет собой булево, т.е. логическое, выражение, принимающее одно из двух значений: "истина" или "ложь". Если условие истинно, то оператор выполняется. А если условие ложно, то выполнение программы происходит, минуя оператор. Ниже приведен пример применения условного оператора.
1Е(10 < 11) Сопео1е.иг1сеиьпе("10 меньше 11"); В данном примере условное выражение принимает истинное значение, поскольку 10 меньше 11, и поэтому метод Ь(г10еп1пе () выполняется. А теперь рассмотрим другой пример: Ее(10 с 9) сопео1е.хгьсеььпе("не подлежит выводу"); В данном примере 10 ие меньше 9.
Следовательно, вызов метода иг1сепйпе() ие произойдет. В С№ определен полный набор операторов отношения, которые можно использовать в условных выражениях. Ниже перечислены все эти операторы и их обозначения. Значение Операция Меньше Меньше ипи равно Больше Больше или равно Равно Не равно Далее следует пример еще одной программы, демонстрирующей применение условного оператора 1Е. // Продемонстрировать применение условного оператора ЕЕ. пэьпд Эузсешт с1ене 1ЕПешо ( есасьс то1к( Маьп() ( Глава 2.
Краткий обзор зивмвитов СВ 55 1пка, Ь, с) аГ 2( ь= з) ка (а < Ь) Сопзо1е.нгькеъапе ("а меньше Ь" ) ) // Не подлежит выводу. ьа(а == Ь) Сопзо1е.и<1кеьгпе("этого никто не увидит"); Сопзо1е.иг1сеътпе()) с = а — Ь) // с содержит -1 Сопзо1е.иг1кетвпе("с содержит -1")) ьв(с >= О) сопзо1е.х<1сеьапе("значение с неотрицательно") ьг(с < О) сопво1е.хгьсеььпе("значение с отрицательно"); Сопво1е.икткеь1пе () т с = Ь вЂ” ат // теперь с содержит 1 сопво1е.хгасетвпе ("с содержит 1") ) 11 (с >= 0) сопво1е.
Игасеььпе (" значение с неотрицательно" ) 1<(с < О) Сопзо1е.нгькеъьпе("значение с отрицательно "); ) Вот к какому результату приводит выполнение данной программы: а меньше Ь с содержит -1 значение с отрицательно с содержит 1 значение с неотрицательно В этой программе обратите внимание на еще один момент. В строке апс а, ь, ст три переменные, а, Ь и с, объявляются списком, разделяемым запятыми. Как упоминалось выше, если требуется объявить две или более переменные одного и того же типа, это можно сделать в одном операторе, разделив их имена запятыми. Оператор цикла Для повторного выполнения последовательности операций в программе можно организовать цикл.
Язык С(т отличается большим разнообразием циклических конструкций. Здесь будет рассмотрен оператор цикла Год. Как и у оператора 1й, у оператора гог в СК) имеются аналоги в С, С++ и ) ача. Ниже приведена простейшая форма этого оператора. ток(инициализация; условие; итерация) оператор В самой общей форме в части инициализация данного оператора задается начальное значение переменной управления циклом.
Часть условие представляет собой булево выражение, проверяющее значение переменной управления циклом. Если результат проверки истинен, то цикл продолжается. Если же он ложен, то цикл завершается. В части 66 часть ). йзнк С» итерация определяется порядок изменения переменной управления циклом на каждом шаге цикла, когда он повторяется. Ниже приведен пример краткой программы, демонстрирующей применение оператора цикла Гог. // Продемонстрировать применение оператора цикла гог.
ияьпч Яуясев; с1аяя ЕогОево ( ясасгс чо»С Иа1п() [ 1пс соипс; Гог(соипс = О) соипг < 5; соипг = соипс+1) Сопяо1е.нгьсевьпе["Это подсчет: " + соипс) Сопяо1е.нг1се11пе("Готово)" ); ) ) Вот как выглядит результат выполнения данной программы: Это подсчет: О Это подсчет: 1 Это подсчет: 2 Это подсчет: 3 Это подсчет: ч Готово! В данном примере соипг выполняет роль переменной управления циклом. В инициализирующей части оператора цикла Гог задается нулевое значение этой переменной. В начале каждого шага цикла, включая и первый, проверяется условие соил г < 5. Если эта проверка дает истинный результат, то выполняется оператор, содержащий метод Нг гсеЬгпе () . Далее выполняется итерационная часть оператора цикла Гог, где значение переменной соипс увеличивается на 1.
Этот процесс повторяется до тех пор, пока значение переменной соил с не достигнет величины 5. В этот момент проверка упомянутого выше условия дает ложный результат, что приводит к завершению цикла. Выполнение программы продолжается с оператора, следующего после цикла. Любопытно, что в программах, профессионально написанных на С», вы вряд ли увидите итерационную часть оператора цикла в том виде, в каком она представлена в приведенном выше примере программы, т.е. вы редко встретите следующую строку; соил< = соил< + 1) Дело в том, что в С» имеется специальный оператор инкремента, выполняю)ций приращение на 1 значения переменной, или так называемого операнда. Этот оператор обозначается двумя знаками + (тт).
Используя оператор инкремента, можно переписать приведенную выше строку следующим образом: соипс++; Таким образом, оператор цикла йог из приведенного выше примера программы обычно записывается в следующем виде: гог(соипг " О; соипг < 5; соипг++) Опробуйте этот более краткий способ записи итерационной части цикла. Вы сами можете убедиться, что данный цикл выполняется так же, как и прежде.
Глава 2, Краткий обзор элементов СВ 57 В С(т имеется также оператор декремента, обозначаемый двумя дефисами 1 — ). Этот оператор уменьшает значение операнда на Е Использование кодовых блоков Еще одним важным элементом С() является кодовый блок, который представляет собой группу операторов. Для его организации достаточно расположить операторы между открывающей и закрывакнцей фигурными скобками. Как только кодовый блок будет создан, он станет логической единицей, которую можно использовать в любом месте программы, где применяется одиночный оператор. В частности, кодовый блок может служить адресатом операторов 1г и гог. Рассмотрим следующий оператор 11: 11(н < П) ( у = и * Ьт и = От ) Если в данном примере кода значение переменной и меньше значения переменной и, то оба оператора выполняются в кодовом блоке. Они образуют в кодовом блоке логическую единицу, причем один не может выполняться без другого.
Таким образом, если требуется логически связать два (или более) оператора, то для этой цели следует создать кодовый блок. С помо)цью кодовых блоков можно более эффективно и ясно реализовать многие алгоритмы. Ниже приведен пример программы, в которой кодовый блок служит для того, чтобы исключить деление на нуль. // Продемонстрировать применение кодового блока. паапа Яуяселп с1аяя В1осхпеюо ( якав1с то1т) Маап () ( гпсг, 1, б) 1=5т б = 10т // адресатом етого оператора 11 слуямт кодовый блок.
11(1 != О) ( сопяо1е.хг1сеь1пе("1 не равно нулю")! о = 1 / ).; Сопяо1е.нтьветапе("5 / 1 равно " + б); Вот к какому результату приводит выполнение данной программы: 1 не равно нулю б / 1 равно 2 В данном примере адресатом оператора 12 служит кодовый блок, а не единственный оператор. Если условие, управляющее оператором 12, оказывается истинным, то выпол- 58 Часть (. Язык С№ няются три оператора в кодовом блоке.