Content:Оглавление References:Литература:TitleТитул
 


Предисловие

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

Данная книга предназначена для начального обучения студентов вузов программированию на базе языка Zonnon для платформы .NET [19, 29, 45, 48, 50] и опирается на опыт преподавания основного курса по программированию для студентов механико-математического факультета Новосибирского государственного университета (ММФ НГУ) [28]. Ее дополняет книга авторов "Практикум по программированию", предназначенная для использования студентами и преподавателями вузов в ходе проведения компьютерного практикума по курсу.

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

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

Следует отметить, что использование в качестве основы вводной части курса подмножества "живого" языка программирования на ММФ НГУ является традиционным. Первым использовалось подмножество языка Алгол-60, получившее название языка Минал [25]. Затем, когда в НГУ появились терминальные классы с диалоговым языком, являющимся вариантом языка Фортран, Минал был заменен языком мини-Фортран [44]. В начале 80-х годов прошлого столетия в НГУ появилась одна из первых реализации языка Паскаль, тогда еще на машинах серии ЕС [62], и с этого времени вплоть до настоящего времени место первого учебного языка программирования для студентов ММФ НГУ бессменно занимает язык мини-Паскаль [28].

Книга содержит почти 3000 задач и состоит из 6 глав, предназначеных для изучения студентами основных понятий программирования и постепенного овладения навыками разработки на языке Zonnon линейных, ветвящихся и итеративных алгоритмов, алгоритмов с массивами и процедурами.

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

Главу завершает список заданий. Каждая из формулировок заданий представляет собой фактически схему для построения конкретных вариантов задания -- индивидуальных задач на программирование для всех студентов учебной группы. Эти варианты получаются в результате выбора подходящих частей текста, составляющего формулировку задания по значению параметра $N$. Строки факультативных частей текста формулировок заданий напечатаны со смещением вправо и с указанием условий на $N$, при которых соответствующие части должны включаться в формулировку конкретного варианта задания. При записи условий на $N$ используется следующее сокращение: вместо выражения $N$mod <число> пишется просто $N$ <число>, так что большинство условий для формирования вариантов задания являются простыми логическими выражениями над $N, N2, N3, N4, N5, N6$ и т.д. Например, 7-й вариант задания 1.3.4 следует читать так: "Описать синтаксическую диаграмму, которая задает бесконечное множество всех таких идентификаторов $\alpha$, что $\alpha$ начинается с последовательности букв нечетной длины, за которой следует цифра 7, а затем следует последовательность, не содержащая согласных букв, но содержащая четную цифру".

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

Тем, кто будет использовать книгу для самостоятельного изучения программирования и/или желает углубить свои знания по программированию, можно рекомендовать книги [1-51]. Фундаментальным вопросам конструирования корректных и эффективных программ с нетривиальными структурами данных и действий посвящен целый ряд монографий [1, 3 - 13, 15 - 18, 24 - 27, 33 - 42, 47, 49-50]. В книгах [1-2, 7, 12-14, 21, 23, 32, 41, 49-50] содержится большое число упражнений и задач по программированию, снабженных рекомендациями по широкому кругу вопросов, касающихся стиля написания программ, рациональных методов их разработки и оптимизации, стратегии отладки и тестирования.

Авторы.
 

Content:Оглавление References:Литература:TitleТитул


© В.Н. Касьянов, Е.В. Касьянова, 2004