Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Delphi_part2

.pdf
Скачиваний:
8
Добавлен:
01.03.2016
Размер:
951.59 Кб
Скачать

МИНИСТЕРСТВООБРАЗОВАНИЯИНАУКИУКРАИНЫ Черниговский государственныйтехнологическийуниверситет

РАБОТАСМАССИВАМИИФАЙЛАМИ В СРЕДЕ DELPHI

МЕТОДИЧЕСКИЕУКАЗАНИЯ к лабораторномупрактикуму исамостоятельнойработе подисциплине

«Программирование»

длястудентовнаправленияподготовки6.050102 –“Компьютерная инженерия”

Часть вторая

УТВЕРДЖЕНО на заседании кафедры

информационных и компьютерных систем протокол № 3 от 26.11.07

Чернигов ЧГТУ 2007

Робота з масивами та файлами у середовищі Delphi. Методичні вказівки до лабораторного практикуму та самостійної роботи з дисципліни «Програмування» для студентів напряму підготовки 6.050102 – „Комп’ютерна інженерія”, частина друга. /Укл.: П.Г. Бивойно, Н.О. Гора, Д.В. Павловська, В.І. Павловський – Чернігів: ЧДТУ, 2007. – 113 с. Рос. мовою.

Составители: Бивойно Павел Георгиевич, канд. техн. наук, доцент Гора Наталья Олеговна, ассистент Павловская Дарья Владимировна, ассистент

Павловский Владимир Ильич, канд. техн. наук, доцент

Ответственный за выпуск: Бивойно П.Г. , декан факультета электронных и информационных технологий, канд. техн. наук, доцент

Рецензент: Нестеренко С.А., канд. техн. наук, доцент кафедры информационных и компьютерных систем Черниговского государственного технологического университета

СОДЕРЖАНИЕ

 

Ответственный за выпуск: Бивойно П.Г. , декан факультета электронных и

 

информационных технологий, канд. техн. наук, доцент..................................

3

7 ЛАБОРАТОРНАЯРАБОТА№7. ОДНОМЕРНЫЕМАССИВЫ............................

7

7.1 Краткие теоретические сведения о массивах......................................................

7

7.1.1 Понятие массив................................................................................................

7

7.1.2 Объявление массива.......................................................................................

7

7.1.3 Передача массивов в процедуры и функции................................................

9

7.1.4 Операции с массивами..................................................................................

10

7.2 Типовые процедуры и функции для работы с массивами...............................

10

7.2.1 Описание типа учебного массива................................................................

11

7.2.2 Процедуры создания, ввода и вывода массивов........................................

11

7.2.2.1 Процедура создания случайного массива............................................

11

7.2.2.2 Процедура ввода массива из строки текста .........................................

11

7.2.2.3 Процедура ввода массива из компонента TMemo...............................

12

7.2.2.4 Процедура ввода массива с помощью функции InputBox..................

13

7.2.2.5 Функция преобразования массива в строку символов........................

13

7.2.2.6 Процедура вывода массива в компонент TMemo................................

14

7.2.3 Обработка массивов......................................................................................

14

7.2.3.1 Функция вычисления суммы элементов массива................................

14

7.2.3.2 Процедура определения минимального, максимального, и их

 

индексов в массиве .............................................................................................

15

7.2.3.3 Функция определения позиции элемента в массиве...........................

15

7.2.3.4 Процедура удаления элементов из массива.........................................

16

7.2.3.5 Процедура переворота массива.............................................................

17

7.2.3.6 Процедура циклического сдвига части элементов массива влево.....

17

7.2.3.7 Процедура формирования массива накопленных значений ..............

18

7.3 Задание для самостоятельной работы...............................................................

18

7.4 Содержание отчета ..............................................................................................

18

Контрольные вопросы...............................................................................................

20

8 ЛАБОРАТОРНАЯРАБОТА№8. СОРТИРОВКАМАССИВОВ..........................

21

8.1 Методы сортировки массивов............................................................................

21

8.1.1 Сортировка выбором.....................................................................................

22

8.1.1.1 Пример сортировки массива по возрастанию методом выбора.........

23

8.1.1.2 Процедура сортировки массива методом выбора ...............................

25

8.1.2 Сортировка обменом (метод пузырька) ......................................................

26

8.1.2.1 Пример сортировки массива по возрастанию методом обмена.........

27

8.1.2.2 Процедура сортировки массива методом обмена................................

29

8.1.3 Сортировка вставкой или включением.......................................................

30

8.1.3.1 Пример сортировки массива по возрастанию методом вставки........

31

8.1.3.2 Процедура сортировки методом вставки ............................................

34

8.2 Сортировка по усложненным правилам............................................................

35

