Главная » Просмотр файлов » 1629295403-b876e2087bddebea4bc9666fb2377a02

1629295403-b876e2087bddebea4bc9666fb2377a02 (846199), страница 23

Файл №846199 1629295403-b876e2087bddebea4bc9666fb2377a02 (С для чайников) 23 страница1629295403-b876e2087bddebea4bc9666fb2377a02 (846199) страница 232021-08-18СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Возможно, вам больше поимвится использовать н е модификатор c o n s t , а модификатор r e a d o n l y :publicreadonlyi n tnDaysInYear=366;Как и при применении модификатора c o n s t , после того как вы присвоите констинициализирующее значение, оно не может быть изменено нигде в программе. Xотяпричины этого совета носят слишком технический характер, чтобы описывать их встоящей книге, при объявлении констант предпочтительно использовать модификатreadonly.Для констант имеется собственное соглашение по именованию.

Вместо именованих так же, как и переменных (как в примере с n D a y s I n Y e a r ) многие программыпредпочитают использовать прописные буквы с разделением слов подчеркиваниямиD A Y S _ I N _ Y E A R . Такое соглашение ясно отделяет константы от обычных переменных.В в а ш е м р а с п о р я ж е н и и е с т ь п е р е м е н н ы е , х р а н я щ и е о т д е л ь н ы е е д и н с т в е н н ы е значен и я .

К л а с с ы м о г у т и с п о л ь з о в а т ь с я д л я о п и с а н и я с о с т а в н ы х о б ъ е к т о в . Н о в а м нужна е щ е124Часть III. Объектно-основанное программироваодна конструкция для хранения множества объектов, например, коллекции старинныхавтомобилей Билла Гейтса. Встроенный класс A r r a y представляет собой структуру, ко­торая может содержать последовательности однотипных элементов (чисел типа i n t ,double, объекты V e h i c l e и т.п.).Зачем нужны массивыРассмотрим задачу определения среднего из десяти чисел с плавающей точкой. Каж­дое из 10 чисел требует собственной переменной для хранения значения типа d o u b l e(усреднение целых чисел может привести к ошибке округления, описанной в главе 3,"Объявление переменных-значений"):doubledoubledoubledoubledoubledoubledoubledoubledoubledoubledOdld2d3d4d5d6d7d8d9==========5;2;7;3.5;6.5;8;1;9;1;3;Теперь нужно просуммировать все эти значения и разделить полученную сумму на 10:double dSum = dO + dl + d2 + d3 + d4 +d5 + d6 + d7 + d8 + d 9 ;double dAverage = dSum / 1 0 ;Перечислять все элементы — очень утомительно, даже если их всего 10.

А теперьпредставьте, что вам надо усреднить 10000 чисел...Массив фиксированного размераК счастью, вам не нужно отдельно именовать каждый из элементов. С# предоставляетв распоряжение программиста массивы, которые могут хранить последовательности зна­чений. Используя массив, вы можете переписать приведенный выше фрагмент следую­щим образом:double[]dArray ={5,2,7,3.5,6.5,8,1,9,1,3} ;Класс A r r a y использует специальный синтаксис, который делает его болееудобным в применении.

Двойные квадратные скобки [] указывают на способдоступа к отдельным элементам массива:dArray[0]dArray[1]с о о т в е т с т в у е т dOсоответствует dlНулевой элемент массива соответствует do, первый — dl и так далее.Номера элементов массива — 0, 1, 2, ... — известны как их индексы.(пава 6. Объединение данных- классы и массивы125В С# индексы массивов начинаются с 0, а не с 1. Таким образом, элементс индексом 1 не является первым элементом массива.

Не забывайте об этом!Использование d A r r a y было бы слабым улучшением, если бы в качестве индекса массива нельзя было использовать переменную. Применять цикл f o r существенно проще, чем записывать каждый элемент вручную, что и демонстрирует программа F i x e d A r r a y A v e r a g e .11'FixedArrayAverage//Усреднениемассивачисел// использованием циклаnamespaceFixedArrayAverageusingразмерафиксированногосSystem;publicclassProgram{publicstaticdouble[]voidMain(string[]dArray ={5, 2, 7, 3 .

5 ,6.5,8,args)1,9,1,3};// Н а к о п л е н и е суммы э л е м е н т о в// м а с с и в а в п е р е м е н н о й dSumd o u b l e d S u m = 0 ,f o r ( i n t i = 0; i < 10; i + + \IdSum =dSum +dArray[i];// Вычисление среднего значенияd o u b l e d A v e r a g e = dSum / 1 0 ;Console.WriteLine(dAverage);// Ожидаем п о д т в е р ж д е н и я п о л ь з о в а т е л яConsole.WriteLine("Нажмите <Enter> для " +"завершения программы.. .

" ) ;Console.Read();Программа начинает работу с инициализации переменной d S u m значением 0. Затемпрограмма циклически проходит по всем элементам массива d A r r a y и прибавляет гак d S u m . По окончании цикла сумма всех элементов массива хранится в d S u m . Раздели!ее на количество элементов массива, получаем искомое среднее значение.Проверка границ массиваПрограмма F i x e d A r r a y A v e r a g e должна циклически проходить по массиву из 10элементов.

