- •Указания по выполнения практических и лабораторных работ
- •Языки программирования
- •Трансляторы
- •Язык программирования Паскаль
- •Использование среды программирования турбо паскаль
- •Типы вычислительных процессов
- •Блок-схемы алгоритмов
- •Примеры составления блок-схемы алгоритма
- •Основные файлы пакета Турбо Паскаль
- •Запуск интегрированной среды программирования Турбо Паскаль
- •Работа с меню ис
- •Меню File
- •Меню Run
- •Меню Compile
- •Меню Debug
- •Меню Tools
- •Меню Options
- •Меню Window
- •Меню Help
- •Процедуры ввода-вывода
- •Оператор записи WriteLn аналогичен процедуре Write, но после вывода последнего в списке значения для текущей процедуры WriteLn происходит перевод курсора к началу следующей строки.
- •Пример программы с использованием процедур ввода-вывода данных с различными форматами выводимых данных
- •Операторы языка Паскаль
- •Оператор присваивания
- •Оператор безусловного перехода (go to)
- •Оператор выбора case
- •Оператор повтора for
- •Примеры программ с использованием оператора for
- •Оператор повтора Repeat
- •Пример программы с использованием оператора repeat
- •Пример программы с использованием операторов присваивания, повтора и выбора
- •Пример программы с использованием оператора повтора while
- •Примеры описания одномерных и двумерных массивов
- •Действия над массивами
- •Действия над элементами массива
- •Ввод-вывод элементов массива
- •Пример программы ввода-вывода одномерного массива
- •Пример программы ввода-вывода двумерного массива
- •Пример программы нахождения в одномерном массиве максимального элемента
- •Порядок выполнения работы
- •Порядок выполнения работы
- •Основные логические структуры:
- •Встроенные функции и процедуры
- •Арифметические процедуры и функции
- •Скалярные процедуры и функции
- •Функции преобразования типов
- •Процедуры управления программой
- •Специальные процедуры и функции
- •Вызов стандартной процедуры или функции
- •Пример программы с использованием функции, определенной пользователем
- •Пример программы с использованием процедуры, определенной пользователем
- •Механизм передачи параметров
- •Нетрадиционное использование подпрограмм. Косвенная рекурсия
- •Линейный поиск
- •Линейный поиск в упорядоченном массиве данных
- •Бинарный (двоичный) поиск
- •Пример программы с использованием алгоритма бинарного поиска
- •Методы внутренней сортировки
- •Сортировки включением
- •Сортировка выбором
- •Реализация алгоритмов обменных сортировок при написании программы на Паскале
- •Шейкерная сортировка
- •Пирамидальная сортировка
- •Обменная сортировка разделением
- •Естественное слияние
- •Многопутевое слияние
- •Пример разработки собственного модуля
- •Скалярные процедуры и функции
- •Процедуры управления программой
- •Специальные процедуры и функции
- •Вызов стандартной процедуры или функции
- •Формат описания строкового типа
- •Фрагмент описания строковых данных
- •Стандартные строковые процедуры и функции
- •Пример программы работы со стандартными строковыми процедурами и функциями Порядок выполнения работы
- •Примеры программ работы со строковыми переменными
- •Пример программы работы с записями
- •Пример программы работы с записями
- •Операции над множествами
- •Объединение Пересечение Разность
- •Формат описания файлового типа
- •Средства обработки файлов
- •Текстовые файлы
- •Пример программы работы с текстовым файлом
- •Средства работы с типизированными файлами
- •Пример программы работы с типизированным файлом
- •Средства работы с нетипизированными файлами
- •Пример программы для работы с типизированными файлами
- •Распределение памяти при выполнении программы
- •Пример программы распределения памяти и получения доступа к полям psp.
- •Статические и динамические переменные
- •Указатели
- •Типизированные указатели
- •Нетипизированный указатель (pointer)
- •Доступ к переменной по указателю
- •Управление динамической памятью
- •Процедуры динамического распределения
- •Пример программы с использованием динамической памяти
- •Пример программы создания и использования связанного списка
- •Параметр процедурного типа
Параметр процедурного типа
В Паскале допускается передача в качестве параметра имени других процедур или функций.
Например:
Type
Func = function(x,y:byte):byte;
Proc = procedure(var x,e:byte);
var
P1 : Proc; F1: Func;
При этом должны совпадать число параметров и соответственно типы параметров. Всем процедуры и функции, имена которых присваиваются процедурным переменным, необходимо компилировать в режиме {$F+}.
Описание процедурных типов вводится в разделе Type. Синтаксис описания совпадает с заголовком процедуры, однако имя процедуры в описании опускается.
Имена параметров в описании процедурного типа играет чисто иллюстративную роль. Никакого влияния на значение этого описания данные имена не оказывают.
Процедурной переменной может быть присвоено значение другой процедурной переменной, имя процедуры или функция. При этом переменная слева и значение в правой части оператора присваивания должны быть совместимы по присваиванию.
Для обеспечения такой совместимости процедура, если её нужно присвоить процедурной переменной, должна удовлетворять следующим требованиям:
Она должна компилироваться в состоянии {$F+} (в исходном тексте программы перед описанием такой процедуры должна быть размещена директива компилятора {$F+}, а в конце описания {$F-})
Она не должна быть стандартной процедурой или функцией.
Она не должна быть вложенной.
Она не должна быть процедурой типа inline.
Она не должна быть процедурой прерывания (interrupt).
Пример 3.
Program Primer3;
Type
Func=function(x,y:anteger):integer;
{$F+}
Function Add(a,b:integer):integer;
Begin
Add:=a+b;
end;
Function Multiplay(a,b:int):int;
Begin
Multiplay:=a+b;
end;
Function Div(a,b:int):int;
Begin
Div:=a/b;
end;
{$F-}
Procedure RAB(n,m:integer;Operation:Func); {Operation-параметр процедурного типа}
Var
i,j:integer;
Begin
for i:=1 to n do
for j:=1 to m do
write(operation (i,j):5);
end;
Begin {основная программа}
RAB(10,10,Add); {вызов процедуры RAB с последним параметром- процедурой Add}
RAB(20,10,Multiplay); ); {вызов процедуры RAB с последним параметром- процедурой Multiplay}
RAB(10,5,Div); ); {вызов процедуры RAB с последним параметром- процедурой Div}
End.
Порядок выполнения работы
Изучить теоретические сведения по теме “ Разработка программы для работы с процедурным типом”.
Получить у преподавателя индивидуальное задание и разработать программу для работы с процедурными типами данных согласно заданному варианту.
Показать работающую программу преподавателю.
Ответить на контрольные вопросы.
Контрольные вопросы
Нетипизированный параметр. Способы присвоения конкретного типа нетипизированному параметру.
Назначение процедурной переменной, объявление.
Обеспечение совместимости процедуры, если её нужно присвоить процедурной переменной.
Литература
Гусева А. И. Учимся программировать: Pascal 7.0. - М.: Бином, 1999.
Сурков Д.А., и др. Программирование в среде Borland Pascal для Windows.-Мн.: “Вышэйшая школа”, 1996.
Грызлов В.И. и др. Pascal 7.0.- Киев, BHV, 1999.
Вирт Н. Алгоритмы и структуры данных –М.: “Мир”, 1989
Содержание
Лабораторная работа № 1 4
Блок-схемы как графическое представление алгоритмов. Основные блоки, используемые в блок- схемах алгоритмов 4
Лабораторная работа № 2 9
Построение блок-схем алгоритмов 9
Лабораторная работа № 3 15
Вызов интегрированной среды (ИС) языка программирования Паскаль. Структура основного экрана. Изучение меню 15
Разработка программ на Паскале включает в себя следующие действия (этапы разработки программы): ввод и редактирование текста программы на языке программирования Паскаль, ее трансляцию, отладку. 15
Для выполнения каждого этапа применяются специальные средства: для ввода и редактирования текста используется редактор текстов, для трансляции программы - компилятор, для построения исполняемого компьютером программного модуля с объединением разрозненных откомпилированных модулей и библиотекой стандартных процедур Паскаля - компоновщик (linker), для отладки программ с анализом ее поведения, поиском ошибок, просмотром и изменением содержимого ячеек памяти компьютера- отладчик (debugger). 15
Лабораторная работа № 4 24
Написание программы на Паскале с использованием операторов ввода-вывода данных 24
Лабораторная работа № 5 27
Написание программы на Паскале 27
с использованием операторов ввода-вывода данных с различными форматами выводимых данных 27
Лабораторная работа № 6 30
Написание программы на Паскале с использованием операторов присваивания и безусловного перехода 30
Лабораторная работа № 7 34
Написание программы на Паскале с использованием условных операторов и оператора выбора Case 34
Лабораторная работа № 8 39
Написание программы на Паскале с использованием 39
операторов повтора (For, Repeat) 39
Лабораторная работа № 9 44
Написание программы на Паскале 44
с использованием операторов повтора (While) 44
Лабораторная работа № 10 46
Написание программы на Паскале для решения задач на ввод-вывод линейных и двумерных массивов 46
Лабораторная работа № 11 53
Написание программы на Паскале для решения задач на обработку линейного массива 53
Лабораторная работа № 12 57
Написание программы на Паскале для решения задач на обработку двумерного массива 57
Лабораторная работа № 13 61
Написание программы на Паскале с использованием встроенных функций 61
Лабораторная работа № 14 66
Написание программы на Паскале с использованием функций, определенных пользователем 66
Лабораторная работа № 15 69
Написание программы на Паскале с использованием процедур, определенных пользователем. 69
Лабораторная работа № 16 74
Написание программы на Паскале с использованием рекурсии 74
Лабораторная работа № 17 78
Реализация алгоритма бинарного поиска при написании программы на Паскале 78
Лабораторная работа № 18 82
Реализация алгоритмов сортировок включением и выбором при написании программы на Паскале 82
82
Лабораторная работа № 19 85
Лабораторная работа № 20 89
Реализация алгоритмов внешних сортировок при написании программы на Паскале 89
Лабораторная работа № 21 92
Написание программы на языке Паскаль с использованием разработанного собственного модуля 92
Начнем разработку модуля, который будет носить название Matrix. Программно это будет выглядеть так: 95
Unit Matrix; 95
Interface 95
Type 95
Implementation 95
Эта процедура используется при транспонировании матрицы, но ее 95
Var 97
Begin 97
Лабораторная работа № 22 97
Изучение наиболее часто употребляемых универсальных процедур и оформление их в виде личной библиотеки программиста 97
Лабораторная работа № 23 102
Написание программы на языке Паскаль с использованием стандартных строковых процедур и функций 102
Лабораторная работа № 24 106
Написание программы на языке Паскаль с использованием строковых переменных 106
Лабораторная работа № 25 112
Написание программы на языке Паскаль с использованием записей 112
Лабораторная работа № 26 116
Написание программы на языке Паскаль с использованием записей с вариантами 116
Лабораторная работа № 27 121
Написание программы на языке Паскаль с использованием множеств 121
Лабораторная работа № 28 127
Написание программы на языке Паскаль с использованием с использованием файловых переменных. 127
Разработка программы для работы с текстовым файлом 127
Лабораторная работа № 29 136
Разработка программы для работы с типизированным файлом 136
Лабораторная работа № 30 144
Разработка программы для работы с нетипизированным файлом 144
Лабораторная работа № 31 148
Изучение карты памяти. Разработка программы доступа к полям PSP 148
Лабораторная работа № 32 151
Разработка программы использования динамической памяти 151
Лабораторная работа № 33 158
Разработка программы создания связанного списка 158
Лабораторная работа № 34 162
Разработка программы для работы с процедурным типом 162
Литература 166
Содержание 167
Литература…………………………………………………………………………166