user10429306

user10429306

На Пикабу
579 рейтинг 30 подписчиков 1 подписка 28 постов 0 в горячем

А вы знали?

А вы знали, что.

Сказка странствий. Где Миронов в полете увидев горящий костры, говорит посмотри, как радостно живут люди, они жгут костры и танцуют, на кострах сжигали тех, кто умер от чумы. Ёжик, который ищет лошадку, ищет ее в загробном мире.

1

Заключение

К сожалению, время, выделенное на написание статей для курса «Введение в программирование» закончилось. И хотя не весь материал был изложен, хочется верить, что изложенный материал достиг своей цели.

Напомню, что целью курса лекций являлось формирование правильного представление о написание программного кода, а также ознакомление читателя с базовыми элементами структурного программирования.

Помните, что структурное программирование, ни что иное как, обработка значений в памяти компьютера с использованием трех алгоритмических структур.

Неважно в каком виде представлены значения, в виде единственного в литерале или множественного в такой структуре данных как массив, это все те же конденсаторы в памяти компьютера.

Для хранения и изменения значений будут использованы — следование, ветвление, повторение, а именно эти конструкции и были рассмотрены.

Удачи!

5

Методы

Продолжаем улучшать читабельность и информативность программного кода.

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

Во избежание переписывания одного того же кода, принято выделять такой код в отдельный блок, с доступом по имени. По аналогии с переменной, в которой доступ по имени осуществляется к единственному значению, имя блока предоставляет доступ к программному коду внутри этого блока.

Выделение программного кода в отдельные блоки позволяет так же решить следующие задачи.

  • Распределить написание кода между командой программистов, где каждый пишет свой модуль, блок программного кода. Затем эти модули соединяются в единую конструкцию.

  • Упрощается отладка и поиск ошибок в программе, потому как найти неверно работающий модуль легче, чем найти ошибку среди тысяч строк программного кода в методе Main.

  • При внесении изменений или расширения функциональных возможностей нет необходимости затрагивать весь программный код, достаточно внести изменения в конкретные блоки кода.

Наименьшим выделенным блоком программного кода в языке C# является — метод. К примеру, точка входа в программу метод— Main, или методы вывода на экран — Write и WriteLine.

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

Метод, не возвращающий значение — блок программного кода, результат вычисления которого, в дальнейшем, не используется в программе. Метод имеет следующую конструкцию

static void Metod()

{

Тело цикла. Здесь пишется блок исполняемого кода.

}

Где,

  • static — этот параметр примите как необходимость. Его обсуждение не входит в тему этой лекции

  • void — ключевое слово, указывающее, что метод не возвращает значение, которое может изменить ход выполнения программы

  • Metod — имя метода. По правилам пишется с большой буквы и имеет описательное содержание, которое описывает выполняемую функцию.

  • () — круглые скобки. Формат записи, указывающий на метод. Круглые скобки могут быть пустыми или содержать параметр.

  • {} — между фигурных скобок пишется исполняемый код.

Самая распространенная операция, которая не влияет на ход выполнения программы, а значит не возвращает никакого значения, является вывод информации на экран.  Очень часто, таким сообщением бывает сообщение — Ошибка.

Выделим сообщение об ошибке в отдельный блок — метод, и вызовем этот метод в методе Main. Все операции производятся в class Program

class Program

{

static void Main(string[] args)

{

MessageError();

}


static void MessageError()

{

Console.WriteLine("Ошибка");

}

}

На первый взгляд, здесь происходит нарушение основного принципа программирования — следование. Метод MessageError() находится ниже метода Main. На самом деле это не так. Найдя строку MessageError();,  компилятор находит в программе этот метод, выполняет его, и затем передает управление назад в метод Main. Поэтому нет разницы, где будет находится метод, ниже выше или в другом классе, или в другом файле, метод будет выполнен, в противном случае программа закончится ошибкой. При расположении метода за пределами базового класса Program, обязательно указывается путь к этому методу. Об этом поговорим чуть позже.

