НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
Кафедра вычислительной математики
ПРОГРАММА
курса лекций по
ПРОГРАММИРОВАНИЮ
для студентов 1-го курса
по специальности
"механика" и "прикладная математика"
на 1992/93 учебный год
 
1-й семестр

1. Введение

Понятия алгоритма, ЭВМ, программы и данных, стандартных подпрограмм и языков программирования высокого уровня, транслятора и основных этапов решения задач на ЭВМ. Синтаксис и семантика языка программирования, лексемы и понятия, синтаксические диаграммы и языковая машина.

2. Элементы языка Паскаль

Алфавит Паскаля и правила записи Паскаль-программ. Понятие типа, стандартные типы данных, переменные и константы, операции и стандартные функции. Выражения и старшинство операций. Понятие оператора (элементарного и структурированного), операторы присваивания, ввода и вывода, составной и условный операторы, операторы выбора. Общий вид Паскаль-программы.

3. Средства для построения итеративных программ

Управление вычислениями и блок-схемы. Операторы цикла: операторы цикла с условием на продолжение, операторы цикла с условием на окончание, операторы цикла с параметрами.

4. Разработка программ со структурированными данными

Простые типы данных, определяемые программистом, отрезки типов, типы, заданные перечислением значений. Конструкторы составных типов, записи, массивы, матрицы и таблицы. Идентичные и согласованные типы.

5. Разработка программ с подпрограммами

Процедуры, их описания и операторы вызова. Формальные и фактические параметры, правила их соответствия. Изменения действия - параметры-значения. Получение результатов - параметры-переменные. Вычисление единственного значения - функции. Блоки, области действия описаний и области существования объектов, локальные и нелокальные объекты. Рекурсия. Понятие глубины рекурсии - текущей и максимальной. Поколения переменных. Достоинства и недостатки рекурсивного представления алгоритмов.

6. Методы разработки качественных программ

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

1. Понятие алгоритма и программы. Средства и организация численных вычислений (/5/ - 1; /7/ - N 1.1).

2. Линейная нотация и способы задания синтаксиса (/4/ - 1, /7/ - N 1.16, 1.17).

3. Логический и литерный типы (/5/ - 1; /7/ - N1.6-1.11).

4. Составной и условный операторы (/5/ - 2; /7/ - N1.2-1.5, 1.12-1.15).

5. Оператор цикла с условием на продолжение (/5/ - 3-6; /7/ - Т 2.1-2.51).

6. Пошаговая разработка программ. Часовая контрольная на составление программы для обработки последовательности переменной длины.

7. Разбор результатов контрольной работы. Понятие стандартного и определяемого типа. Определение констант и простых типов (/7/ - N 2.53-2.54).

8. Типы массивов и записей (/5/ - 7,8; /7/ - N 4.1-4.22).

9. Операторы циклов с параметрами(/5/ - 7-9; /7/ - N 3.1-3.27).

10. Процедуры. Параметры-значения и параметры-переменные (/5/ - 11; /7/ - варианты 1а задач N 5.1-5.6).

11. Функции, их отличия от процедур (/5/ - 11; /7/ - варианты 1б задач N 5.1-5.6).

12. Закрепление материала. Обработка матриц и таблиц с использованием процедур и функций (/5/ - 9-11; /7/ - N 5.7-5.26).

13. Итоговая контрольная. Состоит из вопроса по языку и двух задач. Одна из них аналогична задаче из первой контрольной, а другая - это задача обработки таблиц или матриц с использованием процедур и функций с параметрами.
 

                      2-й семестр

7. Дополнительные средства языка Паскаль и вопросы реализации внеязыковых типов данных

Метки и операторы перехода, их дисциплинированное употребление. Необходимость объединения типов - записи с вариантами. Типы множеств. Типы файлов. Процедуры и функции как параметры. Типы стеков и очередей. Реализация стеков и очередей с помощью массивов и записей. Указательные типы и генерация элементов памяти. Использование указателей и динамических переменных для реализации стеков и очередей.

8. Язык и система Турбо-Паскаль

