Функции. Вернемся к старой задаче - выводе данных о людях

Вернемся к старой задаче - выводе данных о людях. У нас есть разные люди с данными в виде отдельных фамилии, имени, отчества, которые надо вывести на экран - вида Пушкин Александр Сергеевич и Пушкин А.С. Чтобы задача была правдоподобней можно имитировать ввод данных пользователем или загрузку из внешнего источника, но все это будет пустой тратой времени - реальные приложения все равно работают с графическим и/или веб-интерфейсом. Просто держим в уме что в реальности людей не два, а две тысячи и заранее их имена не известны.

Получаем уродливый код

string name = "Александр";

string otchestvo = "Сергеевич";

string surname = "Пушкин";

string name2 = "Наталья";

string otchestvo2 = "Николаевна";

string surname2 = "Гончарова";

System.Console.WriteLine(surname + " " + name + " " + otchestvo);

System.Console.WriteLine(surname2 + " " + name2 + " " + otchestvo2);

System.Console.ReadLine();

Два раза повторяется один и тот же кусок кода - склеивание трех строк в одну.
Два раза повторяется другой кусок кода - склеивание фамилии, первых букв имени и отчества, точек.

Логичнее всего вынести повторяющиеся куски кода в отдельное место, дать им имя и во всех остальных местах программы вызывать их по этому имени. Иными словами сделать функции - куски кода с собственными именем, которые принимают на вход какие-то данные, что-то с ними делают и возвращают обратно какие-то данные (хотя возможен вариант когда они ничего не принимают и не возвращают, просто что-то делают).

Пример функции

public static string CreateFio(string surname, string name, string otchestvo)

{

string fio = surname + " " + name + " " + otchestvo;

return fio;

}

Слова public static отложим на пару минут в сторону, string означает, что функция вернет назад строку, CreateFio(string surname, string name, string otchestvo) - название функции и описание того, что она принимает на вход три строки.

Если бы функция ничего не принимала и ничего не возвращала, ее описание выглядело бы так

public static void CreateFio()

{

// фио мы здесь явно создать не сможем, вечная морока с этим тестовыми примерами

}

Код функции обрамляется фигурными скобками, значение возвращается с помощью ключевого слова return

Весь код тестовой программы с функциями

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace TestConsoleApplication

{

class Program

{

public static string CreateFio(string surname, string name, string otchestvo)

{

string fio = surname + " " + name + " " + otchestvo;

return fio;

}

public static string CreateFioInitials(string surname, string name, string otchestvo)

{

string fio = surname + " " + name.Substring(0, 1) + ". " + otchestvo.Substring(0, 1) + ".";

//Временно оставим в стороне код "Substring(0, 1)" - он просто вырезает первый символ из строки.

return fio;

}

static void Main(string[] args)

{

string name = "Александр";

string otchestvo = "Сергеевич";

string surname = "Пушкин";

string name2 = "Наталья";

string otchestvo2 = "Николаевна";

string surname2 = "Гончарова";

System.Console.WriteLine(CreateFio(surname, name, otchestvo));

System.Console.WriteLine(CreateFioInitials(surname, name, otchestvo));

System.Console.WriteLine(CreateFio(surname2, name2, otchestvo2));

System.Console.WriteLine(CreateFioInitials(surname2, name2, otchestvo2));

System.Console.ReadLine();

}

}

}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: