Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Программирование. Введение в разработку на C#. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
Ка ф е д р а ин ф орма ц и о н н ы х те х н оло г и й
Б.Э. ЗАБЕРЖИНСКИЙ
А.Г. ЗОЛИН
ПРОГРАММИРОВАНИЕ.
ВВЕДЕНИЕ В РАЗРАБОТКУ НА C#
Учебное пособие
Самара
Самарский государственный технический университет
2017
1
Печатается по решению редакционно-издательского совета СамГТУ
УДК 004.4 (075.8) ББК 32/27я 73 З- 122
Забержинский Б.Э.
Программирование. Введение в разработку на C#: учебное пособие / Б.Э.
Забержинский, А.Г. Золин. –Самара: Самар. гос. техн. ун-т, Изд. 2 2017. – 120 с.:
ил.
Рассмотрены основы программирования на языке C# под платформой Micro-
soft .NET.
Предназначено для студентов высших технических учебных заведений по на­правлению 09.03.03 «Прикладная информатика». Может быть использовано по направлениям: 09.03.01 «Информатика и вычислительная техника» и 09.03.04 «Программная инженерия»
Ре ц е нз е нт д-р техн. наук, профессор П.К. Ку з н е ц о в
УДК 004.4 (075.8)
ББК 32/27я 73
З- 122
Б.Э. Забержинский, А.Г. Золин, 2017
Самарский государственный технический университет, 2017
2
ПРЕДИСЛОВИЕ
Разработка программ – это процесс и искусство создания про­граммных модулей для компьютеров, или программного обеспечения (ПО), посредством языков программирования. Разработка программно­го обеспечения сочетает части фундаментальных областей знания, (в первую очередь информатики, математики) и искусства. Задачей про­граммирования является создание программ, обеспечивающих пред­почтительный результат.
В последнее время подготовить мастеров по искусному созданию программного обеспечения становится все сложнее и сложнее. Сказы­вается недостаток базового образования в школах и почти полное от­сутствие на уроках информатики основ программирования. В результа­те авторам приходится сталкиваться со студентами, которые не в со­стоянии за кратчайшие сроки освоить учебную программу в объеме, достаточном для самостоятельной разработки.
Вместе с тем сохраняется тенденция сокращения лекционных заня­тий и смещения баланса между ними и другими видами учебной деятель­ности в сторону самостоятельной работы, что по замыслу разработчиков ГОС должно компенсировать недостаток лекций. Однако на практике мы видим, что самостоятельная работа по дисциплинам, связанным с разра­боткой программного обеспечения, ставит студентов в тупик при малей­шем непонимании темы, возникновении ошибок в программе, незнании базовых правил написания программ. Литература, представленная на рынке, как правило, очень объемна и сложна для понимания, что отбивает у студентов желание разбираться с азами.
Часто преподаватели информационных технологий сталкиваются с проблемой преподнесения материала в случаях, когда новая тема требует знания последующих тем, что заставляет опускать и упрощать часть материала. Такая взаимосвязь наиболее очевидна в программировании, где первый пример программы требует определенных знаний или провоцирует вопросы, которые излагаются через десятки глав в разделах «cложный материал».
3
Чтобы не отпугивать слушателя и не отбить у него интереса к предмету, учебное пособие предлагает подход к изложению материала от простого к простому в рамках одного пособия. Это отличается от классических изданий, где изложение ведется от простого к сложному в рамках одной книги. Авторы полагают, что объем фактического материала заложит фундамент для последующего углубленного изучения сложных тем. Представленное учебное издание дается с пропуском и поверхностным изложением части тем, но авторы надеются, что при таком подходе возможно освоить изложенное в полном объеме.
Предлагаемое пособие служит для самостоятельного изучения основ С# и является дополнением к лекционным курсам по таким дисциплинам, как «Программирование», «Объектно-ориентированное программирование», «Технология программирования». Может использоваться бакалаврами направлений: 09.03.04 – «Программная инженерия», 09.09.00 – «Информационная безопасность», 09.03.01 – «Информатика и вычислительная техника», 09.03.03 – «Прикладная информатика в экономике», а также будет полезно всем, кто начинает первые шаги в изучении основ программирования и пытается освоить современный и перспективный язык C# и платформу Microsoft .NET.
4
ВВЕДЕНИЕ
Язык программирования С# создан корпорацией Microsoft специ- ально для платформы .NET. В С# представлены важнейшие аспекты разработок в области вычислительных систем: объектно-ориенти­рованное программирование, обработка графических объектов, компо­ненты графического пользовательского интерфейса (GUI), обработка исключений, многопоточная обработка, мультимедиа (аудио, изображе­ния, анимация и видео), обработка файлов, подготовленные структуры данных, работа с базами данных, разработка многозвенных программ­ных приложений для Интернета и WWW, организация сетей, Web- службы и распределенные вычисления. Данный язык подходит для соз­дания приложений, работающих в сетях и WWW, напрямую интегри­руемых с программами на базе Windows. Платформа .NET обеспечивает колоссальные возможности для разработки и развертывания программ­ных средств, включая независимость от языков и платформ. Например, программисты, пишущие код на одном (или нескольких) языках .NET (С#, Visual Basic .NET и Visual С++ .NET), могут вводить в один про- граммный продукт разные компоненты.
Помимо обеспечения независимости от языков, .NET заметно по­вышает мобильность программ их размещением на разных платформах и обеспечением взаимодействия. При этом упрощается процесс созда­ния и использования Web-служб, представляющих собой программные приложения, передающие клиентам различные функции по Интернету. Платформа .NET позволяет использовать приложения на базе Web в бы- товых электронных приборах, например, в беспроводных телефонах, планшетах и карманных компьютерах так же, как и в обычных настоль­ных рабочих станциях.
В учебном пособии представлена интегрированная среда разработки
Visual Studio .NET, позволяющая программистам создавать программы на С#. Visual Studio .NET обеспечивает визуальное программирование, в ко-
тором элементы управления (например, кнопки и текстовые поля) «пере-
5
таскиваются» и «устанавливаются» в нужном месте, а не добавляются пу­тем дописывания кода. Визуальное программирование повышает произ­водительность разработки программных средств путем удаления множе­ства рутинных задач программирования. Например, свойства графическо­го пользовательского интерфейса (Graphical User Interface, GUI), такие как размер и цвет, можно модифицировать в среде разработки Visual Stu- dio .NET; при этом изменения вносятся достаточно оперативно, и резуль­таты сразу отражаются на экране.
Вместо того чтобы гадать во время написания программы, как будет в конечном итоге выглядеть GUI, разработчик видит результат сразу по­сле окончания выполнения программы. Visual Studio .NET содержит ин- струментальные средства отладки, документирования и написания ко­дов. В пособии представлены только основные возможности Visual Stu- dio .NET, которые не затрагивают и сотую часть полного функционала.
В пособии также изложены принципы структурного программирова­ния, набор методик, которые помогут читателям в разработке четких, по­нятных и поддерживаемых программ. Затем представлено использование управляющих структур, влияющих на последовательность выполнения операторов. Управляющие структуры создают программы, которые легко понять, отлаживать и поддерживать. Рассматриваются три формы про­граммного управления: последовательность, выборка и повторение с осо­бым упором на операторы if-else, while, for, do-while и switch. Объясняется оператор break, а также логические операции.
Также представлены массивы – главная структура данных. Структу­ры данных чрезвычайно важны для сохранения, сортировки, поиска и ма­нипуляций большими объемами информации. Массивами называются группы связанных между собой элементов данных, обеспечивающих про­граммисту доступ к любому элементу. Вместо создания 100 отдельных переменных, которые, так или иначе, связаны между собой, программист может создать массив из 100 элементов и осуществлять доступ к ним по их местоположению в этом массиве. Рассматриваются способы объявле­ния и распределения массивов. В разделе по массивам рассмотрены клю­чевые операции использования массивов. Авторы рассматривают одно-
6
мерные и многомерные массивы, которые можно использовать для со­хранения таблиц данных. Представлена конструкция foreach, выполняю- щая итерации в массиве.
Рассматривается обработка слов, предложений, символов и групп символов. В С# строки (группы символов) являются объектами. Это еще одно преимущество сосредоточения С# на объектно-ориенти­рованном программировании. Объекты типа string содержат методы, ко­торые могут копировать строки, осуществлять их поиск, извлекать под­строки и связывать строки между собой. Авторы представляют класс StringBuilder, определяющий объекты, подобные строкам, которые можно модифицировать после инициализации, и дающий значительный выигрыш в скорости при сравнении со String.
Объектно-ориентированная технология привела к значительному продвижению разработок программных средств при создании много­кратно используемых компонентов программного обеспечения. Объек­ты позволяют организовывать программы естественными и интуитив­ными способами. В пособии представлены основы объектно­ориентированного программирования: инкапсуляция, абстракция дан­ных, наследование данных и полиморфизм. Эти методики скрывают подробности компонентов с тем, чтобы программист мог сосредото­читься на «общей картине» своей работы. На их примере создается класс Point, отражающий точку в пространстве.
Обсуждаются проектные преимущества объектно-ориенти­рованного программирования. В пособии также представлены его наи­более значимые концепции, такие как создание и расширение классов.
Коротко рассматривается понятие наследования – формы повторно­го использования программных средств, где классы (называемые произ­водными классами) создаются путем поглощения атрибутов и методов существующих классов (называемых базовыми классами). Унаследо­ванный класс (т. е. производный) может содержать дополнительные ат­рибуты и методы. Рассматривается, как нахождение подобия между классами объектов может сократить объем работы, необходимый для создания крупных программных систем. Учебный пример демонстри-
7
рует многократное использование программных средств и хороший стиль программирования путем нахождения подобия в иерархии насле­дования между классами.
Рассматриваются методы классов. Метод дает программисту воз­можность создания блока кода, который можно вызвать из разных мест программы. Крупные программы можно разбить на взаимодействующие классы, каждый из которых состоит из методов; иногда этот процесс на­зывается стратегией «разделяй и властвуй». Программы делятся на про­стые компоненты, взаимодействующие прямолинейно. В этом пособии даются базовые понятия по созданию собственных методов, принимаю­щих данные ввода, выполняющих вычисления и возвращающих выход­ные данные. На примерах представлена перегрузка методов, позволяю­щая нескольким методам иметь одно и то же имя.
Авторы рассматривают полиморфическое программирование и его преимущества. Полиморфизм позволяет рассматривать классы в общем виде, заставляя тот же способ вызова метода проявляться по-разному, в зависимости от контекста (например, команда «двигайся», поданная мо­дели человека или предмету (в программном смысле)), побуждает их к принципиально разным видам действий. Помимо рассмотрения сущест­вующих классов в общем виде, полиморфизм позволяет легко добавлять в систему новые классы. Приводятся ситуации, в которых полиморфизм весьма полезен. Главы по объектно-ориентированному программирова­нию (ООП) закладывают основы для восприятия следующих учебных пособий с подробным изложением основ объектно-ориентированного программирования.
Уделено внимание описанию структур данных: связанных списков, стеков, очередей. Каждая структура данных обладает свойствами, по­лезными для многих приложений, от сортировки элементов до просле­живания обращений к методам. Это также дает ценный опыт создания полезных классов. В этих классах сохраняются наборы – или коллекции – данных, и они обеспечивают функциональность, позволяющую разра­ботчикам сортировать, вставлять, удалять и извлекать элементы данных.
8
Различные коллекции данных сохраняют данные по-разному. Сделан обзор на примере классов Array, ArrayList, Stack и Hashtable.
Если возможно, то программистам, работающим на С#, следует пользоваться готовыми подходящими структурами данных, вместо того, чтобы самим реализовывать эти структуры данных. Один из разделов знакомит студентов с тем, как это сделать.
Рассмотрены обобщенные типы – особые типы, которые определяют взаимодействия для нескольких типов. Они также известны, как шаблонные типы. Основное предназначение – описывать взаимодействия с однородными типами без дублирования кода. Использование обобщенных типов позволяет избавиться от операций упаковки и распаковки, необходимость которых возникает при взаимодействии ссылочных типов и типов по значению.
Авторы не обошли вниманием и лямбда-функции (англ. lambda) – это особый вид функций, не имеющих имени и объявляемых по месту их выполнения. Лямбда-функции в .NET представляют собой процедуры, которые не привязаны ни к одному из типов. Они могут вызываться в любом контексте, а также в их теле можно обращаться к любым переменным, которые объявлены вне тела лямбда-функции. Лямбда-функции придают платформе .NET функциональный стиль программирования.
Представьте себе программу, которая не может сохранять данные в виде файла. Как только пользователь ее закрывает, вся работа безвоз­вратно пропадает. По этой причине в пособии рассматривается про­стейшая работа с потоками и файлами.
В завершении учебного пособия рассматривается стиль написания программ. Это очень важная часть знаний любого профессионального разработчика, потому что умение придерживаться единого и понятного стиля не только экономит время при разборе программ и позволяет тру­диться над кодом коллективно, но и обеспечивает самодокументируе­мость кода.
9
1. ОСНОВЫЕ СВЕДЕНИЯ О ПЛАТФОРМЕ И ЯЗЫКЕ
1.1. Платформа .NET
Язык программирования C# разрабатывался, как язык прикладного уровня для CLR (Common Language Runtime) с сильной зависимостью от возможностей самой CLR. CLR – это виртуальная машина, интерпретирующая и исполняющая код. В основном это относится к системе типов C#, которая отражает BCL (Base Class Library) – библиотеку классов. Отсутствие или присутствие тех или иных отличительных особенностей языка определяется конкретной языковой особенностью быть транслированным в соответствующие конструкции CLR. С постепенным развитием CLR от версии к версии значительно обогатился и C#. CLR дает C#, как и другим .NET-ориентированным языкам, дополнительные возможности, которых лишаются «классические» языки программирования. Примером может служить сборка мусора, которая не реализована в C#, а производится CLR для программ, исполненных на C# так же, как это делается для программ на VB.NET, J# и др.[1]
1.2. Выбор среды разработки
В настоящий момент существует три распространенных способа начать разработку приложений на .NET с разным уровнем комфорта:
1. Свободно распространяемая и бесплатная среда разработки программ на .NET SharpDevelop (http://www.icsharpcode.net/opensource/sd/). Рекомендуемый вариант для слабых компьютеров и небольших проектов.
2. Бесплатная закрытая среда Visual Studio Express, включающая в себя базовый набор возможностей, которые уступают по своим функциям SharpDevelop.
10
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]