- •Введение
- •Контрольная работа № 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
Соответствие формальных и фактических аргументов
Между списком формальных и списком фактических аргументов должно выполняться соответствие по числу, порядку следования, типу и виду аргументов.
Если в первом списке n формальных аргументов, то фактических аргументов должно быть не меньше n (соответствие по числу).
Каждому i-му формальному аргументу ставится в соответствие i-й фактический аргумент.
Если последний формальный аргумент объявлен с ключевым словом params, то ему ставятся в соответствие все оставшиеся фактические аргументы (по порядку).
Если формальный аргумент объявлен с ключевым словом ref или out, то фактический аргумент должен сопровождаться таким же ключевым словом в точке вызова.
Если формальный аргумент объявлен с типом T, то выражение, задающее фактический аргумент, должно быть согласовано по типу с типом T:
- допускает преобразование к типу T;
- совпадает c типом T или является его потомком.
Если формальный аргумент является выходным или обновляемым, то соответствующий фактический аргумент не может быть выражением, поскольку используется в левой части оператора присваивания; следовательно, он должен быть именем, которому можно присвоить значение.
В момент вызова метода выполнение начинается с вычисления фактических аргументов.
Ключевым словом ref полезно в целях экономии памяти снабжать и входные аргументы. В этом случае не будет создаваться копия аргумента, за счет чего экономятся память и время, что важно при работе со сложными и объемными типами данных.
Функции с побочным эффектом
Функция называется функцией с побочным эффектом, если помимо результата, вычисляемого функцией и возвращаемого ей в операторе return, она имеет выходные аргументы с ключевыми словами ref и out.
// Функция с побочным эффектом
static int f(ref int a)
{
return(a++);
}
static void Main(string[] args)
{
long p=1;
int[] p2={1, 2, 3};
int pin=3;
A(out p,pin);
Console.WriteLine(p);
A(out p, p2);
Console.WriteLine(p);
double pd, p3d=2;
double [] p4d={2,3,4};
A(out pd, p3d);
Console.WriteLine(pd);
A(out pd,p4d);
Console.WriteLine(pd);
f(ref pin);
Console.WriteLine(pin);
}
Хороший стиль объектно-ориентированного программирования не рекомендует использование таких функций.
Выражения, использующие функции с побочным эффектом, могут потерять свои прекрасные свойства, присущие им в математике. Если f(a) - функция с побочным эффектом, то a+f(a) может быть не равно f(a) +a, т.е. теряется коммутативность операции сложения.
Тест демонстрирует потерю коммутативности сложения при работе с такой функцией:
static int f(ref int a)
{ return(a++); }
static void TestSideEffect()
{
int a = 0, b=0, c=0;
a =1; b = a + f(ref a);
a =1; c = f(ref a)+ a;
Console.WriteLine("a={0}, b={1}, c={2}",a,b,c);
}
Рис. 18. Результаты работы метода с побочным эффектом
Функция Main()
Функция является точкой входа в приложение на C#.
Существуют 4 различные сигнатуры, которые можно использовать для Main()
static void Main()
static void Main(string[] args)
static int Main()
static int Main(string[] args)
args – получает параметры командной строки.
Чтобы задать аргументы командной строки, надо открыть окно Properties для приложения, выбрать страницу Configuration Properties/Debugging и в поле Command Line ввести через пробел аргументы.
Рис. 19. Определение аргументов командной строки
static void Main(string[] args)
{
Console.WriteLine("{0} аргументов в командной строке", args.Length);
foreach( string s in args)
Console.WriteLine(s);
}
Рис. 20. Вывод аргументов командной строки