Как видно из вышеприведенного программного кода, использование методов очень похоже на применение переменных. По большому счету, операция Console.WriteLine("Ошибка"); как некое значение, была помещена в отдельный блок с именем, и теперь по имени можно вызвать эту операцию на выполнение.

Помимо разнообразных сообщений, методы, не возвращающие значение, могут выводить результаты вычислений. Для этого в круглых скобках метода объявляется переменная, называемая —параметром метода.

Напишем метод, умножающий значение переменной «х» на два.

static void Sum(int x)

{

Console.WriteLine(x * 2);

}

Здесь, в строке static void Sum(int x), параметр метода, метод Sum ожидает значение с типом данных int, которым будет инициализирована переменная int x.

Для того, чтобы воспользоваться методом достаточно вызвать метод по имени в методе Main, и в круглые скобки поместить значение. Значение в круглых скобках называется — аргумент. Аргумент должен иметь идентичный, с параметром тип данных.

class Program

{

static void Sum(int x)

{

Console.WriteLine(x * 2);

}


static void Main(string[] args)

{

Sum(30); //ПЕРЕДАЧА аргумента

// ОТВЕТ. Невидимая операция

}

}

Число «30» в строке Sum(30); является аргументом метода Sum. Саму же операцию передачи значения аргумента в параметр метода, можно представит как операцию инициализации переменной, в которой правым операндом является аргумент, а левым параметр.

В познавательном процессе о методах, встречаются ситуацию, когда обучающийся, написав свой метод не может к нему обратится. Это связано с тем, что ученик привык к мысли «одна операция — одно действие». Здесь же в строке Sum(30); происходит две операции — передача аргумента и получение ответа от метода в виде результата вычисления. Дабы избавится от визуальной зависимости «одна операция — одно действие», представьте, что ниже строки Sum(30); находится невидимая операция, принимающая ОТВЕТ.

Помимо литеральных значений, аргументом может выступать переменная.

class Program

{

static void Sum(int x)

{

Console.WriteLine(x * 2);

}

static void Main(string[] args)

{

int a = 30;

Sum(a); //ПЕРЕДАЧА аргумента

//ОТВЕТ. Невидимая операция

}

}

Здесь в качестве аргумента выступает значение переменной «а», которое инициализирует переменную «х», параметр метода Sum. После выполнения программного кода в теле метода Sum, результат вычисления возвращается методу Main.

Усложним задачу и напишем программу с несколькими параметрами, представленными различными типами данных.

class Program

{

static void Data(int x, string text)

{

Console.WriteLine($"Имя: {text}, возраст: {x}");

}


static void Main(string[] args)

{

int age = 30;

string name= "Bill";

Data(age, name); //ПЕРЕДАЧА аргумента

//ОТВЕТ. Невидимая операция

}

}

Здесь, аргументами выступают переменные age и name которые инициализируют переменные int x, string text метода Data.

