ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 11.12.2025

Просмотров: 3216

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

p u b l i c

s t a t i c v o i d D i s p l a y R a t i o ( d o u b l e

 

d o u b l e

d N u m e r a t o r , d D e n o m i n a t o r )

{

/ / Е с л и з н а м е н а т е л ь р а в е н 0 . . .

i f ( d D e n o m i n a t o r = = 0 . 0 )

{

/ /

. . . в ы в е с т и с о о б щ е н и е о б о ш и б к е и в е р н у т ь

/ / у п р а в л е н и е в ы з ы в а ю щ е й ф у н к ц и и . . .

C o n s o l e . W r i t e L i n e ( " З н а м е н а т е л ь н е м о ж е т б ы т ь н у л е м " ) ;

/ /

В ы х о д и з ф у н к ц и и

r e t u r n ;

}

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

d o u b l e d R a t i o = d N u m e r a t o r / d D e n o m i n a t o r ; C o n s o l e . W r i t e L i n e ( " О т н о ш е н и е " + d N u m e r a t o r

 

+ " к " + d D e n o m i n a t o r

 

+ " р а в н о " + d R a t i o ) ;

 

} / / Е с л и з н а м е н а т е л ь н е р а в е н н у л ю , в ы х о д и з ф у н к ц и и

}

/ / в ы п о л н я е т с я з д е с ь

 

Функция D i s p l a y R a t i o () начинает работу с проверки, не равно ли значение d D e ­

n o m i n a t o r нулю.

Если значение d D e n o m i n a t o r равно нулю, программа выводит сообщение об ошибке и возвращает управление вызывающей функции, не пытаясь вычислить значение отношения. При попытке вычислить отношение произошла бы ошибка целения на 0 с аварийным остановом программы в результате.

Если значение d D e n o m i n a t o r не равно нулю, программа выводит на экран значение отношения. При этом закрывающая фигурная скобка после вызова функции W r i t e ­ L i n e () является закрывающей скобкой функции D i s p l a y R a t i o () и, таким обра­ зом, представляет собой точку возврата из функции в вызывающую программу.

Взгляните на любое консольное приложение в этой книге. Выполнение программы всегда начинается с функции M a i n ( ) . Рассмотрим аргументы в следующем объявлении функции M a i n ( ) :

public s t a t i c v o i d M a i n ( s t r i n g [ ]

a r g s )

{

// . . . Исходный текст программы . . .

}

Функция M a i n () — статическая функция класса P r o g r a m , определенная Visual Stu­ dio AppWizard. Она не возвращает значения и принимает в качестве аргументов массив объектов типа s t r i n g . Что же это за строки?

Для запуска консольного приложения пользователь вводит имя программы в команд­ ной строке. При необходимости он может ввести в этой же строке после имени програм­ мы дополнительные аргументы. Вы видели это при использовании команд наподобие copy m y F i l e С: \ m y D i r , копирующей файл m y F i l e в каталог С: \ m y D i r .

Глава 7. Функции функций

167


Как показано в приведенной далее демонстрационной программе Display A r g u m e n t s , массив объектов s t r i n g , передаваемый в качестве параметра в функцию M a i n ( ) , и представляет собой аргументы текущего вызова про граммы.

/ / D i s p l a y A r g u m e n t s - в ы в о д а р г у м е н т о в ,

п е р е д а н н ы х п р о г р а м м е

u s i n g S y s t e m ;

 

 

 

 

n a m e s p a c e D i s p l a y A r g u m e n t s

 

 

