Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Программирование. Введение в разработку на C#. Учебное пособие
.pdf
Ка ф е д р а ин ф орма ц и о н н ы х те х н оло г и й
Б.Э. ЗАБЕРЖИНСКИЙ
А.Г. ЗОЛИН
ПРОГРАММИРОВАНИЕ.
ВВЕДЕНИЕ В РАЗРАБОТКУ НА 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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
