Методические указания и задания к лабораторным работам для учащихся ссуз специальности Т1002 «Программное обеспечение информационных технологий»
Вид материала | Методические указания |
- Методические указания по дипломному проектированию для учащихся специальности 2-40, 316.16kb.
- Методические указания к лабораторным работам для студентов специальности 210100 "Автоматика, 536.56kb.
- Методические указания и контрольные задания по дисциплине системное программное обеспечение, 196.97kb.
- Методические рекомендации по прохождению преддипломной практики для учащихся специальности, 898.69kb.
- Методические указания к лабораторным работам №1-5 для студентов специальности 210100, 363.6kb.
- Методические указания по лабораторным работам Факультет: электроэнергетический, 554.73kb.
- Методические указания к лабораторным работам по курсу, 438.32kb.
- Методические указания к лабораторным работам по физике по практикуму «Вычислительная, 138.12kb.
- Методические указания к лабораторным работам Самара 2007, 863.04kb.
- Название дисциплины, 52.28kb.
Порядок выполнения работы
- Изучить теоретические сведения по теме “Написание программы на языке Паскаль с использованием строковых переменных”.
- Получить у преподавателя индивидуальное задание и разработать программу для работы со строками согласно заданному варианту.
- Показать работающую программу преподавателю.
- Ответить на контрольные вопросы.
Контрольные вопросы
- Понятие строковых выражений.
- Операции со строковыми данными.
- Примеры программ работы со строками.
Лабораторная работа № 25
Написание программы на языке Паскаль с использованием записей
Цель работы: формирование знаний и умений по работе с записями. Приобретение навыков работы с записями.
Краткие теоретические сведения
При решении научно- технических и экономических задач обработки совокупностей большого количества значений используются массивы. Но при работе с массивами основное ограничение заключается в том, что каждый элемент массива должен иметь один и тот же тип данных.
Иногда для решения задач, в которых возникает необходимость хранить и обрабатывать совокупности данных различного типа, используются записи.
Запись представляет собой наиболее общий и гибкий структурированный тип данных, так как она может быть образована из не однотипных компонентов и в ней явным образом выражена связь между элементами данных, характеризующими реальный объект.
Запись-это структурированный тип данных, состоящий из фиксированного числа компонентов, называемых полями записи. Определение типа записи начинается идентификатором Record и заканчивается зарезервированным словом end. Между ними заключен список компонентов, называемых полями, с указанием имен полей и типа каждого поля.
Структура объявления типа записи такова:
Type
<имя типа> = Record
<имя поля>: <тип компонентов>;
…
<имя поля>: <тип компонентов>;
End;
VAR
<имя переменной>: <имя типа>;
Пример описания записи:
Type
Car=Record
Number:Integer;
Marka:String[20];
FIO:String[40];
Address:String[60];
End;
Var
Mashina: Car;
В данном примере была объявлена запись с именем Car, у которой имеется 4 поля: номер, название марки машины, ФИО владельца и его адрес.
Идентификатор поля должен быть уникален только в пределах записи, однако лучше его сделать уникальным в пределах всей программы. Объем памяти, необходимый для записи, складывается из длин полей. Значения полей записи могут быть использованы в выражениях. Обращение к значению поля осуществляется с помощью идентификатора переменной и идентификатора поля, разделенных точкой. Такая комбинация называется составным именем.
Например, доступ к полям записи Car осуществляется как: Mashina.Marka, Mashina.FIO, Mashina.Number. Составное имя можно использовать везде, где допустимо применение типа поля. Для присваивания полям значений используется оператор присваивания.
Пример присваивания полям записи Mashina:
Mashina. Number:=164536l;
Mashina.Marka:=’ГАЗ-24’;
Mashina.FIO:=’Иванов И.И’;
Mashina. Address:=’ул.Пушкина 12-30’;
Составные имена можно использовать в операторах ввода-вывода:
Read (Mashina. Number, Mashina. FIO, Mashina. Address);
Write(Mashina. Number:4, Mashina. FIO:12, Mashina. Address:25);
Допускается применение оператора присваивания и к записям в целом, если они имеют один и тот же тип. Например,
Mash:=Mashina;
После выполнения этого оператора значения полей записи Mash станут равны значениям соответствующих полей записи Mashina.
В ряде задач удобно пользоваться массивами из записей. Их можно описать следующим образом:
Type
Car=Record
Number:Integer;
Marka:String[20];
FIO:String[40];
Address:String[60];
End;
Var
Mashins: array [1..20] of Car;
Обращение к полям такой записи имеет громоздкий вид, для решения этой проблемы в языке Паскаль предназначен оператор With, который имеет следующий формат:
With <переменная типа запись> do <оператор>;
Один раз, указав переменную типа запись в операторе With, можно работать с именами полей как с обычными переменными.
Пример присвоения значения полям записи Car с помощью оператора With.
With Mashina do
Begin
Number:=164536l;
Marka:=’ГАЗ-24’;
FIO:=’Иванов И.И’;
Address:=’ул.Пушкина 12-30’;
End;
Пример программы работы с записями
Пусть необходимо составить программу, которая создает каталог компьютерных программ и обеспечивает поиск программ по фамилии автора.
Для описания сведений о компьютерных программах в разделе типов введем тип 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.