{

 

 

 

 

c l a s s T e s t

/ / К л а с с , с о д е р ж а щ и й ф у н к ц и ю M a i n ( ) , н е о б я з а н

{

/ / н а з ы в а т ь с я P r o g r a m

 

 

 

 

 

 

p u b l i c s t a t i c v o i d

M a i n ( s t r i n g [ ]

a r g s )

{

 

 

 

 

/ / К о л и ч е с т в о а р г у м е н т о в

 

 

C o n s o l e . W r i t e L i n e ( " У п р о г р а м м ы

{ 0 }

а р г у м е н т о в " ,

 

 

a r g s . L e n g t h ) ;

 

 

/ / Э т о а р г у м е н т ы :

 

 

i n t n C o u n t = 0 ;

 

 

 

f o r e a c h

( s t r i n g

a r g i n a r g s )

 

 

{

 

 

 

 

C o n s o l e . W r i t e L i n e ( " А р г у м е н т

{о}

- { l } " ,

 

 

n C o u n t + + ,

a r g ) ;

}

 

 

 

 

/ / О ж и д а е м п о д т в е р ж д е н и я п о л ь з о в а т е л я

C o n s o l e . W r i t e L i n e ( " Н а ж м и т е < E n t e r > д л я " +

 

" з а в е р ш е н и я п р о г р а м м ы . . . " ) ;

C o n s o l e . R e a d ( ) ;

r e t u r n 0 ;

/ / Д р у г и е п р о г р а м м ы , з а п у щ е н н ы е в

 

/ / к о н с о л ь н о м о к н е , м о г у т п р о в е р и т ь э т о

}

/ / в о з в р а щ а е м о е з н а ч е н и е ; н е н у л е в о е

}

/ / з н а ч е н и е о б ы ч н о о з н а ч а е т о ш и б к у

Обратите внимание, что функция M a i n ( ) может возвращать значение несмотря 4 то, что она объявлена как v o i d , как и везде в настоящей книге. Однако она непременно должна быть объявлена как s t a t i c .

Программа начинает свою работу с вывода длины массива a r g s . Это значение соот­ ветствует количеству аргументов, переданных функции. Затем программа циклически| проходит по всем элементам массива a r g s , выводя каждый его элемент на экран.

Ниже приведен пример вывода данной программы (в первой строке показан вид ко] мандной строки, введенной при запуске программы):

D i s p l a y A r g u m e n t s / с a r g l a r g 2

У п р о г р а м м ы 3 а р г у м е н т о в А р г у м е н т 0 - /с

А р г у м е н т 1 - a r g l А р г у м е н т 2 - a r g 2

Н а ж м и т е < E n t e r > д л я з а в е р ш е н и я п р о г р а м м ы . . .

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

168

Часть III. Объектно-основанное программирова,


параметра, и все они являются строками. Первый параметр — "/ с". Обратите внимание, что он обрабатывается и передается в массив a r g s точно так же, как и все остальные ар­ гументы. Только сама программа может определить, что именно означает каждый из ар­ гументов и как он влияет на работу программы.

Передача аргументов из приглашения DOS

Чтобы запустить программу D i s p l a y A r g u m e n t s из приглашения DOS, выполните следующие шаги.

1. Выберите команду Starts Programs^ Accessories^Command Prompt (ПускО Программы ^Стандартные^ Командная строка).

После этого вы должны увидеть на экране черное окно с мигающим курсором ря­ дом с приглашением С: \ > (приглашение может включать каталог).

2.Перейдите в каталог, содержащий проект DisplayArguments , введя ко­ манду cd \C #Programs\DisplayArguments\bin\Debug .

