ПРОГРАММА лекционного курса «Программирование и алгоритмические языки» (1-й семестр, 54 часа)

advertisement
РАБОЧАЯ ПРОГРАММА лекционного курса
«Программирование и алгоритмические языки»
(1-й семестр, 54 часа)
ЦЕЛЬ И ЗАДАЧИ КУРСА. Цель курса - ввести в круг
понятий и задач, связанных с использованием языков
программирования,
с
тем,
чтобы
студенты
могли
самостоятельно создавать программы на языках высокого
уровня. Задача курса состоит в выработке у студентов
навыков
использования
языков
программирования
для
создания систем обработки данных и обоснованного выбора
средств
программирования.
Курс
поддерживается
соответствующей
учебной
(аудиторной)
практикой
и
практикумом на ЭВМ.
От составителей.
1. Наиболее важной и «тонкой» составителям представляется проблема
мотивации курса. Составители исходят из того, что деятельность
программиста – это практическая математическая деятельность людей
для людей.
В практике программирования неизбежно используются методы
абстрагирования-конкретизации и не просто выгодно, а неизбежно
необходимо опираться на прагматично понимаемые (соответственно
представленные и изложенные...) математические методы, модели, их
свойства и пределы их применимости. Это представляется надежной
основой мотивации курса.
2. В первом разделе «Основные понятия процедурного программирования»
сформулированы почти все базовые понятия, которые составляют
основное содержание курса. Однако не следует это понимать, как
установку на полное и полноценное изложение всего, что связано с
этими понятиями, уже в самом начале курса. Что из этого материала,
и в каком виде лектор фиксирует в начале, а что и каком виде он
разворачивает впоследствии, определяет лектор.
Раздел на содержательном уровне фиксирует «опорные точки» языка
описания, возможность и необходимость его формализации.
3. В третьем разделе «Алгоритмизация задач» приведены классы задач,
на основе которых в курсе рассматриваются методы и приемы
алгоритмизации. Также, не следует это понимать, как установку на
вынесение этого материала именно в завершающий период курса.
Естественно, в изложении материала предыдущих двух разделов
обязательно
присутствуют
задачи
и
их
решения
на
основе
соответствующих методов и приемов алгоритмизации. Еще раз отметим,
лектор самостоятельно определяет, в каком порядке разворачивать
материал курса и как мотивировать свой порядок изложения.
Цель раздела - представить базовые, изначально и естественно
возникающие на практике проблемы, мотивирующие математические
методы и, в свою очередь, являющиеся сферой их приложения.
Введение.
Автоматизация
рутинной
деятельности
как
гуманитарная цель программирования. Программирование как
математическая деятельность. Средства – информационное
моделирование, последовательное определение строения и
поведения больших и сложных систем.
1
1. Основные понятия процедурного программирования. 18 час.
Поведение объектов - динамические процессы и их
математическое информационное моделирование. Специфика и
специализация математических языков описания моделей.
Внешняя
среда
процесса,
входные
и
выходные
информационные
потоки.
Цель
и
точность
модели.
Спецификация как однозначная постановка целевой задачи,
формальное определение преобразования входных потоков в
выходные на некотором языке. Программа как решение задачи
в виде определения того же преобразования на заданном
языке.
Внутренние
состояния
процесса,
действия
по
преобразованию состояний и порядок выполнения действий.
Многоуровневое иерархическое описание информационной
модели на языке блок-схем.
Данные. Тип данных (T) как множество возможных значений
и
набор
допустимых
операций
над
ними.
Базовые
и
производные типы данных. Константы (C), переменные (V) и
выражения (E), их значения и обозначения. Переменные как
хранилища данных. Состояния программы как именованный
набор хранимых значений.
Действия
(S).
Семантика
действий
как
операторов
преобразования состояний программы. Базовые действия ввод данных (прием информации), вывод данных (передача
информации)
и
присваивание,
как
элементарное
преобразование информации.
Структуры управления порядком выполнения действий.
Группировка действий - последовательная, условная и
циклическая. Семантика структур управления как операций
определяющих новые преобразования состояний на основе
ранее определенных. Связь по управлению (логическая
связь) и информационная связь между действиями. Процесс
выполнения программы как дискретный детерминированный
процесс преобразования состояний, трассировка программы.
Структуры данных. Группировка данных – конструкторы
структурных типов данных и операций доступа и записи
значений компонентов. Именованное (индексное) декартово
произведение как базовая семантика структурных типов.
Технология программирования.
Структуры управления и структуры данных как средство
преодоления сложности анализа больших систем и синтеза их
информационных
моделей.
Уровни
абстрагированияконкретизации действий и данных.
Компоновка программы – процесс определения все более
сложных
действий
на
основе
ранее
определенных,
последовательное
восхождение
к
целевому
действию.
Проектирование программы - нисходящий процесс пошаговой
декомпозиции целевого действия на все более простые и
конкретные. Цикл жизни программных систем.
2
2. Базовый Паскаль. 18 час.
Особенности формальных языков. Синтаксис и основные
классы понятий (T,C,V,E,S), семантика и прагматика языков
программирования.
Данные в языке Паскаль.
Классификация типов данных – скалярные (базовые) и
структурные (составные), стандартные (предопределенные) и
пользовательские (определяемые программистом).
Определение типа. Описание переменных. Константы,
операции, стандартные функции и выражения.
Стандартные скалярные типы integer,
real,
char,
boolean. Пользовательские скалярные типы - перечислимый и
ограниченный (отрезок). Упорядоченность и порядковые типы.
Действия
в
языке
Паскаль.
Базовые
операторы
–
присваивание, оператор процедуры и процедуры стандартного
ввода (READ) и вывода (WRITE). Структурные операторы.
Структура Паскаль-программы. Разделы описаний и раздел
операторов. Правила использования имен.
Структурные типы в языке Паскаль. Селектор компонента и
компонентная переменная. Массив - определение типа,
переменная с индексами. Стандартный строковый тип данных.
Запись - определение типа, переменная указатель поля.
Множество - определение типа, операции и выражения.
Типизированный файл - определение типа и средства доступа
к компонентам файла. Стандартный тип TextFile (текстовые
файлы) и средства форматирования выходных данных.
Процедуры и функции в языке Паскаль как средство
определения
сложных
действий,
выделения
и
пользовательского именования подзадач. Описание процедур
и функций, оператор процедуры и указатель функции.
Организация информационной связи между вызывающей и
вызываемой процедурой. Параметры-переменные, параметрызначения и параметры-процедуры (функции). Локальные и
глобальные объекты. Операциональная семантика оператора
процедуры как модификация тела процедуры.
3. Алгоритмизация задач. 18 час.
Последовательные рекуррентные вычисления и вычисления
разбором случаев. Разработка рекуррентных соотношений
(информационных связей) и уровней управления вычислениями
(вложений
структур
управления).
Повторные
(пере)вычисления и сохранение результатов вычислений для
их повторного использования.
Управление обработкой последовательностей – просмотр,
порождение и синхронизация обработки.
Язык логики предикатов и решетка множеств. Полное и
быстрое вычисление логических выражений. Спецификация и
3
вычисление
сложных
свойств.
Представление
множеств
массивами и алгоритмы основных операций с множествами.
Упорядоченные массивы и файлы. Простые алгоритмы
сортировки, поиск и основные операции.
Алгоритмы
основных
операций
текстовой
обработки.
Символьный тип как
универсальный
тип
данных. Задача
преобразования типов - символьное представление числовых
значений.
Технология
программирования
в
терминах
задачи
с
использованием
процедур-функций
и
многоуровневой
группировки данных. Моделирование объектов предметной
области как содержательных типов. Выделение и реализация
подзадач.
ЛИТЕРАТУРА.
1. В.Г. Абрамов, Н.П. Трифонов, Г.Н. Трифонова. Введение
в язык Паскаль. М.: Наука, 1988. - 318 с.
2. Вирт Н. Систематическое программирование. Введение.
М.: Мир, 1977. - 183 с.
3. Грогоно П. Программирование на языке Паскаль. М.:
Мир, 1982.
4. К.
Йенсен,
Н.
Вирт.
ПАСКАЛЬ.
Руководство
для
пользователя
и
описание
языка.
М.
Финансы
и
статистика, 1982. - 151 с.
5. А.И. Марченко, Л.А. Марченко. Программирование в
среде Turbo Pascal. М.:Бином Универсал,1997. – 496 с.
6. Вирт Н. Алгоритмы+структуры данных = программы. М.:
Мир, 1985. Алгоритмы и структуры данных. М: Мир,
1989. – 360 с.
7. У.
Дал,
Э.
Дейкстра,
К.
Хоор.
Структурное
программирование. М.: Мир, 1975. - 248 с.
8. Задачи для программирования по теме «Сортировка
данных».
Методическая
разработка
под
ред.
В.С.
Кугуракова. Казань, КГУ, 1987.
ДОПОЛНИТЕЛЬНАЯ ЛИТЕРАТУРА.
1. С.А.
Абрамов.
Математические
построения
и
программирование. М.: Наука ГРФМЛ, 1978.- 192.
2. Д. Грис. Наука программирования. М:Мир,1984. – 416 с.
3. Дейкстра Э. Дисциплина программирования. М.:Мир,1978.
4. С. Лавров. Программирование. Математические основы,
средства, теория. СПб.: БХВ-Петербург, 2001. - 320 с.
5. Б. Мейер, К. Бодуен. Методы программирования. т1-2.
М.: Мир, 1982.
Составители доц. Бухараев Н.Р., ст.пр. Самитов Р.К.
Обсуждена на заседании кафедры теоретической кибернетики.
4
Download