
- •Алгоритмы и задачи
- •Глава 1 Начала
- •Глава 2 Числа
- •Int temp;
- •InitializeComponent();
- •Глава 3 Последовательности (массивы)
- •Int m, n, p; //размеры матриц
- •Void MultMatr(double[,] a, double[,] b, double[,] c)
- •Void FillDg()
- •Int MaxM()
- •Void EvalMopAndNop(int I, int j, ref int m, ref int n)
- •Void orders(int I, int j)
- •Int[] sx; //статистический закон - гистограмма
- •InitializeComponent();
- •Раздел 4 Тексты
- •Int codes1, codes2, codes3;
- •Int n; //размер массива
- •Int Heap_Size; //размер пирамиды, построенной на массиве
- •Void qSort(int start, int finish)
- •Int temp;
- •Void SortM(int start, int finish, int[] temp)
- •Void Merge(int start, int mid, int finish, int[] temp)
- •Int start, finish;
- •Int ms(DateTime dt)
В. Биллиг
Алгоритмы и задачи
(Для программирования на языке C#)
Введение
Данный задачник дополняет учебник автора «Основы программирования на C#». При написании учебника я ориентировался на тех, кто знает основные алгоритмы, знаком со структурами данных и умеет программировать на каком либо языке. Главной целью ставилось не столько обучение новому языку программирования C#, (хотя он подробно рассмотрен в учебнике) сколько обучение основам объектно-ориентированного программирования, освоение технологии программирования в классах на языке, специально спроектированном для поддержки этой технологии работы.
Случилось так, что мне пришлось учить программированию тех, кто только начал постигать азы программирования, тех, для кого нахождение максимума и сортировка массива являлись трудными задачами. К тому времени ответ на вопрос, можно ли начинать обучение с объектных языков и объектной технологии, лично для меня был решен. Мой ответ – да, можно и нужно.
При обучении началам программирования немаловажную роль играет первый язык, во многом определяющий дальнейший стиль программирования.
В данном контексте понятие языка включает и среду программирования, в которую погружен язык. Поэтому неявно подразумевается, что разработка программ на C# ведется в среде Visual Studio .Net с использованием возможностей каркаса Framework .Net. Но на начальных этапах обучения о среде программирования следует говорить как можно меньше. Современные среды программирования тем и хороши, что напоминают официантов в хорошем ресторане – прекрасное обслуживание, не обращающее на себя внимания.
Многие годы в обучении лидирующую роль первого языка играл язык Паскаль. Он и сегодня сохраняет свои позиции, хотя и появились другие претенденты, среди которых назову двух – Java и C#.
Правильно устроенный программистский мир является многоязычным миром. Поэтому, не настаивая на исключительности, рассмотрим, почему C# может претендовать на роль первого языка программирования. Отмечу следующие его достоинства:
легко поддерживает различные модели программирования, применяемые на начальных этапах обучения.
являясь языком профессионального программирования с большим будущим, обеспечивает легкий переход от обучения к профессиональной работе.
предоставляет большой набор образцов программирования, представленных классами библиотеки Framework .Net.
На начальном этапе задачи обучения связаны не столько с языком, сколько с выработкой алгоритмического мышления. Эти задачи многообразны и достаточно сложны. Требуется понимание новых понятий: переменных и типов данных. Требуется умение описывать процесс вычислений ограниченным набором управляющих структур – выбора, циклов, рекурсии. Требуется знание основ представления данных и классических алгоритмов. И нужно не только знать, но и уметь. Нужно уметь писать программы! И с первых шагов программирования нельзя забывать об эффективности и корректности разрабатываемых программ.
Алгоритмическая мысль, как и всякая мысль, требует оформления. Роль слова, роль языка немаловажна. Язык программирования является важной частью начального процесса обучения программированию. С чего начинается обучение ребенка – скажи «мама».
Работая над задачником, я ориентировался на возможность его применения вместе с учебником для обучения началам программирования при выборе языка C# в качестве первого языка программирования. Методические указания к задачнику должны помочь начинающим в понимании материала учебника, ориентированного на подготовленного слушателя. Некоторые разделы учебника при первом чтении могут быть опущены.
Во многом от лектора зависит, как скоро и в какой мере вводить объектный стиль программирования. В методических указаниях к задачнику рассматриваются различные модели программирования, все из которых используют язык C# и среду Visual Studio. И на C# можно писать программы, ничего не зная о классах и объектах.
В заключение этого краткого введения хочу принести благодарности моим коллегам Михаилу Дехтярю и Сергею Архипову. Они прочитали отдельные разделы этого текста и сделали весьма полезные замечания. Вся вина за оставшиеся ошибки лежит целиком на мне. Моя особая благодарность Евгению Веселову, работающему теперь в корпорации Майкрософт. Он прочитал одну из глав задачника и сделал ряд важных замечаний по стилю программирования. Я планирую провести ревизию кода, представленного в задачнике, и добавить специальный раздел, посвященный стилю программирования.