(По умолчанию корневой каталог для демонстрационных программ из данной книги — С # P r o g r a m s . Если выбранный вами каталог другой, введите его.)

Приглашение изменится и примет вид С : \ C # P r o g r a m s \ D i s p l a y A r g u m e n t s \ b i n \ D e b u g > .

Если что-то идет не т а к — воспользуйтесь средствами Windows для поиска нужной папки. В Проводнике Windows щелкните правой кнопкой мыши на папке С : \ C # P r o g r a m s и выберите в раскрывающемся меню команду Search (Найти...), как показано на рис. 7.2.

Puc. 7.2. Проводник Windows позволяет легко найти нужную папку на жестком диске

ирование

Глава 7. Функции функций

169

 

 


В появившемся диалоговом окне введите D i s p l a y A r g u m e n t s . е х е и щелкните кнопке Search (Найти). Найденные имена файлов появятся в правой части диалого вого окна Search Result (Результаты поиска), как показано на рис. 7.3. Проигнор руйте файл D i s p l a y A r g u m e n t s . e x e в каталоге o b j \ D e b u g ; вам нужен файл в каталоге b i n \ D e b u g . Теперь, после того как вы нашли точное расположение файл и его полное имя, вернитесь в консольное окно и перейдите в требуемую папку.

Рис. 7.3. Файл найден; имя соответствующей папки можно найти в правой части диалогового окна

Обычно Visual Studio 2005 размещает выполнимые файлы

в подкаталоге bin

D e b u g ; однако это может быть подкаталог b i n \ r e l e a s e

или любой другой-

если вы измените конфигурацию Visual Studio.

 

Windows позволяет использовать в именах файлов и папок пробелы, одна DOS работать с ними не умеет. В версиях Windows до Windows ХР вам мож потребоваться взять имя с пробелами в кавычки. Например, можно перейти каталог с именем My S t u f f с помощью команды наподобие

c d \ " М у S t u f f "

3. В строке приглашения, которая теперь выглядит как С:\C#Programs DisplayArguments\bin\Debug>, введите команду

d i s p l a y a r g u m e n t s / с a r g l a r g 2 .

При этом должна выполниться программа D i s p l a y A r g u m e n t s . ехе, и ее в вод будет таким, как показано на рис. 7.4. Заметим, что на выполнение програ мы не влияет, какими буквами — строчными или прописными — вы набрали имя, а кроме того, вы можете опустить и расширение . е х е .

Передача аргументов из окна

Вы можете запустить программу наподобие D i s p l a y A r g u m e n t s . e x e , введя

имя в командной строке окна Command Prompt (Командная строка). Программу мо

но также запустить и с использованием интерфейса Windows, дважды щелкнув на имени в окне или в Проводнике Windows.

170

Часть III. Объектно-основанное программирова

Рис. 7.4. Выполнение программы DisplayArguments. ехе из при­ глашения DOS приводит к выводу информации о ее аргументах

Как показано на рис. 7.5, двойной щелчок на имени D i s p l a y A r g u m e n t s приводит к запуску программы без передачи ей аргументов.

Puc. 7.5. В Проводнике Windows вы можете запустить про­ грамму посредством двойного щелчка на ее имени

Перетаскивание и отпускание одного или нескольких файлов на пиктограмму D i s ­ p l a y A r g u m e n t s . е х е в Проводнике Windows приводит к выполнению программы,

аналогичному вводу в командной строке D i s p l a y A r g u m e n t s имена

файлов. Одно­

временное перетягивание и отпускание файлов a r g l . t x t и a r g 2 . t x t

на пиктограмму

D i s p l a y A r g u m e n t s дает результат, показанный на рис. 7.6.

 

Для того чтобы перетащить несколько файлов, выберите в списке первый файл, нажмите клавишу <Ctrl> и выберите остальные требующиеся вам файлы, как показано на рис. 7.6. Теперь нажмите кнопку мыши, перетяните все множество файлов и отпустите их на пиктограмму приложения D i s p l a y A r g u m e n t s .

Глава 7. Функции функций

171


Puc. 7.6. Windows позволяет перетащить и отпустить файлы на пик­ тограмму консольного приложения

Вывод программы D i s p l a y A r g u m e n t s в этом варианте запуска показан на рис. 7.7.

Puc. 7.7. Перетаскивание файлов на пиктограмму приложения дает тот же эффект, что и указание их имен в командной строке

172

Часть III. Объектно-основанное программирование

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

Ф у н к ц и я WriteLine ()

Вы могли заметить, что функция WriteLine (), использовавшаяся в рассматривае­ мых программах, представляет собой не более чем вызов функции класса Console: Console.WriteLine("Это — вызов функции");

Функция WriteLine () — одна из множества предопределенных функций, предос­ тавляемых библиотекой .NET. Console — предопределенный класс, предназначен­ ный для использования в консольных приложениях.

Аргументом функции WriteLine (), применявшимся в примерах выше, является строка string. Оператор + позволяет программисту собрать эту строку из несколь­ ких строк или строк и переменных встроенных типов, например, так:

string s = "Маша";

 

 

 

 

Console. WriteLine ("Меня зовут

"

+

s

+

" и мне " +

3

+

"

года");

В результате вы увидите выведенную на экран строку "Меня зовут Маша и мне

Ев'года".

Второй вид функции WriteLine () допускает наличие более гибкого множества ар­ гументов, например:

Console .WriteLine ("Меня зовут {о} и мне {l} года", "Маша", 3 ) ;

Первый аргумент такого вызова называется форматной строкой. В данном примере строка "Маша" вставляется вместо символов {0} — ноль указывает на первый аргу­ мент после командной строки. Целое число 3 вставляется в позицию, помеченную как {l}. Этот вид функции более эффективен, поскольку конкатенация строк не так про­ ста, как это звучит, и не столь эффективна.

Кроме того, в этом варианте в форматной строке может использоваться ряд управляю­ щих элементов, которые указывают, как именно должны выводиться аргументы функ­ ции WriteLine (). Вы познакомитесь с ними в главе 9, "Работа со строками в С#".

Передача аргументов в Visual Studio 2005

Для того чтобы запустить программу в Visual Studio 2005, сначала удостоверьтесь, что она собрана без ошибок. Выберите команду меню Builds Build имя программы и убедитесь в отсутствии в окне Output сообщений об ошибках. Корректное сообщение в этом окне должно выглядеть как

Build: 1 succeeded, 0 f a i l e d , 0 s k i p p e d

Если в окне Output вы видите что-то другое — ваша программа не запустится.

Выполнить программу без передачи аргументов — дело одного щелчка. После того как программа успешно собрана, выберите команду меню Debug^Start Debugging (или на­ жмите клавишу <F5>) или Debug^Start Without Debugging (клавиши <Ctrl+F5>) и полу­ чите желаемое.

Глава 7. Функции функций

173