В случаях, когда у метода два и более параметра необходимо соблюдать два правила.

  • 1.  Количество аргументов должно быть идентичным количеству параметров.

  • 2.  Типы данных параметров должны соответствовать по своему расположению типам данных аргументов. Т.е. первый параметр и аргумент должны иметь идентичные типы данных.

    Помимо переменных, в качестве параметров могут выступать структуры.

    Нижеприведен код программы, где метод ShowMany выводит на экран все элементы массива, а ShowOne — единственный.

    class Program

    {

    static void ShowMany(int[] arr)

    {

    for(int i=0; i<arr.Length; i++)

    {

    Console.Write( arr[i] + " ");

    }

    }

    static void ShowOne(int[] arr, int i)

    {

    Console.Write(arr[i]);

    }

    static void Main(string[] args)

    {

    int[] little = { 3, 6, 8, 9 };

    int[] big = { 1, 2, 3, 6, 5, 4, 9, 8, 25 };

    ShowMany(big); //ПЕРЕДАЧА аргумента

    //ОТВЕТ. Невидимая операция

    Console.WriteLine();

    ShowOne(little, 1); //ПЕРЕДАЧА аргумента

    //ОТВЕТ. Невидимая операция

    }

    }

    Здесь, параметром ShowMany является массив, поэтому аргументом для этого метода будет массив. Метод ShowOne, позволяет обратится к отдельному элементу массива, но операция по выводу отдельного элемента массива происходит внутри метода, поэтому прежде, чем обратится к конкретному элементу, необходимо в метод ShowOne передать все элементы массива. Таким образом метод ShowOne имеет два параметра — массив и переменную инициализируемую индексом

    Помимо методов с ключевым словом — void, т.е. не возвращающих никакого значения и не влияющих на дальнейшие вычисления, при написании программного кода, как ни банально звучит, используются методы, результат вычислений которых, возвращает значение, и эти значение используются в дальнейших вычислениях.

    Такие методы легко отличить от методов с «void». Так как метод возвращает значение, а значение имеет тип данных, то ключевое слово «void» заменяется на один из принятых типов данных. Само значение возвращается с помощью оператор — return.

    static string Name()

    {

    return "Bill";

    }

    Где, string — тип данных метода Text. Типом данных определены характеристики обрабатываемых значений.

    Так как результат вычислений в методе с возвращаемым значением, в дальнейшем используется в коде программы, то такое значение присваивается переменной с идентичным типом данных.

    class Program

    {

    static string Text()

    {

    return "Bill";

    }


    static void Main(string[] args)

    {

    string name=Text();

    Console.WriteLine($"Имя {name}");

    }

    }

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

    class Program

    {

    static string Text()

    {

    string name = "Bill";

    return name;

    string message = "Error";

    }


    static void Main(string[] args)

    {

    string name=Text();

    Console.WriteLine($"Имя {name}");

    }

    }

    Так как оператор «return» завершает работу метода, то операция с этим методом должна находится на последней строчке метода.

    Используя параметры и аргументы методы могут обмениваться значениями.

    class Program

    {

    static string Text(string name)

    {

    return name;

    }

    static int Number(int years)

    {

    return years;

    }

    static void Main(string[] args)

    {

    string name = Text("Bill");

    int age = Number(36);

    Console.WriteLine($"Имя {name}, возраст {age}");

    }

    }

    Здесь, аргументами "Bill" и 36, были инициализированы переменные в методах Text и Number соответственно.

В заключении.

Для снижения трудозатрат и ошибок при наборе программного кода. выделяйте часто повторяющийся код в отдельные блоки — называемые методы. При написании программного кода используйте не только свои методы, но и сторонних разработчиков.

Для передачи значений между методами, к примеру, между Main  и Sum, используется конструкция аргумент — параметр, где аргумент передает значение, а параметр принимает. Аргументом может быть как литеральное, так и переменное значение, параметром выступает переменная с типом данных идентичным аргументу.

На этом занятие закончено.

Вы можете самостоятельно найти задачи для закрепления теоретического материала или для получения задач с ответами отправьте письмо на basicprog@mail.ru

Удачи в выполнении практических заданий!

Показать полностью

Имена переменных и комментарии. Синтаксис C#

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

Напишем программу

static void Main(string[] args)

{

Console.WriteLine("Введите значение");

int a = int.Parse(Console.ReadLine());

Console.WriteLine(a*5/9+32);

}

Запустим код. Введем значение, получим результат. И….. Попытаемся угадать, результат каких вычислений был получен.

А теперь представьте себе, вы открываете код и видите применение такого стиля оформления у программы в 1000 строк. Даже если эту программу написали Вы, для понимания происходящего в этом коде придется потратить много времени.

Избежать этого позволило бы наличие комментариев

static void Main(string[] args)

{

/* Эта программа переводит значение температуры

* по Фаренгейту в значение температуры по Цельсию */

Console.WriteLine("Введите значение"); //Температура по Фаренгейту

int a = int.Parse(Console.ReadLine());

Console.WriteLine(a*5/9+32); //Температура по Цельсию

}