8.3 Обработка упорядоченных массивов.................................................................

36

8.3.1 Вставка элемента в отсортированный массив............................................

37

3

8.3.2 Слияние двух отсортированных массивов в один.....................................

37

8.3.3 Поиск позиции элемента в отсортированном массиве..............................

39

8.3.4 Удаление элемента из отсортированного массива ....................................

40

8.4 Задание для самостоятельной работы...............................................................

40

8.5 Содержание отчета ..............................................................................................

41

Контрольные вопросы...............................................................................................

41

9 ЛАБОРАТОРНАЯРАБОТА№9. РАБОТАСДВУМЕРНЫМИМАССИВАМИ

 

(МАТРИЦАМИ) .........................................................................................................

43

9.1 Краткие теоретические сведения .......................................................................

43

9.1.1 Описание матриц...........................................................................................

43

9.1.2 Использование компонента StringGrid для ввода-вывода матриц...........

44

9.1.3 Тотальная обработка данных в матрицах...................................................

45

9.1.4 Выборочная обработка матрицы .................................................................

46

9.1.5 Перестановки элементов матрицы ..............................................................

47

9.1.6 Удаление и вставка элементов матрицы.....................................................

48

9.1.7 Сортировка элементов матрицы..................................................................

48

9.2 Задание для самостоятельной работы...............................................................

53

9.3 Содержание отчета ..............................................................................................

55

Контрольные вопросы...............................................................................................

55

10 ЛАБОРАТОРНАЯРАБОТА№10. РАБОТАС ЗАПИСЯМИ.............................

56

10.1 Краткие теоретические сведения .....................................................................

56

10.1.1 Объявление типа для записи......................................................................

56

10.1.2 Массивы записей.........................................................................................

57

10.1.3 Поля записей как массивы..........................................................................

58

10.1.4 Сортировка массивов записей....................................................................

59

10.1.5 Ввод-вывод записей....................................................................................

59

10.2 Создание проекта «Результаты аттестации»...................................................

60

10.2.1 Интерфейс пользователя для проекта.......................................................

60

10.2.2 Определение типов данных........................................................................

61

10.2.3 Инициализация интерфейса.......................................................................

62

10.2.4 Добавление строки в таблицу....................................................................

63

10.2.5 Удаление строки из таблицы......................................................................

63

10.2.6 Процедура создания массива записей по содержимому StringGrid.......

64

10.2.7 Процедура отображения массива в компоненте StringGrid....................

65

10.2.8 Процедура сортировки массива записей по группе и фамилии.............

65

10.2.9 Сортировка записей по количеству неудовлетворительных

 

оценок и среднему баллу ..............................................................................

67

10.2.10 Выборка студентов какой-нибудь группы, имеющих средний

 

балл выше 4 ....................................................................................................

68

10.2.11 Подсчет числа студентов, имеющих более 2-х

 

неудовлетворительных оценок и вывод упорядоченного списка

 

этих студентов................................................................................................

69

10.3 Задание для самостоятельной работы.............................................................

70

10.4 Содержание отчета ............................................................................................

72

Контрольные вопросы...............................................................................................

72

4

11 ЛАБОРАТОРНАЯРАБОТА№11. РАБОТАСТИПИЗИРОВАНЫМИ

 

ФАЙЛАМИ.................................................................................................................

73

11.1 Краткие теоретические сведения .....................................................................

73

11.1.1 Объявление файловой переменной...........................................................

73

11.1.2 Назначение файла файловой переменной.................................................

74

11.1.3 Открытие файла...........................................................................................

75

11.1.4 Текущая позиция файла..............................................................................

76

11.1.5 Чтение данных из файла.............................................................................

77

11.1.6 Запись данных в файл.................................................................................

77

11.1.7 Обрезка “хвоста” файла..............................................................................

77

11.1.8 Закрытие и удаление файлов......................................................................

78

11.2 Перечень основных процедур и функций для работы с типизированными

 

файлами................................................................................................................

78

11.3 Создание проекта «Результаты аттестации»...................................................

78

11.3.1 Требования к проекту .................................................................................

79

11.3.2 Интерфейс пользователя для проекта.......................................................

79

11.3.3 Определение типов данных........................................................................

81

11.3.4 Настройка интерфейса пользователя .......................................................

81

11.3.5 Вспомогательные процедуры для работы с файлом................................

83

11.3.5.1 Процедура выбора имени файла .........................................................

83

11.3.5.2 Процедура открытия файла..................................................................

83

11.3.5.3 Процедура вывода файла в StringGrid ................................................

84

11.3.6 Процедуры работы со StringGrid1 .............................................................

84

11.3.7 Процедуры реализации пунктов меню fileMenu......................................

