Главная » Просмотр файлов » Г. Шилдт - Полный справочник по C#

Г. Шилдт - Полный справочник по C# (1160789), страница 41

Файл №1160789 Г. Шилдт - Полный справочник по C# (Г. Шилдт - Полный справочник по C#) 41 страницаГ. Шилдт - Полный справочник по C# (1160789) страница 412019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 41)

Например, при создании объекта t l вызывается конструкторXYCoord (), выполняющий вызов t h i s (0, 0), который преобразуется в вызов конструктора XYCoord (0, 0). Создание объекта t 2 происходит аналогично.Преимущество использования ключевого слова t h i s для вызова перегруженныхконструкторов состоит в том, что можно избежать ненужного дублирования кода.

Впредыдущем примере применение слова t h i s позволило избежать дублирования всеми тремя конструкторами одного и того же кода инициализации членов. Еще однодостоинство этого средства — возможность создавать конструкторы с заданием действующих "по умолчанию" аргументов, которые используются в том случае, когда аргументы конструктора не заданы явным образом. Например, вы могли бы создать ещеодин конструктор класса XYCoord следующим образом:1 p u b l i c XYCoord(int x) : t h i s ( х , х) { }Этот конструктор автоматически устанавливает координату у равной значению координаты х.

Конечно, использовать такие действующие "по умолчанию" аргументынужно очень аккуратно, поскольку их неправильное использование может ввестипользователей в заблуждение.Метод Main ()До сих пор мы использовали только одну форму метода Main (). Однако существует несколько перегруженных форм этого метода. Одни возвращают значение, а другиепринимают аргументы. Рассмотрением этих форм мы и займемся в следующих разделах.Возвращение значений изметода Main ()По завершении программы можно возвратить значение вызывающему процессу(часто в его роли выступает операционная система). Для этого используется следующая форма метода Main ():p u b l i c s t a t i c i n t Main()Обратите внимание на то, что вместо типа void, эта версия метода Main О имеет вкачестве типа возвращаемого значения i n t .Обычно значение, возвращаемое методом Main(), служит индикатором того, какбыла завершена программа (нормально или аварийно).

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

Эти аргументы затем передаются методу Main (). Дляработы с аргументами командной строки необходимо использовать одну из следующих форм метода Main ():p u b l i c s t a t i c void M a i n ( s t r i n g [ ] args)p u b l i c s t a t i c i n t M a i n ( s t r i n g [ ] args)Глава 8. Подробнее о методах и классах213Первая форма возвращает значение типа void, а вторую можно использовать длявозврата целочисленного значения, как описано в предыдущем разделе. В обоих случаях аргументы командной строки хранятся как строки в string-массиве, передаваемом методу Main ().Следующая программа отображает все аргументы командной строки, с которымиона была вызвана.// Отображение всей информации из командной строки.using System;class CLDemo {public s t a t i c void Main(string[] args) {Console.WriteLine("Командная строка содержит " +args.Length+11аргументов.

") ;Console.WriteLine("Вот они: " ) ;f o r ( i n t i=0; i<args.Length;Console.WriteLine(args[i]);Предположим, мы запустили на выполнение программу CLDemo следующим образом:CLDemo один два три четыре пятьВ этом случае мы увидим такие результаты:Командная строка содержит 5 аргументов.Вот они:одиндватричетырепятьЧтобы "попробовать на вкус" возможности использования аргументов команднойстроки, рассмотрим следующую программу. Она кодирует и декодирует сообщения.Сообщение, предназначенное для кодирования или декодирования, указывается в командной строке. Метод шифрования очень прост: чтобы закодировать слово, код каждой его буквы инкрементируется на 1. В результате буква "А" превращается в букву"Б" и т.д.

