Научная статья на тему 'КОМПЛЕКС C# ПРОГРАММ С ДЕТАЛЬНЫМ КОММЕНТИРОВАНИЕМ КОДОВ ДЛЯ ЭФФЕКТИВНОГО ОБУЧЕНИЯ ПРОГРАММИРОВАНИЮ ДЛЯ ПЛАТФОРМЫ .NET.'

КОМПЛЕКС C# ПРОГРАММ С ДЕТАЛЬНЫМ КОММЕНТИРОВАНИЕМ КОДОВ ДЛЯ ЭФФЕКТИВНОГО ОБУЧЕНИЯ ПРОГРАММИРОВАНИЮ ДЛЯ ПЛАТФОРМЫ .NET. Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
48
20
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
обучающая система / платформа .Net. / комментирование кода / компиляция / оболочка.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Абдуллаева Назокат Исаевна, Муртазаева Умида Исакуловна

В данной статье приводится комплекс программ с детальным комментированием кодов, написанный на языке Visual С#. Данный комплекс рассчитан на широкий круг пользователей, и в частности он может быть использован в учебном процессе, где особое внимание уделяется развитию навыков программирования на языке Visual C# для платформы .Net. Данный комплекс может быть легко развернут в выделенном файл сервере, экспорт проектов комплекса в клиентские машины посредством разработанной оболочки для системы будет происходить в ускоренном режиме с минимальным расходом трафика в сети. В комплекс включены проекты, содержащие исчерпывающую информацию с полным и подробным разъяснением написанного кода (с теоретическими основами и полезными советами). В частности, классы, включенные в проекты системы, содержат наиболее полные комментарии кодов, которые могут быть активизированы и использованы для проведения последующего компьютерного эксперимента, вследствие чего каждый из проектов может быть использован в качестве виртуальной лаборатории -тренажёра, где любой студент может проводить эксперименты над загруженным кодом по своему усмотрению, повышая свой уровень программирования, сохраняя результаты на своем компьютере и не изменяя само информационное ядро системы. С точки зрения методики преподавания можно смело предположить, что предложенный комплекс может быть использован как начинающим, так и опытным кодером в качестве хорошего электронного учебного пособия.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «КОМПЛЕКС C# ПРОГРАММ С ДЕТАЛЬНЫМ КОММЕНТИРОВАНИЕМ КОДОВ ДЛЯ ЭФФЕКТИВНОГО ОБУЧЕНИЯ ПРОГРАММИРОВАНИЮ ДЛЯ ПЛАТФОРМЫ .NET.»

SCIENCE TIME

КОМПЛЕКС C# ПРОГРАММ С ДЕТАЛЬНЫМ КОММЕНТИРОВАНИЕМ КОДОВ ДЛЯ ЭФФЕКТИВНОГО ОБУЧЕНИЯ ПРОГРАММИРОВАНИЮ ДЛЯ ПЛАТФОРМЫ .NET.

Абдуллаева Назокат Исаеена, Муртазаееа Умида Исакулоена, Самаркандский филиал Ташкентского университета информационных технологий, город Самарканд

E-mail: nazokat7578@mail.ru E-mail: murtazayeval982@yandex. ru

Аннотация. В данной статье приводится комплекс программ с детальным комментированием кодов, написанный на языке Visual С#. Данный комплекс рассчитан на широкий круг пользователей, и в частности он может < | быть использован в учебном процессе, где особое внимание уделяется развитию навыков программирования на языке Visual С# для платформы .Net. Данный комплекс может быть легко развернут в выделенном файл сервере, экспорт проектов комплекса в клиентские машины посредством разработанной оболочки для системы будет происходить в ускоренном режиме с минимальным расходом трафика в сети. В комплекс включены проекты, содержащие исчерпывающую информацию с полным и подробным разъяснением написанного кода (с теоретическими основами и полезными советами). В частности, классы, включенные в проекты системы, содержат наиболее полные комментарии кодов, которые могут быть активизированы и использованы для проведения последующего компьютерного эксперимента, вследствие чего каждый из проектов может быть использован в качестве виртуальной лаборатории -тренажёра, где любой студент может проводить эксперименты над загруженным кодом по своему усмотрению, повышая свой уровень программирования, сохраняя результаты на своем компьютере и не изменяя само информационное ядро системы. С точки зрения методики преподавания можно смело предположить, что предложенный комплекс может быть использован как начинающим, так и опытным кодером в качестве хорошего электронного учебного пособия.

