Командная строка содержит 3 аргумента.



Вот они:  

один  

два  

Три

 

Для того чтобы стало понятнее, каким образом используются аргументы командной строки, рассмотрим еще один пример программы, в которой применяется простой подстановочный шифр для шифровки или расшифровки сообщений. Шифруемое или расшифровываемое сообщение указывается в командной строке. Применяемый шифр действует довольно просто. Для шифровки слова значение каждой его буквы инкрементируется на 1. Следовательно, Буква "А" становится буквой "Б" и т.д. А для расшифровки слова значение каждой его буквы декрементируется на 1. Разумеется, такой шифр не имеет никакой практической ценности, поскольку его нетрудно разгадать. Тем не менее он может стать приятным развлечением для детей.

 

// Зашифровать и расшифровать сообщение, используя  

// простой подстановочный шифр.

using System;

 

class Cipher {

public static int Main(string[] args) {

 

Проверить наличие аргументов.

if (args.Length < 2) {

Console.WriteLine("ПРИМЕНЕНИЕ: " +

"слово1: <зашифровать>/<расшифровать> " +

"[слово2... словоN]");

Return 1; // возвратить код неудачного завершения программы

}

 

// Если аргументы присутствуют, то первым аргументом должно быть  

// слово <зашифровать> или же слово <расшифровать>.

if (args[0] != "зашифровать" & args[0] != "расшифровать") {

Console.WriteLine("Первым аргументом должно быть слово "

+ "<зашифровать> или <расшифровать>.");

Return 1; // возвратить код неудачного завершения программы

}

 

// Encode or decode message.  

for (int n = 1; n < args.Length; n++) {

for (int i = 0; i < args[n].Length; i++) {

if (args[0] == "зашифровать")

Console.Write((char)(args[n][i] + 1));

Else

Console.Write((char)(args[n][i] - 1));

}

Console.Write(" ");

}

Console.WriteLine();

return 0;

}

}

 

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

 

C:\Cipher зашифровать один два

Пейо егб

C:\Cipher расшифровать пейо егб

Один два

 

Данная программа отличается двумя интересными свойствами. Во-первых, обратите внимание на то, как в ней проверяется наличие аргументов командной строки перед тем, как продолжить выполнение. Это очень важное свойство, которое можно обобщить. Если в программе принимается во внимание наличие одного или более аргументов командной строки, то в ней должна быть непременно организована проверка факта передачи ей предполагаемых аргументов, иначе программа будет работать неправильно. Кроме того, в программе должна быть организована проверка самих аргументов перед тем, как продолжить выполнение. Так, в рассматриваемой здесь программе проверяется наличие командного слова "зашифровать" или "расшифровать" в качестве первого аргумента командной строки.

И во-вторых, обратите внимание на то, как программа возвращает код своего завершения. Если предполагаемые аргументы командной строки отсутствуют или указаны неправильно, программа возвращает код 1, указывающий на ее аварийное завершение. В противном случае возвращается код 0, когда программа завершается нормально.

 

 

Рекурсия

 

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

Классическим примером рекурсии служит вычисление факториала числа. Факториал числа N представляет собой произведение всех целых чисел от 1 до N. Например, факториал числа 3 равен 1х2x3, или 6. В приведенном ниже примере программы демонстрируется рекурсивный способ вычисления факториала числа. Для сравнения в эту программу включен также нерекурсивный вариант вычисления факториала числа.

 

// Простой пример рекурсии.

using System;

class Factorial {

// Это рекурсивный метод.  

public int FactR(int n) {

int result;

 

if (n == 1) return 1;

result = FactR(n - 1) * n;

return result;

}

 

// Это итерационный метод.  

public int FactI(int n) {

int t, result;

 

result = 1;

for (t = 1; t <= n; t++) result *= t;

return result;

}

}

 

class Recursion {

static void Main() {

Factorial f = new Factorial();

 

Console.WriteLine("Факториалы, рассчитанные рекурсивным методом.");

Console.WriteLine("Факториал числа 3 равен " + f.FactR(3));

Console.WriteLine("Факториал числа 4 равен " + f.FactR(4));

Console.WriteLine("Факториал числа 5 равен " + f.FactR(5));

Console.WriteLine();

 

 

Console.WriteLine("Факториалы, рассчитанные итерационным методом.");

Console.WriteLine("Факториал числа 3 равен " + f.FactR(3));

Console.WriteLine("Факториал числа 4 равен " + f.FactR(4));

Console.WriteLine("Факториал числа 5 равен " + f.FactR(5));

}

}

 

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

 


Дата добавления: 2019-02-12; просмотров: 308; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!