К счастью, цикл разработан так, что проходит ровно по 10 элементам мас­сива. Ну а если была бы допущена ошибка и проход был бы сделан не по 10 элементам, а по иному их количеству? Следует рассмотреть два основных случая.126Часть III. Объектно-основанное программированиеЧто произойдет при выполнении 9 итераций? С# не трактует такую ситуацию какошибочную. Если вы хотите рассмотреть только 9 из 10 элементов, то как С# можетуказывать вам, что именно вам нужно делать? Конечно, среднее значение при этомбудет неверным, но программе это неизвестно.Что произойдет при выполнении 11 (или большего количества) итераций?В этом случае С# примет свои меры и не позволит индексу выйти за дозволенные пре­делы, чтобы вы не смогли случайно переписать какие-нибудь важные данныевпамяти.

Чтобы убедиться в этом, измените сравнение в цикле f o r , заменив 10 на 11:for ( i n t i = 0 ; i < 1 1 ; i + + )При выполнении программы вы получите диалоговое окно со следующим сообщени­ем об ошибке:IndexOutOfRangeException was u n h a n d l e dIndex was o u t s i d e t h e b o u n d s o f t h e a r r a y .Здесь C# сообщает о происшедшей н е п р и я т н о с т и — исключении I n d e x O u t O f ­R a n g e E x c e p t i o n , из названия которого и из поясняющего текста становится понят­на причина ошибки, — выход индекса за пределы допустимого диапазона.

(Кромеэтого, выводится детальная информация о том, где именно и что произошло, но покато вы не настолько знаете С#, чтобы разобраться в этом.)Массив переменного размераМассив, используемый в программе F i x e d A r r a y A v e r a g e , сталкивается с двумясерьезными проблемами:его размер фиксирован и равен 10 элементам;что еще хуже, значения этих элементов указываются непосредственно в текстепрограммы.Значительно более гибкой была бы программа, которая могла бы считывать переменнойколичество значений, вводимое пользователем, ведь она могла бы работать не только сопределенными в программе F i x e d A r r a y A v e r a g e значениями, но и с другими мно­жествами значений.Формат объявления массива переменного размера немного отличается от объявления«ива фиксированного размера:doublet] d A r r a y = n e w d o u b l e [ N ] ;Здесь N — количество элементов в выделяемом массиве.Модифицированная версия программы V a r i a b l e A r r a y A v e r a g e позво­ляет пользователю указать количество вводимых значений.

Поскольку про­грамма сохраняет введенные значения, она может не только вычислитьсреднее значение, но и вывести результат в удобном виде.;// V a r i a b l e A r r a y A v e r a g e//Вычисление с р е д н е г о з н а ч е н и я м а с с и в а , р а з м е р к о т о р о г о//указывается п о л ь з о в а т е л е м в о в р е м я р а б о т ы п р о г р а м м ы .[// Накопление в в е д е н н ы х д а н н ы х в м а с с и в е п о з в о л я е т[//обращаться к н и м н е о д н о к р а т н о , в ч а с т н о с т и , д л я г е н е р а ц и и[//привлекательно в ы г л я д я щ е г о в ы в о д а н а э к р а н .Гюва 6, Объединение данных - классы и массивы127namespaceVariableArrayAverage{usingSystem;publicclassProgram{publics t a t i cvoidMain(string[]args){// Сначала считывается количество чисел типа double,// которое пользователь намерен ввести для усредненияConsole.Write("Введите количество усредняемых чисел:");s t r i n g sNumElements = C o n s o l e . R e a d L i n e О ;i n t numElements = Convert.ToInt32(sNumElements);Console.WriteLine();//Объявляемdouble[]//массивdArrayНакапливаемfor(inti==необходимогоnewзначения0;i<размераdouble[numElements];вмассивеnumElements;i++){// Приглашение пользователю для ввода чиселC o n s o l e .

W r i t e ( " В в е д и т е ч и с л о типа d o u b l e №" +( i + 1) + " : ") ;s t r i n g sVal = C o n s o l e . R e a d L i n e ( ) ;double dValue = Convert.ToDouble(sVal);//}ВносимdArray[i]число=вмассивdValue;// Суммируем'numElements'/ / п е р е м е н н о й dSumd o u b l e dSum = 0;for(inti=0;i<значенийnumElements,-измассивавi++){dSum=dSum+dArray[i];}// Вычисляем среднееd o u b l e d A v e r a g e = dSum/numElements;/ / Выводим р е з у л ь т а т н а э к р а нConsole.WriteLine();Console.Write(dAverage+ " является среднимиз("+ d A r r a y [ 0 ] ) ,for(inti=1;i<numElements,-Console.Write("+i++){"+dArray[i]);}Console.WriteLine(")128/"+numElements);Часть III. Объектно-основанное программирован// Ожидаем п о д т в е р ж д е н и я п о л ь з о в а т е л яConsole.WriteLine("Нажмите <Enter> для " +"завершения программы...");Console.Read();Вот как выглядит вычисление среднего для чисел от 1 до 5:ВведитеколичествоусредняемыхВведитеВведитеВведитеВведитеВведитечислочислочислочислочислоdoubledoubledoubledoubledoubleтипатипатипатипатипа№1:№2:№3:№4:№5:чисел:5123453 является с р е д н и м и з( 1 + 2 + 3 + 4 + 5 )/5Нажмите < E n t e r > д л я з а в е р ш е н и я п р о г р а м м ы .

. .Программа V a r i a b l e A r r a y A v e r a g e начинается с вывода приглашения пользова­телю указать количество значений, которые будут введены далее и которые требуетсяусреднить. Введенное значение сохраняется в переменной n u m E l e m e n t s типа i n t .В представленном примере здесь оказывается введено число 5.Затем программа выделяет память для нового массива d A r r a y с указанным количе­ством элементов.

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

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

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

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