Комментарии можно размещать в любом месте программного кода. Комментарии могут быть однострочными и многострочными. Как правило однострочный комментирует только одну строку, многострочный описывает блок программного кода.  Многострочный комментарий обертывается в слеш со звездочкой, однострочный пишется после двойного слеша и действует до конца строки.

С помощью многострочного комментария некоторые программисты блокируют готовые блоки кода. Это делается в случаях, когда программист сомневается какой вариант программного кода оптимален для программы.

static void Main(string[] args)

{

/* Эта программа переводит значение температуры

* по Фаренгейту в значение температуры по Цельсию */

Console.WriteLine("Введите значение");

int a = int.Parse(Console.ReadLine());

Console.WriteLine(a * 5 / 9 + 32); //Первый вариант вычислений

/*

* int b = a * 5 / 9 + 32; //Второй вариант вычислений

Console.WriteLine(b);

*/

}

Написание комментариев подчинены определённым правилам.

Первое и главное правило комментария – комментарий должен предоставлять правдоподобную информация.

  • Комментарии могут предоставлять дополнительную информация или пояснять назначение кода.

  • Комментарии могут подсказать как улучшить код, если код, в силу каких-то причин, был написан не удачно.

  • Комментарии могут предупреждать об опасностях внесения изменений в код. Самый распространенный из таких комментариев – “НЕ ТРОГАТЬ!!!”. На эту тему, на просторах интернета, есть поучительная история про вентилятор, воздушный шар и комнату, набитую швабрами.

Еще одним элементом в написании информативного кода являются ИМЕНА.

Имена присваиваются не только переменным, но другим объектам, хранящимся в памяти, таким как массив или другая структура данных, метод, класс и т.д. Подменяя уникальный адрес в памяти компьютера, имя объекта должно быть само уникальным и идентифицировать объект среди других объектов. Не информативно названые объекты затрудняют понимание программного кода другими программистами, а значит увеличиваются затраты на поддержку и обслуживание программного продукта. В конечном итоге, затраты и сложность в обслуживание может лишить программный продукт конкурентных преимуществ, что приведет к отказу от его использования.

Для выбора имени переменной или другого объекта существуют определенные правила.

Нельзя использовать ключевые слова и определенные символы вне строковых значений. У каждого языка программирования свой набор таких слов и символов. К примеру, слово string зарезервировано как обозначение типа данных, а слово — goto приведет к ошибке выполнения программы.

Объектам, т.е. переменным, массивам, методам, классам и т.д. принято задавать удобочитаемые, описательные имена, которые объясняют, для чего создан объект.

Применение простых имен таких как a, b или z обычно используются внутри небольших блоков программы, где однозначно определено для чего нужна переменная

  • Если имя, для уникальности или смысловой нагрузки должно содержать два и более слова, эти слова пишутся слитно— thisFirstVariable. В языке C# к таким словам применяется стиль написания — Верблюжья нотация. Для этой нотации характерно следующее написание— Первое слово пишется со строчной буквы, последующие — с заглавной. Торчащие посреди заглавные буквы выглядят как горб у верблюда.

  • Имена переменных, массивов и других структур данных начинаются с маленькой буквы, а методы и классы с большой.

  • Длина имени не больше 15 символов. Имя объекта — thisFirstVariableofSquareClassRectangle, только усложнит чтение кода.

Для примера.

static void Main(string[] args)

{

int firstVariable = 10;

int secondVariable = 10;

int resultSum = firstVariable + secondVariable;

Console.WriteLine(resultSum);

}

Однако не всегда есть необходимость так полно информировать о принадлежности переменной, скорее это относится к глобальным переменным, о которых мы расскажем чуть позже. Имена переменным внутри небольших кусочков кода, таких как операции ветвления, повторения, лучше присваивать имена вида— a, b, c, y, x.

В заключении.

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

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

Имена объектов указывают, что хранит объект, его принадлежность и т.д.

На этом занятие закончено.

Вы можете самостоятельно найти задачи для закрепления теоретического материала или для получения задач с ответами отправьте письмо на basicprog@mail.ru

Удачи в выполнении практических заданий!

Показать полностью
Отличная работа, все прочитано!