- •Указания по выполнения практических и лабораторных работ
- •Лабораторная работа № 1 Блок-схемы как графическое представление алгоритмов. Основные блоки, используемые в блок- схемах алгоритмов
- •Краткие теоретические сведения Основные этапы решения задач на компьютере
- •Языки программирования
- •Трансляторы
- •Язык программирования Паскаль
- •Использование среды программирования турбо паскаль
- •Порядок выполнения работы
- •Типы вычислительных процессов
- •Блок-схемы алгоритмов
- •Примеры составления блок-схемы алгоритма
- •Основные файлы пакета Турбо Паскаль
- •Запуск интегрированной среды программирования Турбо Паскаль
- •Работа с меню ис
- •Меню File
- •Меню Run
- •Меню Compile
- •Меню Debug
- •Меню Tools
- •Меню Options
- •Меню Window
- •Меню Help
- •Порядок выполнения работы
- •Процедуры ввода-вывода
- •Порядок выполнения работы
- •Оператор записи WriteLn аналогичен процедуре Write, но после вывода последнего в списке значения для текущей процедуры WriteLn происходит перевод курсора к началу следующей строки.
- •Пример программы с использованием процедур ввода-вывода данных с различными форматами выводимых данных
- •Порядок выполнения работы
- •Операторы языка Паскаль
- •Оператор присваивания
- •Оператор безусловного перехода (go to)
- •Порядок выполнения работы
- •Оператор выбора case
- •Порядок выполнения работы
- •Оператор повтора for
- •Примеры программ с использованием оператора for
- •Оператор повтора Repeat
- •Пример программы с использованием оператора repeat
- •Пример программы с использованием операторов присваивания, повтора и выбора
- •Порядок выполнения работы
- •Пример программы с использованием оператора повтора while
- •Порядок выполнения работы
- •Примеры описания одномерных и двумерных массивов
- •Действия над массивами
- •Действия над элементами массива
- •Ввод-вывод элементов массива
- •Пример программы ввода-вывода одномерного массива
- •Пример программы ввода-вывода двумерного массива
- •Порядок выполнения работы
- •Пример программы нахождения в одномерном массиве максимального элемента
- •Порядок выполнения работы
- •Порядок выполнения работы
- •Основные логические структуры:
- •Функции в Паскале
- •Встроенные функции и процедуры
- •Арифметические процедуры и функции
- •Скалярные процедуры и функции
- •Функции преобразования типов
- •Процедуры управления программой
- •Специальные процедуры и функции
- •Вызов стандартной процедуры или функции
- •Порядок выполнения работы
- •Пример программы с использованием функции, определенной пользователем
- •Порядок выполнения работы
- •Пример программы с использованием процедуры, определенной пользователем
- •Механизм передачи параметров
- •Порядок выполнения работы
- •Нетрадиционное использование подпрограмм. Косвенная рекурсия
- •Порядок выполнения работы
- •Линейный поиск
- •Линейный поиск в упорядоченном массиве данных
- •Бинарный (двоичный) поиск
- •Пример программы с использованием алгоритма бинарного поиска
- •Порядок выполнения работы
- •Методы внутренней сортировки
- •Сортировки включением
- •Сортировка выбором
- •Порядок выполнения работы
- •Шейкерная сортировка
- •Пирамидальная сортировка
- •Обменная сортировка разделением
- •Порядок выполнения работы
- •Естественное слияние
- •Многопутевое слияние
- •Порядок выполнения работы
- •Пример разработки собственного модуля
- •Порядок выполнения работы
- •Скалярные процедуры и функции
- •Функции преобразования типов
- •Процедуры управления программой
- •Специальные процедуры и функции
- •Вызов стандартной процедуры или функции
- •Порядок выполнения работы
- •Формат описания строкового типа
- •Фрагмент описания строковых данных
- •Стандартные строковые процедуры и функции
- •Пример программы работы со стандартными строковыми процедурами и функциями
- •Примеры программ работы со строковыми переменными
- •Порядок выполнения работы
- •Пример программы работы с записями
- •Порядок выполнения работы
- •Пример программы работы с записями
- •Порядок выполнения работы
- •Операции над множествами
- •Объединение Пересечение Разность
- •Порядок выполнения работы
- •Формат описания файлового типа
- •Средства обработки файлов
- •Текстовые файлы
- •Пример программы работы с текстовым файлом
- •Порядок выполнения работы
- •Средства работы с типизированными файлами
- •Пример программы работы с типизированным файлом
- •Порядок выполнения работы
- •Средства работы с нетипизированными файлами
- •Пример программы для работы с типизированными файлами
- •Порядок выполнения работы
- •Распределение памяти при выполнении программы
- •Пример программы распределения памяти и получения доступа к полям psp.
- •Порядок выполнения работы
- •Статические и динамические переменные
- •Указатели
- •Типизированные указатели
- •Нетипизированный указатель (pointer)
- •Доступ к переменной по указателю
- •Управление динамической памятью
- •Процедуры динамического распределения
- •Пример программы с использованием динамической памяти
- •Порядок выполнения работы
- •Пример программы создания и использования связанного списка
- •Порядок выполнения работы
- •Параметр процедурного типа
- •Порядок выполнения работы
- •Контрольные вопросы
- •Литература
- •Содержание
Пример программы работы с записями
Пусть необходимо составить программу, которая создает каталог компьютерных программ и обеспечивает поиск программ по фамилии автора.
Для описания сведений о компьютерных программах в разделе типов введем тип Prog_Type –запись следующей структуры:
Prog_Type=Record
Title:String[50];
Author:String[50];
Entry:Integer;
Firma:String[40];
End;
где Title- поле для записи названия программы, Author-поле для записи фамилии автора, Entry- поле для записи года разработки, Firma-поле для записи фирмы-разработчика.
В разделе описания переменных введем массив Prog_Katalog из 10 записей типа Prog_Type.Переменную Num_Array, принимающую значения от 1до 10 введем для указания на порядковый номер записи в массиве Prog_Katalog. Для критерия поиска введем переменную Author строкового типа. Результат поиска записывается в переменную логического типа Yes_Prog.
В целом текст программы может выглядеть так:
Program Katalog;
Type
Prog_Type=record
Title:string[50];
Author:String[50];
Entry:Integer;
Firma:String[40];
end;
Var
Prog_Katalog:Array[1..10] of Prog_Type;
Num_Array:1..10;
Author:String[50];
Yes_Prog:Boolean;
Procedure Input_Data;
Begin
Writeln('Введите данные о ',Num_Array,'-й программе:');
With Prog_Katalog[Num_Array] do
begin
Write('Название программы: ');
Readln(Title);
Write('Автор:');
Readln(Author);
Write('Год разработки:');
Readln(Entry);
Write('Фирма:');
Readln(Firma);
Writeln;
end;
end;
Procedure Write_Data(Num:Integer);
begin
Writeln('Программа № ',Num);
With Prog_Katalog[Num_Array] do
begin
Writeln('Название:',Title);
Writeln('Фамилия автора:',Author);
Writeln('Год разработки:',Entry);
Writeln('Фирма:',Firma);
end;
end;
{Основная программа}
Begin
{У пользователя запрашивается 3 раза ввод данных о программах}
for Num_Array:=1 to 3 do
Input_Data;
Writeln;
Writeln('Поиск информации(программы) по фамилии автора: ');
Writeln;
Write('Введите фамилия автора: ');
Readln(Author);
Yes_Prog:=False;
for Num_array:=1 to 10 do
if Prog_Katalog[Num_Array].Author=Author then
begin
Write_Data(Num_Array);
Yes_Prog:=True;
end;
if not Yes_Prog then Write('Нет программ данного автора ',Author);
end.
Порядок выполнения работы
Изучить теоретические сведения по теме “ Работа с записями”.
Получить у преподавателя индивидуальное задание.
Разработать программу для работы с записями согласно полученному заданию.
Показать работающую программу преподавателю.
Ответить на контрольные вопросы.
Контрольные вопросы
Понятие записи. Структура объявления типа записи.
Обращение к значению поля. Составные имена.
Присвоение полям записи значений. Массивы записей.
Пример программы с использованием записей.
Лабораторная работа № 26
Написание программы на языке Паскаль с использованием записей с вариантами
Цель работы: формирование знаний и умений по работе с записями с вариантами. Приобретение навыков работы с вариантными полями.
Краткие теоретические сведения
Записи, рассмотренные в предыдущей лабораторной работе, имеют строго определенную структуру. В некоторых случаях это резко ограничивает возможности их применения. Поэтому в языке Паскаль имеется возможность задать тип записи, содержащий произвольное число вариантов структуры. Такие записи называются записями с вариантами. Записи с вариантами обеспечивают средства объединения записей, которые похожи, но не идентичны по форме. Они состоят из фиксированной и вариантной частей.
Вариантная часть формируется с помощью оператора Case. Он задает особое поле записи-поле признака, которое определяет, какой из вариантов в данный момент будет активизирован. Значением признака в каждый текущий момент выполнения программы должна быть одна из расположенных далее констант. Константа, служащая признаком, задает вариант записи и называется константой выбора.
Формат:
Type
<имя типа> = Record
Case <поле признака>: <имя типа> of
<константа выбора 1>: (поле, …: тип);
…
<константа выбора n>: (поле, …: тип);
End;
Компоненты каждого варианта (идентификаторы полей и их типы) заключаются в круглые скобки. У части Case нет отдельного end. Одно слово end заканчивает всю конструкцию записи с вариантами. Количество полей каждого из вариантов не ограничено. Объем памяти, необходимый для записи с вариантами, складывается из объемов полей фиксированной части и максимального по объему поля переменной части.
Пример:
Type
Rec=Record
Number:Byte;
Code:Integer;
Case Flag :Boolean of
True:(Proce1:Integer);
False:(Price2:Real);
End;
Var
PRec: Rec;
В данном примере была объявлена запись с именем Rec, у которой поля Number и Code расположены в фиксированной части записи, они доступны в программе в любой текущий момент независимо от значения поля признака. Поле Price 1 может использоваться только в том случае, если значение поля признака Flag равно True. Поле Price 2 доступно в противоположном случае, т.е. если значение Flag равно False.
При использовании записей с вариантами необходимо придерживаться следующих правил:
все имена полей должны отличаться друг от друга, по крайней мере, одним символом, даже если они встречаются в разных вариантах
запись может иметь только одну вариантную часть, причем вариантная часть должна размещаться в конце записи
если поле, соответствующее какой-либо метке, является пустым, то оно записывается следующим образом: <метка>: ();