Добавил:
2200 7008 9480 6099 TKFF БЛАГОДАРНОСТЬ МОЖНО ТУТ ОСТАВИТЬ Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ДИПЛОМ 2025 / 4 курса_МТУСИ / 1 КУРС / Информатика / С# для чайников - Мюллер.pdf
Скачиваний:
0
Добавлен:
04.06.2025
Размер:
53.3 Mб
Скачать

Массивы С#

ж ,'_,,

 

 

()',,,:(),:.,('l'l

 

 

 

,,,-

,,(),,,((,,

n()'(

v'l,

,:,,,З-(,,

 

,,'l(,,,,(

 

 

(,,

-('1:»_,(

'l,:_ ЧЗ'

,,,

 

,,:1 1,s,

'l,,,:З--,:,',-,,:

 

,З,:

,:,'l,'('l,:

 

,,:,,',(,n

 

,:

,

,:,

,:,',

(,s.('

,v,

,:,('

1),:(

,,(),s1)_'l,:

,З,:

n()'(,('l,:

 

,(,:.,,,,'

,:,з

,

а.,:,(',()'l

 

,,()

1),: ЗЗ,1)_'l'l

,,'()'l((,n

 

 

'

 

,,:,з'lЗ,.

 

'lЗЗ'

.,,'_

 

ж,,(),:,((,.

 

1)З',,

amRя

,(),,,,',З,:,,

 

 

,,:,з,:.

 

,,(),s1)

,,s(),s

• 1),:,,:()',:

,,:.,,

,,:,,().',-

 

,,:,З,,,:,

 

',,З-(,:,,'l

 

 

,:,(,:,'l,(,n

 

 

ciЗ,,,(,,:,

 

 

а1:»_'l,,З

,'l,'

иou аiР

@й,:,з

,,,,:,

хи@

r

@'lЗ'l

 

iui

'l ,g,

,

 

,'1)'l,'l

,:,з

 

,1)

 

','l

,,

,,,(),,'l,,,-

 

, 11З ',,

 

k\

',з,:,' , 1),:ЗЗ,1)_'l,:

,'l

В

Зачем нужны массивы

·ееОзгКЗО л·в·фи згКдвд дИЗжеКдвИдчзЗл дегЗфЗед е г ·П·с

дн гзф

узн ·пвздЗл гЗ

дегЗфЗед гКдкидгезкегПдИИисгдКдОдИИисв

ж К·Ид

ИЗжлИ·фдИЗжгЗг·

ю

 

Кч

 

 

Кч

 

 

Кч

 

 

Кч

 

 

Кч

 

 

Кч

 

 

гфЗедИЗдеКдвИдчз

гЗ гдКдОдИИг Озпдг Пгч вдгмжг·у у·у гзу·

·Из

в· дд гзОИЗгдфгзиеКдвИдИЗдгдКдОдИИг гЗг·

Озпдг гКЗПдегЗу з

Зк

у·О зуКич дИЗжу·у кг

ззгЗе·Из

Пч ·Пд

·кзг·

е гдКдОдИИгОЗ

 

.

.

.

5

·

 

 

 

 

дКдфЗе Педжгм дОдИггзфдИмигзОЗгд мИзв·пд де

З

гдгдКмгКдвег·Пмгд фгзИдзк звЗОзиеКдвИЗгм фЗед З

ОЗ

ЗзИзП

 

Педчз дегм

Зв·пд дегм

н

ып5.з тЗ. ЗИжжНЗ.зИ5Н 5И ­щ

Массив фиксированного размера

С ->(-,37k

 

-(- )# )16)1

(-#)1-(,3

.(6.i

 

 

 

#-#),1- Ж.ilМaSd#

.1-,(- 1#,

-

d(-S1d16#)(#

Sd1

d(--(-,( -(--(-i

 

.1,1di#

-1W1,Fd()(,3

S1- #.1-(,#

3)1-,(

Ж)(>#)(В

 

-S1 3Ж11-(--(-

-i

-16#,# d(Ж-#-,(,3 --#

Ж)(>#)(1 ,(S(

 

-(сi!

- 1.)1В S#d#-#))1В -

 

#.17e(-

1

d(Ж1-

 

 

 

 

 

 

 

 

Ф

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

16)1

,(.6#

1

З1-(,3

-(--(-

#Ж()(c((

(Ж(c((

 

)(Sd(-#d

 

 

 

э,1 1 З1- #)(#Sd1-,1

-i.#

1#, S(-1,3

.

1 ch#-,(

-(#

,(S(

И(.i

!T )#

()(c((

(Ж(d11

 

(

 

t

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

t !!! iMM!WМА!!

!,!,d,!

,!!,!!!f

 

!!!

!!!!!!f

 

it !!_, Br,;!!

 

 

!_!d!! B!fr !!!!!!!!!

 

!,!,dfr

!! !!!

! , С, !!

,;!,С!f! !

_d!

 

 

!!!!!!!

 

 

t!!!

d!!!f!

!!,С!!

_d!!,!!!! ,E!

 

!,!!,;_

!

,!!! B!f!

ЗАПОМНИ!

!!!!!!!

!!!!!!!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

s:

 

 

Н

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

s:

 

 

Н

 

 

 

 

 

М,; !!,r

 

!!!!!

!!!!!!!

!,,!!!!!!!,;!!

 

 

_!d!f

 

 

!

!i!

 

 

 

 

 

М,!!d!

 

!!!!!,!

!!!!!!!

С

yf

 

 

!r!!!!!f

!!!

!

t П

ЗАПОМНИ!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

o it

!!!!!!f

!!!!!!,!

 

!!L!!!E!!,

 

!

 

!

!!

!

 

!!!!

,Сd!r,!i

 

 

!!!!!

!

!!!!!!,!

 

!!

,! ,!!!,

 

r!d!f!

 

 

!!!!!,!

!!!!!!!

М! r!

ЗАПОМНИ!

Сf!!r!! ,С !,!

t

Т

Т

 

tБП

 

t

Б

 

ППwТ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

!_, Br,!!!!! !AКИe!

!i MMoW!! _d!!! ,

Сf !

r!!

 

!!! B!,!,;

,; ,;Ld!!!E

!! !

Сf !

!!L!

!!!!

!!!!!!!

 

!!!!!!!

!! Br,

Сf , !!r,

Br,!!!B

_!d!!!!!,;E

d!!!!,!B

d!!

i!M !,;e!!!!!!!,

 

_d,e!ЕТ

!! r!

!!f!!!B

!!D!fr

!!!!!

!d,;L!,;E

L!,

!

!!!,!!!d!d,;!!

 

! !!,;Ee!,

_d,

d!!!!

 

 

 

 

 

 

ГЛАВА 6

ч

ырыиaеи

uоччдuк воСдаори

ь бt

T

 

Программа начинает работу с инициализации переменной sum значени­ ем О . Затем программа цикл ически проходит по всем элементам массива douЫ esArray и прибавляет их к swn. По окончании цикла сумма всех элемен­ тов массива хранится в swn. Разделив ее на количество элементов массива, по­ лучаем искомое среднее значение, равное в данном случае 4,6 (можете прове­ рить это с помощью своего калькулятора).

П РО В Е Р КА ГРАН И Ц МАССИВА

Программа FixedArrayAverage должна циклически проходить по массиву из 1 О элементов. К счастью, цикл разработан так, что проходит ровно по 1 О эле­ ментам массива. Ну а если бы была допущена ошибка и проход был сделан не по 1 О элементам, а по иному их количеству? Рассмотрим два основных случая.

Что произойдет при выполнении 9 итераций? С# не трактует такую ситуа­ цию как ошибочную. Если вы хотите рассмотреть только 9 из 1 О элементов, то как С# может указывать вам, что именно вам нужно делать? Конечно, среднее значение при этом будет неверным, но программе это неизвестно.

Что произойдет при выполнении 1 1 иnи боnее итераций? В этом случае С# примет свои меры и не позволит индексу выйти за дозволенные пределы, чтобы вы не смогли случайно переписать какие-нибудь важные данные в па-

144 ЧАСТЬ 1 Основы программирования на С#

мяти. Чтобы убедиться в этом, измените сравнение в цикле for, заменив 1 О значением 1 1 :

м

т

П ки - - У yyw

При выполнении программы вы получите диалоговое окно со следующим со­ общением об ошибке:

v

Здесь С# сообщает о произошедшей неприятности - исключении Index0ut0f RangeException, из названия которого и из поясняющего текста становится понятна причина ошибки: выход индекса за пределы допустимого диапазона. (Кроме того, выводится детальная информация о том, где именно и что прои­ зошло, но пока что вы не настолько знаете С#, чтобы разобраться в этом.)

Массив переменного размера

Массив, используемы й в программе FixedArrayAverage, сталки вается с двумя серьезными проблемами :

))

))

его размер фиксирован и равен 1 О элементам;

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

Значительно более гибкой была бы программа, которая могла бы считывать переменное количество значений, вводимое пользователем, ведь она могла бы работать не только с определенными в программе FixedArrayAverage значени­ ями, но и с другими множествами значений. Формат объявления массива пере­ менного размера несколько отличается от формата объявления массива фикси­ рованного размера:

о

П

, ,

т

, П , ,

Здесь N - количество элементов в выделяемом массиве. Модифицирован­ ная версия программы VariaЬleArrayAverage позволяет пользователю указать количество вводимых значений. Посколь ку программа сохраняет введенные значения, она может не только вычислить среднее значение, но и вывести ре­ зультат в удобном виде:

,,

У

 

,,

R

, ,

v

ГЛАВА 6 Глава для коллекционеров пхт

=

= н =+н+=+<

=

*i5(A(*()l

=

=

=

++

++=

=

=

== =+<

== +

=

+

=

=S

=

= * i5 (*i) =

()-

))-

=

====

==++= =<+ <====<+==+=+= ­

11 ) / 11 r

\

011

11

11 ) ;

Вот как выглядит вычисление среднего для пяти последовательных чисел

eх тtчet 5:

p Я

u,

:

u,

ир

и

u,

р

3

Сначала программа VariaЬleArrayAverage выводит приглашение пользо­ вателю указать количество значений, которые будут введены далее и которые нужно усреднить. Введенное значение сохраняется в переменной numElements типа int. В представленном примере введено число 5.

Затем программа выделяет память для нового массива douЬlesArray с ука­ занным количеством элементов. В данном случае она делает это для массива, состоящего из пяти элементов типа douЫe. Программа выполняет numElements итераций цикла, считывая вводимые пользователем значения и заполняя ими массив. После того как пользователь введет указанное им ранее число данных, программа использует тот же алгоритм, что и в программе FixedArrayAverage для вычисления среднего значения последовательности чисел. В последней части генерируется вывод среднего значения вместе с введенными числами в привлекательном виде.

 

Этот вывод не так уж и прост, как может показаться. Внимательно

 

проследите, как именно программа выводит открывающую скобку,

СОВЕТ

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

 

Программа VariaЫeArrayAverage, возможно, не удовлетворяет вашим представлениям о гибкости. Возможно, вы бы хотели позволить пользователю вводить числа, а после ввода какого-то очередного числа дать команду вычис­ лить среднее значение введенных чисел. Кроме массивов, С# предоставляет программисту и другие типы коллекций; некоторые из них могут при необхо­ димости увеличивать или уменьшать свой размер.

ГЛАВА 6 d(.( зdc С"ddrСр,"#r(". .2a

Соседние файлы в папке Информатика