- •Указания по выполнения практических и лабораторных работ
- •Лабораторная работа № 1 Блок-схемы как графическое представление алгоритмов. Основные блоки, используемые в блок- схемах алгоритмов
- •Краткие теоретические сведения Основные этапы решения задач на компьютере
- •Языки программирования
- •Трансляторы
- •Язык программирования Паскаль
- •Использование среды программирования турбо паскаль
- •Порядок выполнения работы
- •Типы вычислительных процессов
- •Блок-схемы алгоритмов
- •Примеры составления блок-схемы алгоритма
- •Основные файлы пакета Турбо Паскаль
- •Запуск интегрированной среды программирования Турбо Паскаль
- •Работа с меню ис
- •Меню File
- •Меню Run
- •Меню Compile
- •Меню Debug
- •Меню Tools
- •Меню Options
- •Меню Window
- •Меню Help
- •Порядок выполнения работы
- •Процедуры ввода-вывода
- •Порядок выполнения работы
- •Оператор записи WriteLn аналогичен процедуре Write, но после вывода последнего в списке значения для текущей процедуры WriteLn происходит перевод курсора к началу следующей строки.
- •Пример программы с использованием процедур ввода-вывода данных с различными форматами выводимых данных
- •Порядок выполнения работы
- •Операторы языка Паскаль
- •Оператор присваивания
- •Оператор безусловного перехода (go to)
- •Порядок выполнения работы
- •Оператор выбора case
- •Порядок выполнения работы
- •Оператор повтора for
- •Примеры программ с использованием оператора for
- •Оператор повтора Repeat
- •Пример программы с использованием оператора repeat
- •Пример программы с использованием операторов присваивания, повтора и выбора
- •Порядок выполнения работы
- •Пример программы с использованием оператора повтора while
- •Порядок выполнения работы
- •Примеры описания одномерных и двумерных массивов
- •Действия над массивами
- •Действия над элементами массива
- •Ввод-вывод элементов массива
- •Пример программы ввода-вывода одномерного массива
- •Пример программы ввода-вывода двумерного массива
- •Порядок выполнения работы
- •Пример программы нахождения в одномерном массиве максимального элемента
- •Порядок выполнения работы
- •Порядок выполнения работы
- •Основные логические структуры:
- •Функции в Паскале
- •Встроенные функции и процедуры
- •Арифметические процедуры и функции
- •Скалярные процедуры и функции
- •Функции преобразования типов
- •Процедуры управления программой
- •Специальные процедуры и функции
- •Вызов стандартной процедуры или функции
- •Порядок выполнения работы
- •Пример программы с использованием функции, определенной пользователем
- •Порядок выполнения работы
- •Пример программы с использованием процедуры, определенной пользователем
- •Механизм передачи параметров
- •Порядок выполнения работы
- •Нетрадиционное использование подпрограмм. Косвенная рекурсия
- •Порядок выполнения работы
- •Линейный поиск
- •Линейный поиск в упорядоченном массиве данных
- •Бинарный (двоичный) поиск
- •Пример программы с использованием алгоритма бинарного поиска
- •Порядок выполнения работы
- •Методы внутренней сортировки
- •Сортировки включением
- •Сортировка выбором
- •Порядок выполнения работы
- •Шейкерная сортировка
- •Пирамидальная сортировка
- •Обменная сортировка разделением
- •Порядок выполнения работы
- •Естественное слияние
- •Многопутевое слияние
- •Порядок выполнения работы
- •Пример разработки собственного модуля
- •Порядок выполнения работы
- •Скалярные процедуры и функции
- •Функции преобразования типов
- •Процедуры управления программой
- •Специальные процедуры и функции
- •Вызов стандартной процедуры или функции
- •Порядок выполнения работы
- •Формат описания строкового типа
- •Фрагмент описания строковых данных
- •Стандартные строковые процедуры и функции
- •Пример программы работы со стандартными строковыми процедурами и функциями
- •Примеры программ работы со строковыми переменными
- •Порядок выполнения работы
- •Пример программы работы с записями
- •Порядок выполнения работы
- •Пример программы работы с записями
- •Порядок выполнения работы
- •Операции над множествами
- •Объединение Пересечение Разность
- •Порядок выполнения работы
- •Формат описания файлового типа
- •Средства обработки файлов
- •Текстовые файлы
- •Пример программы работы с текстовым файлом
- •Порядок выполнения работы
- •Средства работы с типизированными файлами
- •Пример программы работы с типизированным файлом
- •Порядок выполнения работы
- •Средства работы с нетипизированными файлами
- •Пример программы для работы с типизированными файлами
- •Порядок выполнения работы
- •Распределение памяти при выполнении программы
- •Пример программы распределения памяти и получения доступа к полям psp.
- •Порядок выполнения работы
- •Статические и динамические переменные
- •Указатели
- •Типизированные указатели
- •Нетипизированный указатель (pointer)
- •Доступ к переменной по указателю
- •Управление динамической памятью
- •Процедуры динамического распределения
- •Пример программы с использованием динамической памяти
- •Порядок выполнения работы
- •Пример программы создания и использования связанного списка
- •Порядок выполнения работы
- •Параметр процедурного типа
- •Порядок выполнения работы
- •Контрольные вопросы
- •Литература
- •Содержание
Пример программы работы с записями
Пусть необходимо составить программу, которая создает каталог изданий в библиотеке, обеспечивает ввод данных о литературе, поиск и подсчет количества книг данного издания.
Литературу в библиотеке можно разделить на три типа изданий: книги, журналы, газеты. Для описания сведений о типе изданий в разделе типов введем перечисляемый тип:
Type_Publ=(Book,Journal,Newspaper);
Для описания сведений о литературе в разделе типов ведем тип Liter. Для разного типа изданий в каталоге требуется хранить разную информацию, например: если для поиска книги нужно знать год издания, то для журнала помимо года издания, нужно знать его номер, а для газеты не только год, номер, но и день выпуска. В связи с необходимостью хранения разной информации в структуре записи Liter наряду с неизменной частью - полями Title и Author, в которых отображается название публикации и фамилия автора будет вариантная часть, отражающая дату издания по-разному в зависимости от типа издания. Запись Liter будет иметь следующую структуру:
Liter=Record
Title:String[50];
Author:String[50];
Case V: Type_Publ of
Book: (YearB:Integer);
Journal: (Num:1..12;
YearJ:1900..2001);
Newspaper: (Day:1..31;
Month:1..12;
YearN:Integer);
End;
где V- признак выбора вариантов, который может принимать значение Book, Journal, Newspaper. Для типа Book предусмотрено хранение года издания (поле YearB), для издания типа Journal-номера(Num) и год издания (поле YearJ), для издания типа Newspaper –дня (поле Day), месяца (поле Month) и года выпуска (поле YearN).
В разделе описания констант зададим значение максимального числа записей в каталоге Count=10.
Текст программы:
Program Kat_Library;
Type
Type_Publ=(Book,Journal,Newspaper);
Liter=Record
Title:string[50];
Author:String[50];
case V:Type_Publ of
Book:(YearB:Integer);
Journal:(Num:1..12;
YearJ:1900..2000);
Newspaper:(Day:1..31;
Month:1..12;
YearN:Integer);
end;
Const Count=10;
Var
Katalog:Array[1..Count] of Liter;
Num_Array:1..Count;
Yes_Liter:Boolean;
Vybor:Byte;
Edition:Type_Publ;
Count_Find:Integer;
Procedure Input_Data;
Begin
Writeln('Введите данные о литературе ',Num_Array,':');
Write('Введите число, указывающее вид издания:');
Write('1-книга, 2-журнал, 3-газета: ');
Readln(Vybor);
Case Vybor of
1:Katalog[Num_Array].V:=Book;
2:Katalog[Num_Array].V:=Journal;
3:Katalog[Num_Array].V:=Newspaper;
end;
With Katalog[Num_Array] do
begin
Write('Фамилия автора: ');
Readln(Author);
Write('Название:');
Readln(Title);
Case V of
Book:begin
Write('Год издания: ');
Readln(YearB);
end;
Journal:begin
Write('Номер: ');
Readln(Num);
Write('Год издания: ');
Readln(YearJ);
end;
Newspaper:begin
Write('Дата издания: День ');
Readln(Day);
Write('Месяц: ');
Readln(Month);
Write('Год: ');
Readln(YearN);
end;
end;
end;
end;
Procedure Write_Data;
begin
Writeln;
Writeln('Литература № ',Num_Array);
With Katalog[Num_Array] do
begin
Writeln('Название:',Title);
Writeln('Фамилия автора:',Author);
Case V of
Book:begin
Writeln('Год издания:',YearB);
end;
Journal:begin
Write('Номер: ',Num);
Writeln('Год издания: ',YearJ);
end;
Newspaper:begin
Writeln('Дата издания: День:',Day,'Месяц:',Month,'Год:',YearN);
end;
end;
end;
end;
procedure Find_Liter;
begin
Writeln('Поиск литературы по типу издания: ');
Writeln;
Write('Введите число, указывающее вид издания: ');
Write('1-книга, 2-журнал, 3-газета');
Readln(Vybor);
case Vybor of
1:Edition:=Book;
2:Edition:=Journal;
3:Edition:=Newspaper;
end;
Yes_Liter:=False;
Count_Find:=0;
for Num_Array:=1 to Count do
If Katalog[Num_Array].V=Edition then
begin
Count_Find:=Count_Find+1;
Write_Data;
Yes_Liter:=True;
end;
if not Yes_Liter then
Writeln('В библиотеке нет такой литературы ')
else
Writeln('Всего в библиотеке',Count_Find,' таких изданий');
end;
begin
for Num_Array:=1 to Count do
Input_Data;
Writeln;
Find_Liter;
end.