Ключевые слова: обучающая система, платформа .Net., комментирование кода, компиляция, оболочка.

«

1 SCIENCE TIME 1

В ведущих университетах мира уделяется особое внимание подготовке специалистов в области прикладной математики, которые создают математические и компьютерные модели реальных объектов на основе современных методов данной дисциплины. При этом высокая эффективность подготовки специалистов такого уровня достигается за счёт организации синхронного обучения соответствующих разделов чистой и прикладной математики, а также программирования. Дело в том, что параллельное чтение курсов математики и программирования может быть более интересным и полезным для студентов, нежели их автономное преподавание. В самом деле, студенты, получившие необходимую математическую базу и соответствующую ей алгоритмическую основу, на практике более уверены в себе, нежели те студенты, у которых знания не систематизированы. К тому же приобщение студентов к решению научно - производственных задач может сыграть важную роль в их профессиональной подготовке, которая способна придать сильный импульс к их будущему карьерному росту, в чем заинтересованы сами университеты также.

Современные достижения цифровых технологий, особенно интернет и высокоскоростных систем мобильной связи, позволяют организовать электронное обучение, которое предусматривает возможность передачи/приема знаний дистанционно. В этом случае перед преподавателями открываются неограниченные возможности организации занятий для многочисленной аудитории по сети, однако имеются и ограничения, связанные со временем. Например, преподавателям и студентам приходится постоянно согласовать время общения, и это проблема особенно явно проявляется в случаях, когда субъекты коммуникации живут в разных часовых поясах. В таких случаях преимущество обучающих систем, выполняющих роль виртуальных преподавателей, становится очевидным, так как это позволяет клиентам работать с этими системами независимо от географического местоположения и временного пояса. К тому же среди них имеются бесплатные сервера, которые являются очень популярными среди пользователей. В частности, к таким ресурсам относятся сайты онлайн обучения (например, доступные по URL: https://habrahabr.ru/ post/156241/); среди них можно выделить MIT Open Courseware, организованный Массачусетским технологическим институтом с более чем 2100 курсами разнообразной тематики, а также курсы (https://www.coursera.org/courses), основанные профессорами Стэндфордского университета, включающие более 200 интерактивных курсов. В дополнение к этим ресурсам следует упомянуть известный математический сайт (http://old.exponenta.ru), откуда можно свободно скачивать документы, реализованные в известных математических пакетах. К тому же на этом сайте имеется полный охват математических дисциплин таких, как математический анализ, дифференциальные уравнения, алгебра и т.д.

Применительно к математике и программированию вышеупомянутые ресурсы (например, https://habrahabr.ru) предлагают широкий выбор высококлассных курсов, в которых детально рассматриваются изучаемые

1 SCIENCE TIME 1

вопросы. Просматривая видеокурсы, читаемые известными американскими профессорами, студенты получают глубокие познания, а также, проходя практику в виртуальных классах, они приобретают важные навыки, которые закрепляются решением домашних работ, предлагаемых их преподавателями. Данная модель обучения очень эффективна, однако для комфортного прохождения этих курсов необходимо иметь доступ к высокоскоростному интернету с большим трафиком, что требует значительных финансовых затрат. К тому же в курсах по программированию предлагаются вместе с объемными кодами множество электронной литературы и видео-уроков, некоторые из которых являются платными. С одной стороны, такой избыток информации полезен, но с другой стороны студенту часто приходится изучить огромный материал, чтобы найти нужное объяснение к исследуемому блоку кода, теряя при этом много времени. Вдобавок следует сказать, что виртуальные лаборатории сайта http://old.exponenta.ru могут быть использованы в качестве тренажеров для исследования природы математических объектов, что позволит обострить у студентов математическое чутьё. Что ещё более важно, многие файлы содержат в себе и коды и справочную информацию к ним, хотя справка очень короткая и рассчитана только на инженеров, которых интересует вопрос «как вычислить?». А что касается более обширной информации об изучаемом объекте с демонстрацией нескольких способов решения поставленной задачи относительно него, она недостаточна полная. [1,2]

Как известно, в математических пакетах предусмотрена возможность использования математической символики в написании кодов, что делает их очень удобным инструментом в руках математиков, которые хотят перевести математические модели в соответствующие компьютерные. В этом им уступают известные среды программирования, но вместе с этим, у этих сред есть более весомое преимущество - технологии, которые делают их универсальными в создании приложений различного предназначения, а именно начиная от математических расчетов и визуализации решений математических моделей, заканчивая межплатформенными распределенными системами. К тому же на рынке труда имеет место огромный спрос на программистов, работающих в широко распространенных алгоритмических языках, таких, как С++, Java, С# и т.д. Среди объектно-ориентированных языков программирования С# занимает особое место, потому что он не только очень легко изучается, но также поддерживает современные технологии создания межплатформенных приложений разного типа. При этом по URL (https://www.visualstudio.com/ru/ downloads/) имеется возможность удаленной установки мультиязычной среды Visual Studio Community, которая распространяется абсолютно бесплатно и при этом является мощной средой разработки, где можно эффективно решать научные и производственные проблемы. [3]

Особенно следует отметить Указ Президента РУз «О мерах по коренному улучшению условий для развития отрасли информационных технологий в республике» от 30 июня 2017 года, где предоставляются преференции для

1 SCIENCE TIME 1

участников Инновационного центра по поддержке разработки и внедрения информационных технологий «Mirzo Ulugbek Innovation Center», резиденты которого освобождены от уплаты налогов и обязательных платежей до 1 января 2018 года, а также и работники резидентов Центра получают налоговые льготы. Несомненно, эта новость ещё раз указывает на востребованность в высококлассных ИТ-специалистах и программистах. Поэтому становится очевидно, что спрос на качественные системы электронного обучения программированию, в частности на виртуальные тренажёры для активных экспериментов с кодом, будет расти. [4]

Анализ вышеизложенных фактов приводит к выводу, что разработка комплекса программ с детальным комментированием кодов, написанным на языке Visual С#, является эффективным решением актуальной задачи обучения программированию для платформы .Net. При этом эффективность будет увеличена ощутимо, если в комплекс будут включены коды, реализованные на базе известных математических моделей и алгоритмов. В результате чего предложенный комплекс может стать полезным виртуальным справочником в руках математиков - программистов, которые на основе предложенных кодов могут создавать свои собственные проекты с мощными функциональными качествами и оптимальным кодом.

В качестве примера ниже приводится проект С#, где наряду с понятным теоретическим материалом о применении индексаторов в создании отказоустойчивых массивов дается код его реализации на практике. Данный проект может быть использован в качестве основы для создания надёжных приложений, в которых отсутствует часто встречаемая ошибка времени выполнения выхода за границы массива. Область его применения может быть очень широкой и, в частности, она охватывает линейную алгебру, где операции над матрицами и их определителями - частое явление [5].

i using System;

2 using System. Collections. Generic;

3 using System.Linq;

4 using System. Text;

5 using System. Threading. Tasks;

6

7 namespace ConsoleApplicationl

8 {

9 class Program

10 {

11 static voidMain(string[] orgs)

12 {

1 SCIENCE TIME 1

13 #region Индексаторы (теория)

14 /*

15 Индексаторы применяются в качестве средства, поддерживающего создание специализированных

16 массивов, на которые накладывается одно или несколько ограничений. При этом, индексаторы

17 имеют такой же синтаксис, как и у массивов. Индексаторы могут быть одно-или многомерными.

18

19 Общая форма одномерного индексатора:

20

21 тип элемента this[int индекс]

22 {

23

24 get // аксессор для получения данных

25 {

26 //Возврат значения, которое определяет индекс.

27 }

28

29 set // аксессор для установки данных

30 {

31 // Установка значения, которое определяет индекс.

32 }

33

34 }

35

36

37 где тип элемента соответствует типу элемента массива. Параметр индекс получает конкретный

38 индекс элемента, к которому осуществляется доступ. Формально этот параметр совсем не

39 обязательно должен иметь тип int, но поскольку индексаторы, как правило, применяются

40 для индексирования массивов, то чаще всего используется целочисленный тип данного параметра.

41

42 В теле индексатора определены два аксессора (т.е. средства доступа к данным): get и set.

43 Аксессоры подобны методам, за исключением того, что в них не объявляется тип возвращаемого

44 значения или параметры. Аксессоры вызываются автоматически при использовании индексатора,

45 и оба получают индекс в качестве параметра. Так, если индексатор указывается в левой части

46 оператора присваивания, то вызывается аксессор set и устанавливается элемент, на который

47 указывает параметр индекс. В противном случае вызывается аксессор get и возвращается значение,

48 соответствующее параметру индекс. Кроме того, аксессор set получает неявный параметр -value,

49 содержащий значение, присваиваемое по указанному индексу.

50

51 Индексатор препятствует нарушению границ массива. Внимательно проанализируем каждую часть кода

52 индексатора. Он начинается со следующей строки.

53

54 public int this[int index]

55

56 В этой строке кода объявляется индексатор this[], оперирующий элементами типа int. Ему

57 передается индекс в качестве параметра index. Кроме того, индексатор объявляется открытым

58 (public), что дает возможность использовать этот индексатор в коде за пределами его класса.

59 */

60 #endregion

61

62 #region Применение одномерного индексатора для создания отказоустойчивого массива (пример)

63 /*

64 FailSoftArrayClass massiv = new FailSoftArrayClass(lO);

65

66 Console. WriteLine("Pa6oma индексатора this[int index]");

67 Console.WriteLine();

68

69 for (inti=0; i<massiv.Length+10;i++)

70 {

71 massivfij = i; //работа аксессора set, где -value = i при О < = i <massiv.Length

72

73 if (massiv.ErrFlag) Console.WriteLineC'napymeHue границ : massiv[{0}] = {1}", i, massivfij);

74 else Console.WriteLine("massiv[{0}] = {l}",i, massivfij); //работа аксессора get

75 }

76

77 //Length — это свойство поля length. В этом свойстве определен единственный аксессор get,

78 // поэтому оно доступно только для чтения. Это означает, что значение свойства Length можно

79 // только читать, но не изменять.

80

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

81 // massiv.Length = 20; //Невозможно присвоить значение свойству Length доступ только для чтения

82

Console. WriteLine

83 ( ),

84

85 Console.WriteLine();

86 Console. WriteLine("Pa6oma перегруженного индексатора thisfdouble idx]");

87 Console.WriteLine();

88

89 Щ

90 FailSoftArrayClass mass = new FailSoftArrayClass(lO);

91

92 for (double j = 0.2;j < massiv.Length + 10;j++)

93 {

94 massivfj] = (int)j;

95

96 if (massiv.ErrFlag) Console. WriteLine("napyrneHue границ : massiv[{0}] = {l}",j, massivfj]);

97 else Console.WriteLine("massivf{0}] = {l}",j, massivfj]); // работа аксессора get

98 }

99 */

100 #endregion

101

102 #region Индексаторы без базового массива

103 /*

104 Pow2Class obj = new Pow2Class();

105

106 for (int i = 0; i < 20; i++) Console. WriteLine("Math.Pow(2 , {0}) = {1}", i, objfi]);

107

108 // фактически объект obj не является массивом. Однако, с применением индексатора с ним

109 //можно оперировать как с массивом.

110 // строка pwrfO] = 11; не подлежит компиляции, поскольку для индексатора

111 // не определен аксессор set.

112

113 */

114 #endregion

115

116

117 class FailSoftArrayClass

118 {

119

120 intf] a; // ссылка на базовый массив

122 int length; //закрытая переменная длины массива

123

124 /*

125 программист, преследующий злонамеренные цели, может-умышленно ввести неверное значение в

126 поле length. Для того чтобы исправить это положение, превратим поле в свойство Length

127 "только для чтения", комментируя аксессор set

128 */

129

130 public int Length

131 {

132 Get

133 {

134 return length;

135 }

136

137 //set

138 //{

139 // length = -value;

140 //}

141 }

142

143 private bool errFlag; // обозначает результат последней операции

144

145 public bool ErrFlag

147 Get

148 {

149 return errFlag;

150 }

151

152 //set

153 //{

154 // errFlag = -value;

155 //}

156 }

157

158 //---------------------конструктор строящий массив заданного размера--------------------------------

159

160 public FailSoftArrayClass(int size)

161 {

162 a = new int [size];

163 this.length = size;

164 }

165

166 //-------------------------метод контроля соблюдения границ массива---------------------------------

167

168 private bool ok(int index) //возвращает true, если индекс находится в установленных границах

169 {

170 if (index >= 0 & index < Length) return true;

171 return false;

172 }

173

174 //-----------------------индексатор для класса FailSoftArrayClass-----------------------------------

| SCIENCE TIME

175

176 public int this[int index]

177 {

178 get // это аксессор get

179 {

180 if (ok(index))

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

181 f

182 this.errFlag = false;

183 return a[index];

184 }

185 else

186 {

187 this.errFlag = true;

188 return -1;

189 }

190 }

191

192 Set

193 {

194 if (ok(index)) // это аксессор set

195 {

196 a[index] = value;

197 this.errFlag = false;

198 }

199 else this.errFlag = true;

200 } 201

202 }

203

204 //-------------------перегруженный индексатор для класса FailSoftArrayClass

205

206 public int this[double idx]

207 {

208 get // это аксессор get

209 {

210

211 int index = idx - (intjidx < 0.5 ? (intjidx : (intjidx + 1; //Округлить idx

212

213

214 if (ok(index))

215 {

216 this.errFlag = false;

217 return afindex];

218 }

219 else

220 {

221 this. errFlag = true;

222 return -1;

223 }

224 }

225

226 Set

227 {

228 int index;

| SCIENCE TIME Щ

229 if ((idx - (int)idx) < 0.5) index = (int)idx; else index = (int)idx + 1; // Округлить idx

230

231 if (ok(index)) // это аксессор set

232 {

233 a[index] = value;

234 this.errFlag = false;

235 }

236 else this.errFlag = true;

237 }

238

239 }

240 //----------------------------------------------------------------------------------------------------

241 }

242

243 /* Аксессоры get и set индексатора []

244

245 Аксессор get предотвращает ошибки нарушения границ массива, проверяя в первую очередь, находится ли индекс в установленных границах. Эта проверка границ выполняется в методе ок(), который возвращает логическое зна-

246 чение

247 true, если индекс правильный, а иначе—false. Так, если указанный индекс находится в установленных границах, то по этому индексу возвращается соответствующий элемент. А если индекс оказывается вне установленных

248 границ,

249 то никаких операций не выполняется, но в то же время не возникает никаких ошибок переполнения.

250

251 В данном варианте класса FailSoftArrayClass переменная ErrFlag содержит результат каждой операции.

252 Ее содержимое может быть проверено после каждой операции на предмет удачного или неудачного выполнения

253 последней.

254

Таким же способом аксессор set также предотвращает ошибки нарушения границ массива. При этом если пара-

255 метр

256 index метода ок() находится в установленных пределах, то соответствующему элементу массива присваивается

257 значение, передаваемое из параметра -value. В противном случае устанавливается логическое значение true

258 переменной ErrFlag. Напомним, что -value в любом аксессорном методе является неявным параметром,

259 содержащим присваиваемое значение. Его не нужно (да и нельзя) объявлять отдельно.

260

261 */

Предложенный комплекс программ с детальным комментированием кодов, написанный на языке Visual С#, может стать очень эффективным инструментом в обучении программированию для платформы .Net. С технической стороны этот комплекс, включающий в себе огромное количество проектов, в суммарном объеме будет очень маленьким (предположительно не более 10 мегабайт), но классы, включенные в проекты, будут содержать исчерпывающую информацию с полным и подробным разъяснением написанного кода (с теоретическими основами и полезными советами), часть которого может быть легко скомпилирована. Очевидно, данный комплекс может быть легко развернут в выделенном файл-сервере, экспорт его элементов комплекса из сервера в клиентские машины посредством разработанной системы будет происходить в ускоренном режиме с минимальным расходом трафика в сети, в результате чего комплексом могут одновременно пользоваться громадное количество клиентов,

1 SCIENCE TIME 1

не загружая при этом саму сеть. С точки зрения методики преподавания работа с проектом, где ее классы содержат наиболее полные комментарии кодов, может заменить хороший учебник. При этом пользователь может снять комментарии с данных, в которых имеются коды программ, которые дополняют активный код и эти комментарии могут быть включены в активную часть кода для последующего эксперимента.

Литература:

1. Сайт онлайн-обучения [Электронный ресурс]. - URL: https://habrahabr.ru/ post/156241/

2. Сайт виртуальных математических лабораторий [Электронный ресурс]. -URL: http://old.exponenta.ru

3. Сайт для установки среды Visual Studio [Электронный ресурс]. - URL: https:// www.visualstudio.com/ru/downloads/

4. Сайт компании «CIB GROUP» [Электронный ресурс]. - URL: http:// ictnews.uz/05/07/2017/muic-2/

Герберт Шилдт. С# 4.0: полное руководство. - М.: ООО "И.Д. Вильяме", 2011.

i Надоели баннеры? Вы всегда можете отключить рекламу.