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

 

1. Понятие о языках программирования

Назначение языков программирования. Программа, данные и действия, описания и операторы. Объекты, их именования. Языки программирования Паскаль и Фортран - история возникновения, область применения. Определение языка программирования. Алфавит. Лексика, синтаксис и семантика. Лексемы и понятия. Синтаксические правила, синтаксические диаграммы. Понятие исполняющей машины.

2. Краткий очерк языка Паскаль.

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

Управление вычислениями и структурные операторы - условные операторы, операторы цикла, составные операторы.

Процедуры и функции - описания и вызовы, аргументы и результаты.

3. Простые данные и вычисления

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

Идентичность и согласованность типов.

4. Управление вычислениями и структура программы

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

5. Составные данные

Конструкторы основных типов. Массивы и записи, описание и использование, ввод и вывод массивов и записей. Множества и операции над множествами. Файлы, переменные файлы и буфер файла. Операции с файлами. Стандартные файлы, ввод и вывод, формат вывода.

6. Процедуры и функции

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

7. Данные с динамической организацией

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

8. Методы разработки программ

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

Детализирующая разработка программ с использованием структурных операторов. Структурированные программы. Примеры детализирующей разработки.

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

Разработка эффективных программ, критерии эффективности. Приемы повышения эффективности программ.

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

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

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

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

Алфавит Фортрана и правила записи программы.

Данные о Фортране и организация памяти исполняющей машины. Типы и размеры значений, константы и переменные, массивы и расположение компонент. Описания и возможность умолчаний, задание начальных значений. Наложение переменных (эквивалентность).

Выражения и операторы присваивания. Стандартные и внутренние функции.

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

Форматы, форматные ввод и вывод, список вывода и неявные циклы. Простые программы на Фортране, описательная и операторная части, оператор останова.

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

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

11. Этапность разработки программы

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

Разработка наглядных программ. Использование мнемоники, комментарии. Защитное программирование модулей, утверждения, контроль данных.

Отладка программ. Система тестов. Средства отладки.

Документирование.

Семинарские занятия
1-й семестр (7 занятий)

1. На примере программы, содержащей операторы ввода, вывода, присваивания условного оператора, обсудить в общих чертах понятие программы в языке Паскаль, ее основные разделы и конструкции. Понятие состояния памяти и его изменения в ходе вычисления (вход и присваивания) (/5/ -П.1, /7/ - П.1,2).

2. Оператор присваивания, арифметические выражения. Условный оператор и логические выражения. Операторы циклов с условием окончания и условием продолжения (/5/ - П.2, /7/ - П.3,4).

3. Понятие базисного и конструируемого типа. Массивы и записи как конструкторы типов. Введение имени типа с помощью (нерекурсивногол) описания типов (/5/ - П.2,3, /7/ - П.5-10).

4. Закрепление пройденного материала (/5/ - П.1-3, /7/ - Ч.1-3).

5. Процедуры. Параметры-значения и параметры-переменные. Измерение состояния памяти при обращении к процедуре (вызова). Глобальные переменные (/5/ - П.5, /7/ - П.11).

6. Функции, их отличие от процедур. Стандартные функции (/1/ -

П.5).

7. Разбор результатов коллоквиума и закрепление пройденного мате-

риала (/5/ - П.1-5, /7/ - П.1-11).

2-й семестр (15 занятий)

9 занятий - язык Паскаль (включая контрольную работу), 6 занятий - язык Фортран IV (включая контрольную работу). Общий принцип: конструкции Фортрана изучаются в сравнении с аналогичными конструкциями Паскаля.

1. Повторение материала 1-го семестра с упором на процедуры и функции (/5/ - П.5, /7/ - П.11).

2. Рекурсивные процедуры и функции. Параметры-процедуры (/5/ - П.5, /7/ - П.12).

3. Оператор выбора, ограниченное использование операторов перехода (/5/ - П.4).

4. Указатели, рекурсивные определения типов, использующие указатели. Работа с указателями, связанные списки, деревья (/5/ - П.7).

5. Закрепление пройденного материала (/5/ - П.3-7).

6. Множества и файлы (/5/ - П.8).

7. Закрепление пройденного материала (/5/ - П.5-8).

8. Контрольная работа.

9. Разбор результатов контрольной работы.

10. На примере программы, содержащей массив, ввод, вывод, операторы присваивания и цикла, обсудить в общих чертах понятие программы в языке Фортран и ее основные конструкции. Сравнить с аналогичной программой на Паскале. Понятие памяти и переменной. Операторы присваивания и цикла (/8/ - N 135-255).

11. Условные операторы, логические выражения и оператор перехода. Еще о вводе-выводе и формате (/8/ - N 271-348).

12. Подпрограммы, функции, операторы-функции. Связь с вызывающей программой через параметры и общие переменные (COMMON) (/8/ - N360-386).

13. Закрепление пройденного материала.

14. Контрольная работа.

15. Разбор результатов контрольной работы.

Литература

Язык Паскаль. Руководство для пользователей. Новосибирск: ВЦ СО АН СССР, 1984.

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

Любимский Э.Э., Мартынюк В.В., Трифонов Н.П. Программирование. М.:Наука,1980.

Пярнпуу А.А. Программирование на алгоритмических языках. М.:Наука,1983.

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

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

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

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

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

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

Вирт Н. Систематическое программирование. Введение М.:Мир, 1977.

Грогоро П. Программирование на языке Паскаль. М.:Мир,1982.

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

Абрамов С.А., Зима Е.В. Начало программирования на языке Паскаль. М.:Наука,1987.

 

Программу составил
доц. И.В. Поттосин