Часть I. Базовые сведения о программировании на языке C#
этой переменной. И тогда все, что станет записываться в эту перемен-
ную в теле функции, попадет не на полочку в стек и не останется в са-
мой функции, а окажется в переменной вне функции и станет доступно
другим.
По правилам класса ссылка-переменная для статической функции
должна быть тоже статической. Поэтому переменная
str
, из которой
будет идти ввод строки внутри
getline()
, имеет атрибут
static
. Кстати,
все эти моменты контролирует компилятор, и если вы что-то нарушите
из правил, увидите ошибки компиляции. Алгоритм
getline()
очень
простой: вводится строка стандартным оператором
ReadLine()
в строку-
параметр ссылочного типа
str
. Вычисляется длина строки и помещает-
ся в
i
. Проверяется, чтобы длина не превосходила заданного лимита,
который конкретно определен в переменной
lim
. Когда вы пишете
lim
вместо параметра в заголовок функции (пусть вас не смущает одинако-
вое название параметра и передаваемого значения, это разные перемен-
ные, т. к. у них разная память: у одной — в стеке
Main()
, у другой —
в стеке
getline()
; если вас это смущает, дайте им разные имена), то
значение этого
lim
кладется на полочку в стек
getline()
для ее второго
параметра.
Рис. 4.1.
Ввод строки с ограничением ее длины
Глава 4. Функции
93
Если вы ввели больше символов, чем определено в
lim
, счетчику
i
ко-
личества введенных символов присваивается ноль, иначе он остается
равным длине введенной строки.
Результат работы функции
getline()
показан на рис. 4.1.
Оператор
if
В этой программе нам встретился новый оператор
if
. Это оператор
управления потоком выполнения команд программы. От точки входа в
программу команды программы выполняются последовательно одна за
другой, пока не встретят специальных команд, нарушающих естествен-
ный ход выполнения программы. Одним из таких нарушителей является
оператор
if
. Он передает управление на дальнейшее выполнение про-
граммы в зависимости от выполнения условия, которое у этого операто-
ра находится в его заголовке. То есть у
if
имеется заголовок, как
у
while
с абсолютно одинаковым смыслом, и точно с таким же смыслом
тело, заключенное в такие же фигурные скобки. И так же, как и у
while
,
если условие в заголовке истинное, то выполняется тело, а если ложное,
тело не выполняется, а выполняется следующий за телом оператор про-
граммы. Например,
if(
условие-выражение
)
{
Операторы тела
}
Продолжение программы
Но у этого оператора есть довески. Один из них — необязательный
else
. Он имеет такую же форму, что и
if
, но пишется сразу за телом
if
.
Смысл его в альтернативе
if
: если условие в
if
не выполняется, то
управление передается на
else
и начинает выполняться его тело. Чита-
ется так: "Если условие
if
выполняется, то выполняется тело
if
, ина-
че — тело
else
".
А второй необязательный довесок —
if
else
. При сложных условиях
пары
if...else
недостаточно. Например, надо проверить содержимое
переменной
a
, которая может принимать несколько значений. Тогда
придется писать:
if (a == a1)
тело 1
else if(a == a2)
тело 2
94
Do'stlaringiz bilan baham: |