Чтобы декодировать слово, достаточно код каждой его буквы декрементиовать на 1.// Кодирование и декодирование сообщений.using System;class Cipher {public s t a t i c i n t Main(string[] args) {// Проверка наличия аргументов,if(args.Length < 2) {Console.WriteLine("ИСПОЛЬЗОВАНИЕ: " +"слово1: « з а к о д и р о в а т ь » / « р а с к о д и р о в а т ь » " +" [ с л о в о 2 . . . словоЫ]");r e t u r n 1; // Возврат признака неверного выполнения.}// Если аргументы присутствуют, то первым аргументом214Часть I. Язык С#// должно быть слово "закодировать" или "раскодировать".if(args[0] != "закодировать" & args[O] != "раскодировать") {Console.WriteLine("Первым аргументом должно быть слово " +"\"закодировать\" или \"раскодировать\".");return 1; // Возврат признака неверного выполнения.// Кодируем или декодируем сообщение.for(int n=l; n < args.Length; n++) {for(int i=0; i < args[n].Length;if(args[0]=="закодировать")Console.Write((char) (args[n][i] + 1 ) );elseConsole.Write((char) (args[n][i] - 1) );}Console.Write (" " ) ;Console.WriteLine();return 0;Чтобы использовать эту программу, укажите после ее имени командное слово"закодировать" или "раскодировать", а затем фразу, подлежащую соответствующейоперации.

В предположении, что эта программа называется Cipher, приводим двапримера ее выполнения.D:\Cipher закодировать один двапейо егбD:\Cipher раскодировать пейо егбодин дваВ этой программе есть два интересных момента. Во-первых, обратите внимание нато, как проверяется наличие аргументов командной строки. Это очень важный момент, который можно обобщить. Если работа программы опирается на один или несколько аргументов командной строки, всегда необходимо удостовериться4в том, чтоэти аргументы действительно переданы программе.

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

Возвращаемое значение, равное 0, — признак нормальной работы программы иблагополучного ее завершения.РекурсияВ С# метод может вызвать сам себя. Этот процесс называется рекурсией, а метод,который вызывает себя, называют рекурсивным. В общем случае рекурсия — это процесс определения чего-либо с использованием самого себя. Ключевым компонентомГлава 8. Подробнее о методах и классах-215рекурсивного метода является обязательное включение им инструкции обращения ксамоме себе.

Рекурсия — это мощный механизм управления.Классическим примером рекурсии является вычисление факториала числа. Факториал числа N представляет собой произведение целых чисел от 1 до N Например,факториал числа 3 равен 1x2x3, или 6. Рекурсивный способ вычисления факториалачисла демонстрируется в следующей программе. Для сравнения сюда же включен иего нерекурсивный эквивалент.// Простой пример рекурсии.using System;class Factorial {// Это рекурсивный метод,public int factR(int n) {int result;if(n==l) return 1;result = factR(n-l) * n;return result;// А это его итеративный эквивалент,public int factl(int n) {int t/ result;result = 1;for(t=l; t <= n; t++) result *= t;return result;class Recursion {public 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.factl(3));Console.WriteLine("Факториал числа 4 равен " +f.factl(4));Console.WriteLine("Факториал числа 5 равен " +f.factl (5));216Часть I.

Язык С#Вот результаты выполнения этой программы:Факториалы, вычисленныеФакториал числа 3 равенФакториал числа 4 равенФакториал числа 5 равенс использованием рекурсивного метода.б24120Факториалы, вычисленныеФакториал числа 3 равенФакториал числа 4 равенФакториал числа 5 равенс использованием итеративного метода.б24120Нерекурсивный метод f a c t l О довольно прост. В нем используется цикл, в котором организовано перемножение последовательных чисел, начиная с 1 (поэтому начальное значение управляющей переменной равно 1) и заканчивая числом, заданнымв качестве параметра метода.Рекурсивный метод f actR () несколько сложнее.

Если он вызывается с аргументом, равным 1, то сразу возвращает значение 1. В противном случае он возвращаетпроизведение f a c t R ( n - l ) * п. Для вычисления этого выражения вызывается методf actR () с аргументом п - 1 . Этот процесс повторяется до тех пор, пока аргумент нестанет равным 1, после чего вызванные ранее методы начнут возвращать значения.Например, при вычислении факториала числа 2 первое обращение к методу f actR ()приведет ко второму обращению к тому же методу, но с аргументом, равным 1.

Характеристики

Тип файла
PDF-файл
Размер
24,15 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6551
Авторов
на СтудИзбе
299
Средний доход
с одного платного файла
Обучение Подробнее