Требования к решению задач
Ø Размер матрицы (величины M и N) программа должна запрашивать у пользователя.
Ø Имя файла для ввода/вывода программа должна запрашивать у пользователя.
Ø Максимальный размер матрицы 100x200 задать константами.
Ø Программа должна подсказывать пользователю, что ему делать.
Ø Процедура обработки матрицы должна получать данные для обработки, то есть матрицу и ее размер, через параметры.
Ø Процедура обработки матрицы должна возвращать результат обработки, через параметры.
Ø Программу необходимо снабдить тестом (примером, выполнение которого подтверждает правильность работы программы).
Варианты задач.
№ | Тип элементов | Обработка |
1. | real | Выбрать элементы массива в порядке возрастания. |
2. | integer | Выбрать элементы массива в порядке убывания. |
3. | char | Переставить элементы строк массива в порядке возрастания. |
4. | real | Переставить строки матрицы в порядке возрастания суммы их элементов. |
5. | integer | Транспонировать матрицу. |
6. | char | Выбрать максимальные элементы строк. |
7. | real | Выбрать минимальные элементы столбцов. |
8. | integer | Разделить все элементы матрицы на максимальный. |
9. | char | Переставить элементы столбцов массива в порядке убывания. |
10. | real | Переставить столбцы матрицы в порядке убывания произведения их элементов |
11. | real | Расположить элементы в каждой строке массива в порядке возрастания. |
12. | integer | Выбрать в порядке возрастания все положительные элементы матрицы. |
13. | char | Переставить строки массива в алфавитном порядке. |
14. | real | Выбрать в порядке возрастания все отрицательные элементы матрицы. |
15. | integer | Выбрать в порядке убывания все положительные элементы матрицы. |
16. | char | Выбрать все строки, содержащие гласные, расположив их элементы в алфавитном порядке. |
17. | real | Выбрать все строки, содержащие отрицательные числа, расположив их элементы в порядке убывания. |
18. | integer | Выбрать все строки, содержащие положительные числа, расположив их элементы в порядке возрастания. |
19. | char | Выбрать все строки, содержащие согласные, расположив их элементы в алфавитном порядке. |
20. | real | Выбрать все строки, содержащие положительные числа, расположив их в порядке убывания суммы элементов. |
21. | real | Выбрать все строки, содержащие отрицательные числа, расположив их в порядке возрастания суммы элементов. |
22. | integer | Выбрать элементы массива в порядке убывания |
23. | char | Переставить элементы строк массива в порядке, обратном алфавитному. |
24. | real | Переставить строки матрицы в порядке возрастания разности их элементов. |
25. | integer | Выбрать строки, сумма элементов которых отрицательна и вывести их в порядке возрастания сумм. |
Контрольные вопросы
1) Что такое файл в языке ПАСКАЛЬ?
2) Какие операции для типа файл существуют в языке ПАСКАЛЬ?
3) Какие процедуры для типа файл существуют в языке ПАСКАЛЬ?
4) Как использовать файлы в программе?
5) Для чего используются файлы?
6) Чем отличается файл от одномерного массива?
Лабораторная работа № 7
Комбинированный тип переменных в языке ПАСКАЛЬ.
Цель работы
Ознакомиться с типом запись (record). Научиться использовать комбинированный тип для организации простейших баз данных.
Краткие теоретические сведения
Тип данных record
Запись – это структура, объединяющая фиксированное число данных разных типов, называемых полями записи. Как правило, данные, помещенные в запись, логически (по смыслу решаемой задачи) связанны между собой. В одном поле можно размещать данные только одного типа, но разные поля могут иметь разный тип. Описание записи ведется по следующей форме:
Type
<имя записи> = record
S_1 : TYPE_1;
S_2 : TYPE_2;
…
S_N : TYPE_N
end;
где S_1– список имен полей имеющих типTYPE_1;S_2– список имен полей имеющих типTYPE_2; … S_N– список имен полей имеющих типTYPE_N.
Пример 1. Календарные даты удобно описывать следующим образом:
Type
Date = record
Month : 1..12;
Day : 1..31;
Year : integer
end;
var d : Date;
Здесь d переменная типа Date, представляет собой трехкомпонентную структуру.
Обращение к полям типа record осуществляется путем указания имени переменной и имени поля, разделенных символом “.” (точка):
<имя переменной>.< имя поля>.
Например, d.Year; d.Day; и т.д., а процедура ввода даты может выглядеть так:
procedure Get_Data( var dt : Date);
Begin
Writeln;
Writeln( ‘Введите дату’);
Write(‘День ?’); Readln( dt.Day );
Write(‘Месяц ?’); Readln( dt.Month );
Write(‘Год ?’); Readln( dt.Year );
end;
Оператор with.
Это оператор создает удобства при работе с переменными типа record.
Общий вид:
With A do P;
где A – имя переменной типа record, P – любой оператор (простой или составной) ) языка ПАСКАЛЬ. В операторе P разрешается опускать имя A при ссылках на компоненты (поля) записи A (указываются только имена полей). Используя оператор with процедуру ввода даты можно записать так:
procedure Get_Data( var dt : Date);
Begin
Writeln;
Writeln( ‘Введите дату’);
With dt do
Begin
Write(‘День ?’); Readln( Day );
Write(‘Месяц ?’); Readln( Month );
Write(‘Год ?’); Readln( Year );
End
end;
Запись с вариантами
В тех случаях, когда наборы частей записи предстоит менять в зависимости от значения какого либо поля, удобно использовать запись с вариантами (очень похоже на оператор ветвления case). Общий вид:
Type
<имя записи> = record
S_1 : TYPE_1;
S_2 : TYPE_2;
…
S_N : TYPE_N
case S : TYPE_S of
C1 : ( <список полей_1>);
C2 : ( <список полей_2>);
…
CK : ( <список полей_K>)
End;
где S_1– список имен полей имеющих типTYPE_1;S_2– список имен полей имеющих типTYPE_2; … S_N– список имен полей имеющих типTYPE_N.
где S – поле порядкового типа TYPE_S, значение которого как‑то задается в программе;
C1, C2, … CK – константы, того же типа, с которыми сравнивается выражение S;
<список полей_1>, <список полей_2>, …, <список полей_K>– списки полей, записанные также как и список стоящий между словами record и case, из которых реализуется тот, с константой которого совпадет значение поля S.Изменяя значение поля S переменной в программе, вы изменяете и структуру записи.
Задача №1.
Написать программу, реализующую небольшую базу данных в виде одномерного массива записей:
1. Ввод c клавиатуры элементов базы данных.
2. Вывод содержимого базы данных на дисплей.
Задача №2.
Дополнить программу функцией сортировки базы данных по способу соответствующему вашему варианту.