- •Указания по выполнения практических и лабораторных работ
- •Лабораторная работа № 1 Блок-схемы как графическое представление алгоритмов. Основные блоки, используемые в блок- схемах алгоритмов
- •Краткие теоретические сведения Основные этапы решения задач на компьютере
- •Языки программирования
- •Трансляторы
- •Язык программирования Паскаль
- •Использование среды программирования турбо паскаль
- •Порядок выполнения работы
- •Типы вычислительных процессов
- •Блок-схемы алгоритмов
- •Примеры составления блок-схемы алгоритма
- •Основные файлы пакета Турбо Паскаль
- •Запуск интегрированной среды программирования Турбо Паскаль
- •Работа с меню ис
- •Меню File
- •Меню Run
- •Меню Compile
- •Меню Debug
- •Меню Tools
- •Меню Options
- •Меню Window
- •Меню Help
- •Порядок выполнения работы
- •Процедуры ввода-вывода
- •Порядок выполнения работы
- •Оператор записи WriteLn аналогичен процедуре Write, но после вывода последнего в списке значения для текущей процедуры WriteLn происходит перевод курсора к началу следующей строки.
- •Пример программы с использованием процедур ввода-вывода данных с различными форматами выводимых данных
- •Порядок выполнения работы
- •Операторы языка Паскаль
- •Оператор присваивания
- •Оператор безусловного перехода (go to)
- •Порядок выполнения работы
- •Оператор выбора case
- •Порядок выполнения работы
- •Оператор повтора for
- •Примеры программ с использованием оператора for
- •Оператор повтора Repeat
- •Пример программы с использованием оператора repeat
- •Пример программы с использованием операторов присваивания, повтора и выбора
- •Порядок выполнения работы
- •Пример программы с использованием оператора повтора while
- •Порядок выполнения работы
- •Примеры описания одномерных и двумерных массивов
- •Действия над массивами
- •Действия над элементами массива
- •Ввод-вывод элементов массива
- •Пример программы ввода-вывода одномерного массива
- •Пример программы ввода-вывода двумерного массива
- •Порядок выполнения работы
- •Пример программы нахождения в одномерном массиве максимального элемента
- •Порядок выполнения работы
- •Порядок выполнения работы
- •Основные логические структуры:
- •Функции в Паскале
- •Встроенные функции и процедуры
- •Арифметические процедуры и функции
- •Скалярные процедуры и функции
- •Функции преобразования типов
- •Процедуры управления программой
- •Специальные процедуры и функции
- •Вызов стандартной процедуры или функции
- •Порядок выполнения работы
- •Пример программы с использованием функции, определенной пользователем
- •Порядок выполнения работы
- •Пример программы с использованием процедуры, определенной пользователем
- •Механизм передачи параметров
- •Порядок выполнения работы
- •Нетрадиционное использование подпрограмм. Косвенная рекурсия
- •Порядок выполнения работы
- •Линейный поиск
- •Линейный поиск в упорядоченном массиве данных
- •Бинарный (двоичный) поиск
- •Пример программы с использованием алгоритма бинарного поиска
- •Порядок выполнения работы
- •Методы внутренней сортировки
- •Сортировки включением
- •Сортировка выбором
- •Порядок выполнения работы
- •Шейкерная сортировка
- •Пирамидальная сортировка
- •Обменная сортировка разделением
- •Порядок выполнения работы
- •Естественное слияние
- •Многопутевое слияние
- •Порядок выполнения работы
- •Пример разработки собственного модуля
- •Порядок выполнения работы
- •Скалярные процедуры и функции
- •Функции преобразования типов
- •Процедуры управления программой
- •Специальные процедуры и функции
- •Вызов стандартной процедуры или функции
- •Порядок выполнения работы
- •Формат описания строкового типа
- •Фрагмент описания строковых данных
- •Стандартные строковые процедуры и функции
- •Пример программы работы со стандартными строковыми процедурами и функциями
- •Примеры программ работы со строковыми переменными
- •Порядок выполнения работы
- •Пример программы работы с записями
- •Порядок выполнения работы
- •Пример программы работы с записями
- •Порядок выполнения работы
- •Операции над множествами
- •Объединение Пересечение Разность
- •Порядок выполнения работы
- •Формат описания файлового типа
- •Средства обработки файлов
- •Текстовые файлы
- •Пример программы работы с текстовым файлом
- •Порядок выполнения работы
- •Средства работы с типизированными файлами
- •Пример программы работы с типизированным файлом
- •Порядок выполнения работы
- •Средства работы с нетипизированными файлами
- •Пример программы для работы с типизированными файлами
- •Порядок выполнения работы
- •Распределение памяти при выполнении программы
- •Пример программы распределения памяти и получения доступа к полям psp.
- •Порядок выполнения работы
- •Статические и динамические переменные
- •Указатели
- •Типизированные указатели
- •Нетипизированный указатель (pointer)
- •Доступ к переменной по указателю
- •Управление динамической памятью
- •Процедуры динамического распределения
- •Пример программы с использованием динамической памяти
- •Порядок выполнения работы
- •Пример программы создания и использования связанного списка
- •Порядок выполнения работы
- •Параметр процедурного типа
- •Порядок выполнения работы
- •Контрольные вопросы
- •Литература
- •Содержание
Пример разработки собственного модуля
Разработку собственного модуля рассмотрим на следующем примере:
Пусть дано задание: разработать личную библиотеку, включив в нее процедуры:
ввода элементов числовой матрицы размером N*N;
транспонирования матрицы;
вывода результирующей матрицы.
В основной программе ввести размер матрицы N.
Начнем разработку модуля, который будет носить название Matrix. Программно это будет выглядеть так:
Unit Matrix;
{Зарезервированное слово Unit служит для указания имени библиотеки. Это имя
должно совпадать с именем PAS-файла библиотеки (т.е библиотека Matrix должна
находиться с файле Matrix.Pas), а иначе компилятор даст ошибку при попытке
использования такой библиотеки}
Interface
{Секция Interface содержит описания общедоступных типов данных, констант,
процедур и функций. Т.е. все, что будет здесь находиться можно будет
использовать при подключении данной библиотеки.}
Type
TMatrix = array [1..10,1..10] of Integer; { Квадратная матрица }
procedure MatrInput (Var m : TMatrix; n : Integer); { ввод матрицы }
procedure MatrOutput (Var m : TMatrix; n : Integer); { вывод матрицы }
procedure MatrTransp (Var m : TMatrix; n : Integer); { транспонирование }
Implementation
{Секция Implementation содержит реализацию тел процедур и функций, описанных
в Interface. Также здесь могут содержаться типы данных, константы, процедуры
и функции, необходимые для работы, но которые не будут видны программе при
подключении библиотеки.}
{Процедура обмена местами двух элементов матрицы (x1,y1) и (x2,y2).
Эта процедура используется при транспонировании матрицы, но ее
нельзя вызвать при подключении библиотеки, т.к. она не объявлена
в секции Interface.}
procedure Swap (Var m : TMatrix; x1,y1,x2,y2 : Integer);
var
temp : Integer;
begin
temp := m[x1,y1];
m[x1,y1] := m[x2,y2];
m[x2,y2] := temp;
end;
{Ввод матрицы с клавиатуры. Параметры процедуры здесь не указаны, т.к. они есть в секции Interface }
procedure MatrInput;
var
i,j : Integer;
begin
for i:=1 to n do
begin
Write(i:3,'-я строка : ');
for j:=1 to n do Read(m[i,j]);
ReadLn;
end;
end;
{Транспонирование матрицы.}
procedure MatrTransp;
var
i,j : Integer;
begin
for i:=1 to n-1 do
for j:=i+1 to n do
Swap (m,i,j,j,i);
end;
{Вывод матрицы на экран.}
procedure MatrOutput;
var
i,j : Integer;
begin
for i:=1 to n do
begin
Write(i:3,'-я строка : ');
for j:=1 to n do Write (m[i,j]:4);
WriteLn;
end;
end;
{Эта секция может использоваться для инициализации работы библиотеки.}
Begin
End.
Создание модуля закончено. Теперь необходимо создать файл, который будет содержать текст основной программы, в которой будет подключаться разработанный выше модуль.
{Это отдельный файл, содержащий основную программу}
Uses
Crt, { Библиотека стандартных процедур управления экраном и клавиатурой }
Matrix; {Наш разработанный модуль-библиотека работы с квадратными матрицами (личная)}
Var
m : TMatrix; { Объявляем матрицу - максимальный размер 10*10 }
n : Integer; { Размер матрицы }
Begin
{ Повторяем ввод размера, пока не будет введено корректное значение}
repeat
ClrScr;
Write('Введите размер матрицы (1..10) : ');
ReadLn(n);
until (n >= 1) and (n <= 10);
WriteLn;
WriteLn('Введите матрицу размера',n,'*',n,'по строкам:');
MatrInput (m,n); {вызов процедуры ввода матрицы, определенной в модуле Matrix}
{Транспонируем ее }
MatrTransp (m,n); {вызов процедуры транспонирования матрицы, определенной в модуле Matrix}
{ Выведем результат на экран }
WriteLn;
WriteLn('Транспонированная матрица :');
MatrOutput (m,n); {вызов процедуры вывода матрицы, определенной в модуле Matrix}
End.