Компилятор и интегрированная среда Турбо-Паскаль. Особенности типов данных языка Турбо-Паскаль, целые, вещественные и строковые типы, процедурные типы, текстовые, типизированные и нетипизированные файлы. Абсолютные переменные и типизированные константы. Приведение типов значений и переменных. Управляемая компиляция, опции и директивы. Включение файлов. Модули и проектирование программ. Стандартные модули. Программирование с перекрытиями. Объектно-ориентированное программирование. Тестирование и отладка программ.

9. Элементы языка Фортран

Алфавит Фортрана, константы и имена. Правила записи Фортран-программ. Типы и размеры значений. Массивы и расположение их элементов. Описания и возможность умолчаний, задание начальных значений. Эквивалентность переменных. Выражения и встроенные функции. Операторы присваивания. Операторы управления вычислениями: операторы безусловных и вычисляемых переходов, условные операторы, операторы продолжения и останова, циклы. Форматы, форматные ввод и вывод, список вывода и неявные циклы. Простые программы на Фортране, описательная и операторная части, операторные функции.

10. Модульное программирование на Фортране

Модульная структура программы на Фортране: головной модуль, модули-подпрограммы, модули-функции. Организация памяти в модульной программе, локальные и общие переменные, блоки общих переменных, модули инициализации.

11. Особенности решения задач на Фортране

Средства отладки Фортран-программ: диагностика ошибок, пакеты и операторы отладки. Разработка наглядных Фортран-программ. Защитное программирование на Фортране. Реализация сложно структурированных данных на языке Фортран. Нисходящее проектирование Фортран-программ.
 

Темы семинарских занятий

1. Использование процедур и функций для пошаговой разработки программ (/5/ - 9-11; /7/ - N 5.7-5.26).

2. Рекурсивные процедуры и функции (/5/ - 12; /7/ - N 6.12-6.23).

3. Множества и файлы (/7/ - N 8.1-8.29).

4. Организация динамической памяти и ее использование для реализации списков и деревьев (/7/ - N 7.1-7.15).

5. Основные конструкции языка Фортран (в сравнении с аналогичными конструкциями языка Паскаль) (/4/ - N 135-255).

6. Организация ввода-вывода (/4/ - N 271-348).

7. Модульное программирование на Фортране (/4/ - N 360-386).

8. Итоговая контрольная. Состоит из двух задач: одна - это задача на составление Фортран-программы для обработки последовательности переменной длины, а другая - Паскаль-программа для обработки последовательности таблиц или матриц.

9. Зачет.

Литература
Учебники

Абрамов В.Г., Трифонов Н.П., Трифонова Г.Н. Введение в язык Паскаль. - М.:Наука,1988.

Белецки Я. Фортран 77.- М.: Высшая школа,1991.

Касьянов В.Н. Основы программирования на языке Паскаль. - Новосибирск: НГУ, 1987.

Задачники
 
Бухтияров А.М., Фролов Г.Д. Сборник задач по программированию на алгоритмических языках. - М.: Наука, 1978.

Касьянов В.Н., Сабельфельд В.К. Сборник заданий по программированию. - Новосибирск: НГУ, 1986.

Касьянов В.Н., Сабельфельд В.К. Сборник заданий по практикуму на ЭВМ. - М.: Наука, 1986.

Сборник упражнений по программированию на языке Паскаль / Агафонов В.Н., Поттосин И.В., Бежанова М.М., Сабельфельд В.К. - Новосибирск: НГУ, 1985.

Дополнительная литература

Вирт Н. Алгоритмы + структуры данных = программы. - М.:Мир,1985.

Грис Д. Наука программирования. - М.:Мир,1984.

Йенсен К., Вирт Н. Паскаль. Руководство для пользователя и описание языка. - М.:Финансы и статистика, 1982.

Уэзерелл Ч. Этюды для программирования. - М.: Мир, 1982.

Джонс Ж., Харроу К. Решение задач в системе Турбо-Паскаль.- М.: Финансы и статистика, 1991.
 

Программу составил
проф. В.Н. Касьянов