Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Задачник.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.26 Mб
Скачать

В. Биллиг

Алгоритмы и задачи

(Для программирования на языке C#)

Введение

Данный задачник дополняет учебник автора «Основы программирования на C#». При написании учебника я ориентировался на тех, кто знает основные алгоритмы, знаком со структурами данных и умеет программировать на каком либо языке. Главной целью ставилось не столько обучение новому языку программирования C#, (хотя он подробно рассмотрен в учебнике) сколько обучение основам объектно-ориентированного программирования, освоение технологии программирования в классах на языке, специально спроектированном для поддержки этой технологии работы.

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

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

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

Многие годы в обучении лидирующую роль первого языка играл язык Паскаль. Он и сегодня сохраняет свои позиции, хотя и появились другие претенденты, среди которых назову двух – Java и C#.

Правильно устроенный программистский мир является многоязычным миром. Поэтому, не настаивая на исключительности, рассмотрим, почему C# может претендовать на роль первого языка программирования. Отмечу следующие его достоинства:

  • легко поддерживает различные модели программирования, применяемые на начальных этапах обучения.

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

  • предоставляет большой набор образцов программирования, представленных классами библиотеки Framework .Net.

На начальном этапе задачи обучения связаны не столько с языком, сколько с выработкой алгоритмического мышления. Эти задачи многообразны и достаточно сложны. Требуется понимание новых понятий: переменных и типов данных. Требуется умение описывать процесс вычислений ограниченным набором управляющих структур – выбора, циклов, рекурсии. Требуется знание основ представления данных и классических алгоритмов. И нужно не только знать, но и уметь. Нужно уметь писать программы! И с первых шагов программирования нельзя забывать об эффективности и корректности разрабатываемых программ.

Алгоритмическая мысль, как и всякая мысль, требует оформления. Роль слова, роль языка немаловажна. Язык программирования является важной частью начального процесса обучения программированию. С чего начинается обучение ребенка – скажи «мама».

Работая над задачником, я ориентировался на возможность его применения вместе с учебником для обучения началам программирования при выборе языка C# в качестве первого языка программирования. Методические указания к задачнику должны помочь начинающим в понимании материала учебника, ориентированного на подготовленного слушателя. Некоторые разделы учебника при первом чтении могут быть опущены.

Во многом от лектора зависит, как скоро и в какой мере вводить объектный стиль программирования. В методических указаниях к задачнику рассматриваются различные модели программирования, все из которых используют язык C# и среду Visual Studio. И на C# можно писать программы, ничего не зная о классах и объектах.

В заключение этого краткого введения хочу принести благодарности моим коллегам Михаилу Дехтярю и Сергею Архипову. Они прочитали отдельные разделы этого текста и сделали весьма полезные замечания. Вся вина за оставшиеся ошибки лежит целиком на мне. Моя особая благодарность Евгению Веселову, работающему теперь в корпорации Майкрософт. Он прочитал одну из глав задачника и сделал ряд важных замечаний по стилю программирования. Я планирую провести ревизию кода, представленного в задачнике, и добавить специальный раздел, посвященный стилю программирования.