1. Понятие о языках программирования
Назначение языков программирования. Программа, данные и действия, описания и операторы. Объекты, их именования. Языки программирования Паскаль и Фортран - история возникновения, область применения. Определение языка программирования. Алфавит. Лексика, синтаксис и семантика. Лексемы и понятия. Синтаксические правила, синтаксические диаграммы. Понятие исполняющей машины.
2. Краткий очерк языка Паскаль.
Переменные и константы, типы значений - целые, вещественные, литерные. Выражения и оператор присваивания, операции, стандартные функции. Ввод и вывод. Простейшие вычислительные программы. Составные значения, массивы, записи.
Управление вычислениями и структурные операторы - условные операторы, операторы цикла, составные операторы.
Процедуры и функции - описания и вызовы, аргументы и результаты.
3. Простые данные и вычисления
Понятие типа. Стандартные типы - целый, вещественный, логический, литерный. Представление арифметических значений - фиксированное, плавающее, нормализованность. Операции над целыми и вещественными значениями. Перечисляемые типы и отрезки типов. Операции и стандартные функции. Выражения и оператор присваивания. Старшинство операций.
Идентичность и согласованность типов.
4. Управление вычислениями и структура программы
Структурные операторы: составной, условный, выбирающий, операторы циклов. Метки и операторы перехода. Управление вычислениями и исполняющая машина. Структура программы - разделы меток, констант, типов, переменных, процедур и функций, операторов. Память исполняющей машины.
5. Составные данные
Конструкторы основных типов. Массивы и записи, описание и использование, ввод и вывод массивов и записей. Множества и операции над множествами. Файлы, переменные файлы и буфер файла. Операции с файлами. Стандартные файлы, ввод и вывод, формат вывода.
6. Процедуры и функции
Описание и вызовы прорцедур. Формальные и фактические параметры, их соответствие. Подстановка параметров, параметры-значения и параметры-переменные. Организация памяти исполняющей машины. Блоки, области действия описаний и области существования объектов, правила локализации, локальные и нелокальные объекты.
7. Данные с динамической организацией
Указательные типы и генерация элементов памяти. Использование указателей для образования составных значений с динамической организацией. Примеры динамических составных данных: списки, стеки, деревья.
8. Методы разработки программ
Использование типовых схем. Типовые схемы нахождения экстремального значения, поиска элемента с заданным свойством, порождения и суммирования элементов последовательности, нахождения интегральных свойств составных данных. Зависимость типовой схемы от структуры обрабатываемых данных. Дисциплинированное использование операторов перехода как завершителей циклов.
Детализирующая разработка программ с использованием структурных операторов. Структурированные программы. Примеры детализирующей разработки.
Выбор организации составных значений и его влияние на организацию вычислений. Представление составных значений, внутреннее и внешнее представление, влияние возможностей ввода, наглядность представления и эффективности вычислений.
Разработка эффективных программ, критерии эффективности. Приемы повышения эффективности программ.
Выбор процедурной основы программы. Процедуры и функции как операции над составными данными, как обобщенные операции. Использование процедур и функций для построения надежных и наглядных программ. Независимость обозначений объектов и правила локализации.
Использование рекурсивной техники для построения программ. Рекурсивные прорцедуры. Понятие глубины рекурсии и поколения переменных. Особенности рекурсивного представления алгоритмов.
Разработка программы по спецификации задачи. Рекурсивное и итеративное представления алгоритмов, их достоинства и недостатки. Рекурсивная обработка данных с динамической организацией.
9. Элементы языка Фортран
Алфавит Фортрана и правила записи программы.
Данные о Фортране и организация памяти исполняющей машины. Типы и размеры значений, константы и переменные, массивы и расположение компонент. Описания и возможность умолчаний, задание начальных значений. Наложение переменных (эквивалентность).
Выражения и операторы присваивания. Стандартные и внутренние функции.
Операторы управления вычислениями: оператор перехода, условные логический и арифметический операторы, цикл и оператор продолжения.
Форматы, форматные ввод и вывод, список вывода и неявные циклы. Простые программы на Фортране, описательная и операторная части, оператор останова.
10. Модульное программирование на Фортране
Модульная структура программы на Фортране: головной модуль, модули-подпрограммы, модули-функции. Параметры подпрограммы и функций, локальные переменные, общие переменные модулей, блоки общих переменных. Организация памяти в модульной программе, правила локализации имен. Межмодульные связи.
11. Этапность разработки программы
Фиксация алгоритма на предпрограммном уровне, блок-схемы, структурные схемы. Спецификация программных модулей. Нисходящее проектирование программ.
Разработка наглядных программ. Использование мнемоники, комментарии. Защитное программирование модулей, утверждения, контроль данных.
Отладка программ. Система тестов. Средства отладки.
Документирование.
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).
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.
Программу составил
доц. И.В. Поттосин