85

11.3.7.1 Добавление данных из StringGrid1 в файл.........................................

85

11.3.7.2 Поиск записи по фамилии....................................................................

86

11.3.7.3 Удаление записи по фамилии..............................................................

87

11.3.7.4 Сохранение файла под другим именем..............................................

88

11.3.8 Процедуры для работы с упорядоченными файлами..............................

89

11.3.8.1 Процедура сортировки файла..............................................................

89

11.3.8.2 Поиск записи в отсортированном файле...........................................

90

11.3.8.3 Добавление записи в отсортированный файл....................................

91

11.3.8.4 Удаление записи из отсортированного файла...................................

91

11.3.9 Процедуры реализации пунктов меню sortMenu .....................................

92

11.3.9.1 Реализация пункта меню «Сортировка файла по фамилиям» .........

92

11.3.9.2 Реализация пункта меню «Поиск студента по фамилии» ................

93

11.3.9.3 Реализация пункта меню «Добавление в упорядоченный файл из

 

StringGrid1»..........................................................................................................

93

11.3.9.4 Реализация пункта меню «Удаление записи из отсортированного

 

файла»...................................................................................................................

94

11.4 Задание для самостоятельной работы.............................................................

94

11.5 Содержание отчета ............................................................................................

95

Контрольные вопросы...............................................................................................

95

12 ЛАБОРАТОРНАЯРАБОТА№12. РАБОТАСТЕКСТОВЫМИФАЙЛАМИ ..

96

12.1 Краткие теоретические сведения .....................................................................

96

5

12.1.1 Объявление файловой переменной для текстового файла .....................

96

12.1.2 Связывание файловой переменной с конкретным файлом.....................

96

12.1.3 Открытие файла...........................................................................................

97

12.1.3.1 Создание нового файла ........................................................................

97

12.1.3.2 Открытие файла для чтения.................................................................

97

12.1.3.3 Открытие файла для дополнения........................................................

98

12.1.4 Текущая позиция файла..............................................................................

98

12.1.5 Записи данных в файл.................................................................................

98

12.1.6 Чтение данных из файла...........................................................................

100

12.1.6.1 Особенности чтения чисел из текстового файла.............................

102

12.1.6.2 Особенности чтения данных типа String ..........................................

103

12.1.6.3 Особенности чтения и записи символов ..........................................

104

12.1.7 Закрытие и удаление файлов....................................................................

105

12.2 Перечень основных процедур для работы с текстовыми файлами............

105

12.3 Общая схема работы с текстовым файлом....................................................

106

12.3.1 Примеры работы с текстовыми файлами................................................

106

12.3.1.1 Пример ввода-вывода при решении простейшей задачи ...............

106

12.3.1.2 Пример добавления данных из одного файла к другому................

107

12.3.1.3 Пример чтение из файла в поле Memo .............................................

108

12.3.1.4 Пример ввода-вывода при работе с массивом.................................

108

12.3.1.5 Пример ввода-вывода при работе с матрицей.................................

109

12.3.1.6 Пример ввода-вывода при работе с записями .................................

110

12.4 Задания для самостоятельной работы ...........................................................

112

12.5 Содержание отчета ..........................................................................................

112

Контрольные вопросы.............................................................................................

113

РЕКОМЕНДОВАННАЯ ЛИТЕРАТУРА.................................................................

113

6

7 ЛАБОРАТОРНАЯ РАБОТА № 7. ОДНОМЕРНЫЕ МАССИВЫ

Цели работы:

Познакомиться с понятием массив и правилами его объявления.

Познакомиться с понятием многомерные массивы.

Познакомиться с операциями над массивами.

Создать приложение, в котором наглядно выполняются различные операции с одномерными массивами. Обеспечить выбор операции над массивом с помощью компонента MainMenu.

7.1 КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ О МАССИВАХ

Массив представляет собой группу элементов одного и того же типа. Преимущество массива – простота доступа к отдельному элементу

массива и простота реализации самого массива. Поэтому массивы являются наиболее распространенным типом данных, особенно в вычислительных машинах.

7.1.1 Понятие массив

Структура данных формируется из множества данных определенного типа или других, более простых, структур данных.

Массив

это структура данных, которая состоит из фиксированного числа

элементов,

каждый из которых имеет один

и тот

же тип.

Элементы массива могут иметь стандартный тип

или тип,

введенный

пользователем.

 

 

Каждый элемент массива имеет свой номер, который называется индексом.

Доступ к элементу массива происходит путем указания имени массива и указания в квадратных скобках порядкового номера элемента.

7.1.2 Объявление массива

Статический массив – это массив, количество элементов которого заранее известно, т.е. количество элементов массива определяется при его объявлении.

