Хелпикс

Главная

Контакты

Случайная статья





Пример функции, которая не возвращает значение



 

Функция являет собой небольшую подпрограмму. Если просто программа - это решение какой-то прикладной задачи, то функция – это тоже решение, только уже в рамках программы и, соответственно, она выполняет задачу «попроще». Функции позволяют уменьшить размер программы за счет того, что не нужно повторно писать какой-то фрагмент кода - мы просто вызываем сколько угодно и где нужно объявленную функцию.

Функции в Си-шарп также называют методами. Между этими двумя понятиями разница небольшая, и тут мы будем использовать термин функция.

До этого, мы весь код писали в функции main. Функция main является главной функцией приложения и точкой входа программы. Любая функция в Си-шарп может быть объявлена только в рамках класса, так как C# - полностью объектно-ориентированный язык программирования (ООП). Объявление пользовательской функции внутри другой функции (например main) недопустимо. Объявление функции имеет следующую структуру:

[модификатор доступа] [тип возвращаемого значения] [имя функции] ([аргументы])
{
// тело функции
}

Модификатор доступа
(области видимости) может быть public, private, protected, internal. Для чего это нужно будем говорить в отдельном уроке, а пока будем везде использовать public.

Между модификатором и типом может стоять ключевое слово static, что означает, что функция будет статичной. Подробно говорить о статичных функциях и переменных мы будем в отдельном уроке. Скажу только, что из статичной функции можно вызывать другие функции, если они тоже статичные. Главная функция main – всегда static, поэтому все функции в этом уроке мы будем объявлять также статичными.

Функция может возвращать значение или не возвращать. Если функция, например, возвращает целое число, то нужно указать тип int. Если функция не возвращает никакого значения, то для этого используется ключевое слово void. Функции, которые не возвращают значение, еще называют процедурами.

Называть функции стоит так, чтобы имя отображало суть функции. Используйте глаголы или словосочетания с глаголами. Примеры: GetAge(), Sort(), SetVisibility().

Аргументы – это те данные, которые необходимы для выполнения функции. Аргументы записываются в формате [тип] [идентификатор]. Если аргументов несколько, они отделяются запятой. Аргументы могут отсутствовать.

Первая строка функции, где указываются тип, имя, аргументы и т.д. называется заголовком функции.

Итак, хватит теории, переходим к практике.

Пример функции, которая не возвращает значение

Напишем простую функцию, которая будет заменять в массиве строк указанное имя на другое. Данная функция будет принимать три аргумента: массив строк, имя, которое необходимо заменить и новое имя. Так как функция не будет возвращать значение, указываем тип void перед именем функции.

 

public static void ReplaceName(string[] names, string name, string newName)
{
for (int i=0; i < names.Length; i++)
{
if (names[i] == name)
names[i] = newName;
}
}


Сама функция очень простая. Проходим в цикле по элементам и смотрим, равен ли элемент указанному имени. Если да, то заменяем его на новое имя.

Функция написана, и теперь используем её:

 

class Program
{
public static void ReplaceName(string[] names, string name, string newName)
{
for (int i=0; i < names.Length; i++)
{
if (names[i] == name)
names[i] = newName;
}
}
static void Main(string[] args)
{
string[] names = { "Sergey", "Maxim", "Andrey", "Oleg", "Andrey", "Ivan", "Sergey" };
ReplaceName(names, "Andrey", "Nikolay"); // вызов функции. Все строки "Andrey" в массиве будут заменены на "Nikolay"
ReplaceName(names, "Ivan", "Vladimir");
}
}

После вызова функции два раза в этой программе, массив будет выглядеть так: "Sergey", "Maxim", " Nikolay ", "Oleg", " Nikolay ", " Vladimir ", "Sergey".


Пример функции, которая возвращает значения

Напишем функцию, которая будет находить максимальное число в массиве. Аргумент у этой функции будет один – массив целых чисел. Тип возвращаемого значения – целое число int.

 

public static int GetMax(int[] array)
{
int max = array[0];
for (int i = 1; i < array.Length; i++)
{
if (array[i] > max)
max = array[i];
}
return max;
}


Логика функции проста. Создаем переменную max, в которую записываем первый элемент массива. Дальше в цикле сравниваем каждый элемент со значением в max, если элемент больше, чем max, то записываем в max этот элемент. В конце функции используем оператор return, чтобы вернуть наш результат.

Оператор return должен быть обязательно в функции, которая возвращает значение.

Используем нашу функцию:

 

class Program
{
public static int GetMax(int[] array)
{
int max = array[0];
for (int i = 1; i < array.Length; i++)
{
if (array[i] > max)
max = array[i];
}
return max;
}
static void Main(string[] args)
{
int[] numbers = { 3, 32, 16, 27, 55, 43, 2, 34 };
int max;
max = GetMax(numbers); //вызов такой функции можно использовать при присваивании значения
Console.WriteLine(GetMax(numbers)); // вызов функции также можно использовать как аргумент при вызове другой функции. WriteLine() – тоже функция.
Console.ReadKey();
}
}

Оператор return

Когда встречается этот оператор, происходит выход из функции и код ниже (если он есть) выполняться не будет (например, в функцию передан такой аргумент, при котором нет смысла выполнять функцию). Он похож на оператор break, который используется для выхода из циклов. Этот оператор также можно использовать и в функциях, которые не возвращают значение. Оператор return допустимо использовать несколько раз в функции, но этого делать не рекомендуется.

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.