ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 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 |