Объявление одномерного массива имеет вид, представленный на рисунке 7.1.

Var <имя массива>: array[<тип индекса>] of <тип элементов> ;

Рисунок 7.1 – Синтаксис объявления одномерного массива

Тип индекса – это любой порядковый (ordinal) тип, например, Char, Boolean. Наиболее часто используется ограниченный тип, например, 0 .. 10 или

7

‘a’..’z’.

Тип индекса определяет границы изменения значений индекса.

Тип элементов определяет тип элементов, из которых состоит массив. Пример объявления массива с именем А, состоящего из десяти элементов

целого типа приведен ниже:

var A:

array[1 .. 10] of integer;

 

 

 

 

 

Допустим, элементам массива присвоены конкретные значения (2, 5, 10,

3, 6 ,0, 9, 4, 5, 7). Этот массив, для наглядности представим:

 

 

Имя элемента массива

 

 

 

 

 

A[1] A[2]

A[3] A[4]

A[5] A[6]

A[7]

A[8] A[9]

A[10]

2

5

10

3

6

0

9

4

5

7

 

Значения элементов массива

 

 

 

 

 

Рисунок 7.2 – Схема одномерного массива

 

Для доступа к элементам массива используется синтаксическая конструкция, состоящая из имени массива и индекса, который записывается в квадратных скобках. То есть доступ к элементам этого массива обеспечивается выражением: A[i]. Индекс i в данном примере является целым числом в диапазоне от 1 до 10. Таким образом, A[1] – это имя первого элемента, A[2] - имя второго элемента и т.д.

Индексированные элементы массива могут быть использованы так же, как и простые переменные. Например, они могут находиться в выражениях в качестве операндов, им можно присваивать любые значения, соответствующие их типу.

Элементы массива могут иметь любой тип. Например, предложение, приведенное ниже, определяет массив символов.

var S : array [0 .. 10] of char;

Но массив символов это не строка, так как способ хранения в памяти для этих типов данных не одинаков. Единственное, что их объединяет – это способ обращения к элементам. И к элементам массива, и к символам строки

8

обращение делается путем указания индекса.

Ниже приведен пример использования массива для получения чисел Фибоначчи. Два первых числа Фибоначчи равны 1, а каждое последующее равно сумме двух предыдущих. В программе первые 2 элемента массива заполняются до цикла, остальные – в цикле.

var a : array [1..10] of integer; begin

a[1] := 1; a[2] := 1;

for i:=3 to 10 do

a[i] := a[i – 2] + a[ i – 1 ]; end;

Во всех приведенных примерах все характеристики массива объявлялись непосредственно при объявлении переменных. Но это не лучший способ объявления переменной типа массив. При работе с массивами лучше вначале объявить тип массива, а затем использовать этот тип при объявлении переменных. Например:

type TArr = array[1 .. 10] of integer; var A, B : TArr;

Здесь вначале для массивов из 10 целых чисел объявляется тип TArr, а затем объявляются переменные этого типа.

При объявлении массива удобно использовать именованные константы. Например:

const size = 10;

var ar1 : array[1..size] of integer;

7.1.3 Передача массивов в процедуры и функции

При создании функции или процедуры для обработки массива нужно иметь в виду, что в ее объявление нельзя включать описание индексов. Например, такое объявление процедуры вызовет сообщение компилятора о синтаксической ошибке.

9

Procedure MyProc(A:array[1..10] of integer);

В данном случае необходимо сначала объявить тип массива в разделе Type, а затем использовать его при описании массива в списке формальных параметров процедуры:

type TArr = array[1..10] of integer;

.

.

.

procedure MyProc(A: TArr);

Begin

End;

7.1.4 Операции с массивами

При работе с массивами приходится выполнять ряд специфических операций, связанных именно с этим типом данных. Наиболее распространенными из них являются:

ввод массива

вывод массива

поиск максимального и минимального элемента массива

поиск заданного элемента массива

циклический сдвиг элементов массива

сортировка массива

вставка элемента в массив

удаление элемента из массива

объединение массивов

7.2ТИПОВЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С МАССИВАМИ

При решении учебных задач на обработку массива требуется неоднократно вводить, выводить массивы, а также выполнять над ними различные операции. Очевидно, что в этом случае удобно использовать заранее написанные процедуры и функции, которые целесообразно хранить во вспомогательном модуле. Такой модуль был создан. Он называется

UnitArrayDop и находится в папке ProjectToLection\toLection12.

Однако созданные процедуры и функции, которые записаны в этом модуле, могут стать универсальными только в том случае, если будут оперировать с одним и тем же типом массива. Поэтому в дополнительном модуле описан и тип такого массива. Предполагается, что при решении

10

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]