- •Введение
- •Контрольная работа № 1 разработка приложений в microsoft visual studio 2008
- •Теоретические сведения Интерфейс Microsoft Visual Studio 2008
- •Создание консольного приложения
- •Построение xml-отчета по выполненному проекту
- •Создание приложения Windows Forms
- •Контрольные вопросы
- •Содержание и порядок выполнения работы
- •Контрольная работа № 2
- •Теоретические сведения Структура программы. Переменные и выражения
- •Литеральные константы
- •Операции и их старшинство
- •Операторы c#
- •If(выражение1) if(выражение2) if(выражение3) ...
- •Контрольные вопросы
- •Содержание и порядок выполнения работы
- •Примеры решения задач
- •Контрольная работа № 3 техника работы с массивами. Процедуры и функции
- •Теоретические сведения
- •Базовый класс для массивов
- •Процедуры и функции
- •Синтаксис методов
- •Формальные и фактические аргументы
- •Соответствие формальных и фактических аргументов
- •Функции с побочным эффектом
- •Функция Main()
- •Контрольные вопросы
- •Содержание и порядок выполнения работы
- •Примеры решения задач
- •Контрольная работа № 4 перечисления и структуры
- •Теоретические сведения
- •Базовый класс перечислений - System.Enum
- •Структуры
- •Контрольные вопросы
- •Содержание и порядок выполнения работы
- •Пример решения задачи
- •Контрольная работа № 5 обработка символов и строк
- •Теоретические сведения
- •Контрольные вопросы
- •Содержание и порядок выполнения работы
- •Примеры решения задачи
- •Контрольная работа № 6 проектирование классов. Составление программ с использованием ооп
- •Теоретические сведения
- •Контрольные вопросы
- •Содержание и порядок выполнения работы
- •Пример решения задачи
- •Заключение
- •Библиографический список
- •Оглавление
- •394026 Воронеж, Московский просп., 14
Синтаксис методов
Синтаксически в определении метода различают две части - заголовок и тело метода:
<заголовок_метода> {<тело_метода>}
Например:
void A() {...};
int B(){...);
public void C(){...};
Синтаксис заголовка метода:
[<атрибуты>][<модификаторы>] <типРезультатаФункции> <имя_метода> ([<списокФормАрг>])
Квадратные скобки показывают, что атрибуты и модификаторы могут быть опущены при описании метода.
Обязательным при описании заголовка является указание типа результата, имени метода и круглых скобок, даже если сам список формальных аргументов отсутствует.
Для различения методов очень часто используют такой термин как сигнатура метода. Всегда следует относиться внимательно к этому словосочетанию и рассматривать его в контексте. Сам термин «сигнатура» необходим для перегрузки (overload) и переопределения (override) методов.
В литературе есть различные трактовки сигнатуры. Например, сигнатура задает: возвращаемое значение метода и список формальных аргументов [5]; имя метода и список формальных аргументов [4]; параметры и возвращаемое значение функции [2].
В сигнатуру не входят имена формальных аргументов т.к. важны лишь их типы.
Формальные и фактические аргументы
Синтаксис объявления формального аргумента таков:
[ref | out | params] <типАргумента> <имяАргумента>
Обязательным является указание типа и имени аргумента.
Тип аргумента быть любым скалярным типом, массивом, классом, структурой, интерфейсом, перечислением, функциональным типом.
Можно при вызове метода передавать ему произвольное число фактических аргументов. Для этого в списке формальных аргументов необходимо задать ключевое слово params.
Оно задается 1 раз и указывается только для последнего аргумента списка, объявляемого как массив произвольного типа.
При вызове метода этому формальному аргументу соответствует произвольное число фактических аргументов.
Все аргументы метода разделяются на три группы:
- входные,
- выходные (out),
- обновляемые (ref).
Аргументы первой группы передают информацию методу, их значения в теле метода только читаются.
Аргументы второй группы представляют собой результаты метода, они получают значения в ходе работы метода. Выходные аргументы всегда объявляться с ключевым словом out.
Если аргумент объявлен с ключевым словом out, то в теле метода обязательно должен присутствовать оператор присваивания, задающий значение этому аргументу. В противном случае возникает ошибка компиляции. Более того, ошибка возникает, если со словом out объявлены по сути обновляемые параметры.
Аргументы ref более гибкие и объединяют оба действия. Обновляемые аргументы всегда должны сопровождаться ключевым словом ref.
Рассмотрим различные виды параметров на примере перегруженных методов. Перегруженные методы имеют одно и то же имя, но различаются списком параметров. Важно, что нельзя перегружать методы, различающиеся только возвращаемыми значениями. Методы имеют имя А() и рассчитывают сумму кубов произвольного числа аргументов.
static void A(out long p2, int p1)
{
p2 =(long) Math.Pow(p1,3);
Console.WriteLine("Метод A-1");
}
static void A(out long p2, params int[] p)
{
p2=0;
for(int i=0; i <p.Length; i++)
p2 += (long)Math.Pow(p[i],3);
Console.WriteLine("Метод A-2");
}
static void A(out double p2, double p1)
{
p2 = Math.Pow(p1,3);
Console.WriteLine("Метод A-3");
}
static void A(out double p2, params double[] p)
{
p2=0;
for(int i=0; i <p.Length; i++)
p2 += Math.Pow(p[i],3);
Console.WriteLine("Метод A-4");
}
В примере все методы - процедуры. Первый аргумент у всех четырех перегруженных методов – выходной (записывается со словом out), в теле метода ему присваивается вычисленное значение.
2 метода используют ключевое слово params для последнего аргумента. При вызове этих методов указанному аргументу будет соответствовать несколько фактических аргументов, число которых может быть произвольным. Заранее можно сказать, что массивы – аргументы метода не обязательно снабжать словом params.
Если мы работаем с функцией, то в теле функции должен быть хотя бы один оператор, возвращающий значение функции: return (<Выражение>).
Переменные, описанные в блоке, локализованы в нем: живут и видны только внутри него.
Если вызвать процедуру в выражении, то возникнет ошибка компиляции.
Вызов процедуры или функции имеет один и тот же синтаксис:
<имяМетода>([<списокФактическихАргументов>])
Формальный аргумент, задаваемый при объявлении метода - это всегда имя аргумента (идентификатор). Фактический аргумент - это выражение, значительно более сложная синтаксическая конструкция. Синтаксис фактического аргумента:
[ref | out] <выражение>