Глава 4. Функции
105
Последним оператором в теле
switch
стоит
default
, имеющий структу-
ру
case
. Он замыкает ситуацию с проверкой конкретных значений
switch
-переменной. В этот блок попадают все прочие случаи, не попав-
шие в конкретные
case
. Здесь можно при необходимости задавать свою
функциональность для случая "прочие варианты".
Следует отметить один малоприятный момент: выходные параметры
(с квалификатором
out
) не могут получать свои значения в теле
switch
:
компилятор выдает ошибку, сообщающую, что эти переменные не оп-
ределены.
Процесс ввода зациклен с помощью оператора
while
. Цикл — беско-
нечный, т. к. в заголовке
while
стоит значение
true
(условие всегда вы-
полняется). Для выхода из цикла применен
break
, который выполняется
после нажатия комбинации клавиш +. Результат работы при-
ложения показан на рис. 4.5.
Рис. 4.5.
Демонстрация работы оператора
switch
Область действия переменных
Все переменные, объявленные в теле функции, называются
локальными
и "живут", пока "живет" сама функция. Как только функция перестает
выполняться, значения ее локальных переменных теряются. То есть
106
Часть I. Базовые сведения о программировании на языке C#
каждый раз при вхождении в функцию такие переменные получают
значения, а при выходе из функции эти значения теряются. Как же за-
ставить некоторые переменные сохранять свои значения после выхода
из функции? Лучше всего это делать, объявив переменную выходным
параметром.
Рекурсивные функции
Рекурсивные
функции
— такие функции, которые могут вызывать сами
себя. При этом каждый раз под каждый вызов создается совершенно
новый набор локальных переменных, отличный от набора вызывающей
(т. е. этой же) функции. Рекурсия применяется при обработке так назы-
ваемых "рекуррентных" (основанных на рекурсии) формул. Одной из
таких формул является, например, формула вычисления факториала
числа:
n
! = (
n
– 1)!
×
n
, где 0! = 1. Чтобы вычислить факториал на шаге
n
, надо воспользоваться факториалом, вычисленным на шаге
n
– 1. Ре-
курсивная функция, реализующая алгоритм для вычисления факториа-
ла, представлена в листинге 4.6.
Листинг 4.6
int fact(int i)
{ if(i==0)
return(i+1);
else
{ i=i * fact(i-1);
return(i);
}
}
ГЛ А В А
5
Массивы
Массив
— удобное средство работы с однотипными данными. Все они
могут быть собраны в конструкцию, называемую массивом, и располо-
жены в удобном для пользователя порядке. То есть помещать и доста-
вать данные, пользуясь такой конструкцией удобно. Представьте себе
кошелек, в котором есть отсек, где хранятся разбитые по ячейкам некие
данные. Вы открыли кошелек, посмотрели в нужный отсек и поместили
туда или достали оттуда сразу то, что вам необходимо. В массиве могут
быть, повторим, только данные одного типа: целые числа со знаком,
числа с плавающей точкой (это уже другой массив, т. к. тип данных
другой), строки текста, какие-то иные объекты (например, дома одной
серии; так мы уже подходим к объектно-ориентированному программи-
рованию).
Одномерные массивы
Каждый элемент массива имеет свой
индекс
(целое число от нуля до
максимального количества элементов массива минус единица). По это-
му индексу можно обращаться к массиву и работать с соответствующим
этому индексу элементом. То есть фактически элементы массива про-
нумерованы. Счет начинается от нуля (первый элемент). Последний
элемент имеет номер, равный максимальному количеству элементов
массива минус единица. Вот эти номера и есть индексы. Количество
элементов массива называют его
размером
. Например, массив из
100 чисел с плавающей точкой. Его размер равен 100. А элементы про-
нумерованы числами (т. е. индексами) от 0 до 99.
Если заранее известно количество элементов массива, то его размер
можно задать константой, равной количеству элементов. Зная тип эле-
108
Do'stlaringiz bilan baham: |