- •Программирование на языке
- •Object pascal в среде delphi
- •(Лабораторные работы)
- •Содержание
- •Лабораторная работа 1. Программирование линейных алгоритмов
- •1.1. Базовые элементы языка Object Pascal
- •1.1.1. Алфавит языка
- •1.1.2. Синтаксис языка
- •1.1.3. Основные типы данных
- •1.1.4. Оператор присваивания
- •1.1.5. Целые типы данных
- •1.1.6. Вещественные (действительные) типы данных
- •1.1.8. Cимвольные типы данных
- •1.1.9. Строкоые типы данных
- •1.1.10. Арифметические вычисления
- •1.2. Интегрированная среда разработчика delphi
- •1.3. Структура программ delphi
- •Interface
- •Implementation
- •1.4. Пример написания программы
- •1.4.2. Изменение заголовка формы
- •1.4.6. Написание программы обработки события
- •1.4.7. Написание программы обработки события
- •2.3. Оператор выбора Case
- •2.4. Составной оператор
- •2.5. Некоторые возможности, предоставляемые Delphi для организации разветвлений
- •Interface
- •Implementation
- •2.7. Индивидуальные задания
- •3.1.2. Организация цикла с помощью оператора repeat
- •3.2. Организация вложенных циклов
- •3.3. Организация прерывания цикла
- •3.4. Алгоритмы, использующие рекуррентную последовательность
- •3.5. Пример написания программы
- •Interface
- •Implementation
- •3.6. Индивидуальные задания
- •Лабораторная работа 4. Программирование с использованием массивов
- •4.1. Работа с массивами
- •4.2. Операции над массивами
- •4.3. Примеры часто встречающихся алгоритмов работы с массивами
- •4.4. Компонент tStringGrid для ввода/вывода массивов
- •4.5. Пример написания программы с использованием tStringGrid
- •Interface
- •Implementation
- •4.6. Компонент tEdit для ввода одномерных массивов
- •4.7. Пример написания программы с использованием tEdit
- •4.7. Компонент tMemo для ввода/вывода одномерных массивов
- •4.8. Пример написания программы с использованием tMemo
- •4.9. Индивидуальные задания
- •Лабораторная работа 5. Программирование с использованием строковых данных
- •5.1. Работа со строками
- •5.2. Пример написания программы
- •Лабораторная работа 6. Программирование с использованием подпрограмм и модулей
- •6.1. Описание подпрограмм
- •6.2. Передача данных через формальные параметры
- •6.3. Процедурные типы
- •6.4. Область видимости переменных
- •6.5. Пример написания программы с использованием процедур
- •Interface
- •Implementation
- •6.6. Использование модулей
- •6.7. Пример написания программы с использованием модуля
- •6.7.1. Создание модуля
- •6.7.2. Подключение модуля
- •Implementation
- •6.8. Индивидуальные задания
- •Лабораторная работа 7. Построение графиков
- •7.1. Компонент tChart
- •7.2. Пример написания программы
- •7.4. Индивидуальные задания
- •Лабораторная работа 8. Работа с файлами
- •8.2. Прямая работа с файлами (классический способ)
- •Доступ к файлам
- •Подпрограммы для работы с файлами
- •Запись и чтение типизированных файлов
- •Запись и чтение нетипизированных файлов
- •8.3. Диалоги открытия и сохранения файлов
- •8.4. Пример написания программы
- •8.5. Индивидуальные задания
- •Средства отладки программ в delphi
- •Литература
4.7. Компонент tMemo для ввода/вывода одномерных массивов
Многострочный редактор ТМемо также удобно использовать для ввода одномерных массивов. Наиболее просто организовать ввод компонентов массива, располагая по одному числу в каждой строке ТМемо.
Компонент TМемо также можно использовать и для ввода двумерного массива, однако алгоритмически это более сложно, чем использование для этих целей компонента TStringGrid.
4.8. Пример написания программы с использованием tMemo
Задание: Ввести одномерный массив вещественных чисел Х размерности n из компонента TМемо.
Интерфейс программы приведен на рис. 4.3, а на листинге 4.3 - фрагмент программы (только обработчик TForm1.Button1Click( ) )
Рис. 4.3. Интерфейс программы
Листинг 4.3
//--------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
//Ввести массив
var
X : array[1..20] of real;
i, n : integer;
s : string;
begin
//проверка на отсутствие текста в Мемо1
if Memo1.Lines.Count = 0 then begin
ShowMessage('В Мемо1 ничего не введено !!!');
Exit;
end;
//читаем не пустые строки в Мемо1 и по ним формируем массив
n := 0;
for i := 1 to Memo1.Lines.Count do
if Memo1.Lines[i-1] <> '' then begin //счет строк в Мемо1 идет с нуля
n := n+1;
X[n] := StrToFloat(Memo1.Lines[i-1]);
end
else continue;
//формируем строку с элементами массива для вывода в Мемо2
s := 'Введенный массив:' + #13#10 + 'Индекс' + #9 + 'Значение' + #13#10;
for i := 1 to n do
s := s + IntTostr(i) + ' :' + #9 + FloatToStr(x[i]) + #13#10;
Memo2.Text := s;
end;
//---------------------------------------------------
4.9. Индивидуальные задания
Ниже приведены 3 задания: первое - на одномерные массивы, а два других - на двумерные. Выбор задания для лабораторной работы производится преподавателем.
Задание 1: Одномерный массив (вариант задается преподавателем).
Во всех заданиях: N - длина массива. Значения элементов массива вводятся с помощью компонента TEdit, TMemo или с помощью TStringGrid.
Таблица 4.1
Вариант |
Задание |
1 |
Дан массив из N вещественных чисел. Вычислить разность между максимальным и минимальным из них. |
2 |
Дан массив из N вещественных чисел. Определить порядковый номер наименьшего из них. |
3 |
Дан массив из N вещественных чисел, среди которых есть хотя бы одно отрицательное число. Найти количество отрицательных чисел и величину наибольшего среди них. |
4 |
Дан массив из N вещественных чисел. Определить, образуют ли они возрастающую последовательность. |
5 |
Дан массив из N вещественных чисел. Определить количество отрицательных чисел и найти среди них минимальное число. |
6 |
Дан массив из N вещественных чисел. Найти порядковый номер элемента, величина которого наиболее близка к какому-нибудь целому M, задаваемому с клавиатуры числу. |
7 |
Дан массив из N целых чисел. Определить, сколько из них принимает наибольшее значение. |
8 |
Дан массив из N целых чисел. Определить количество цифр в наиболее длинной подпоследовательности из подряд идущих нулей. |
9 |
Дан массив из N вещественных чисел. Определить, сколько из них больше своих "соседей", т.е. предыдущего и последующего чисел. |
10 |
Дан массив из N целых чисел. Определить, сколько раз в этом массиве величины элементов меняют знак. (Например, в последовательности элементов 1, -34, 8, 14, -5 знак меняется три раза). |
11 |
Дан массив из N натуральных чисел. Вычислить сумму тех из них, порядковые номера которых - числа Фибоначчи. Числа Фибоначчи определяются формулами: f0=f1=1; fn=fn-1 + fn-2 при n=2,3,.... |
12 |
Найти сумму положительных элементов массива и их порядковые номера. |
13 |
Найти сумму всех элементов массива, кратных заданному числу. |
14 |
Найти сумму элементов массива с k1-го по k2-й, где k1 и k2 вводятся с клавиатуры. |
15 |
Найти сумму элементов массива, больших данного числа А (А вводится с клавиатуры). |
16 |
Найти сумму элементов, принадлежащих промежутку от А до В (А и В вводятся с клавиатуры). |
17 |
Найти максимальные элементы массива и их номера при условии, что есть повторяющиеся элементы. |
18 |
Найти номера всех отрицательных элементов (вывести их на экран), если таких нет, то сообщить об этом. |
19 |
Найти количество нечетных элементов. |
20 |
Найти количество отрицательных элементов. |
21 |
Сколько элементов массива превосходят по модулю заданное число А? |
22 |
Найти все элементы, кратные задаваемому с клавиатуры целому числу. Сколько их? |
23 |
Есть ли в данном массиве два соседних положительных элемента? Найти номера элементов, образующих первую (последнюю) пару. |
24 |
Есть ли в данном массиве элементы, равные заданному числу? Если есть, то вывести номер одного из них. |
25 |
Определить значения частного min/max, их среднее арифметическое и геометрическое значения элементов массива. |
26 |
Написать программу, создающую массив из N чисел, первое вводится с клавиатуры, а каждое последующее равно квадрату предыдущего. |
Задание 2: Двумерный массив (вариант задается преподавателем)..
Во всех заданиях двумерный массив вводить c помощью компонента TStringGrid, в котором 0-й столбец и 0-ю строку использовать для отображения индексов массивов.
Вариант |
Задание |
1 |
Задан двухмерный массив целых чисел A размером M на N. Найти сумму элементов, расположенных ниже главной диагонали. |
2 |
Задан двухмерный массив целых чисел A размером M на N. Найти произведение элементов, расположенных выше главной диагонали. |
3 |
Задан двухмерный массив целых чисел A размером M на N. Найти сумму элементов, расположенных выше побочной диагонали. |
4 |
Задан двухмерный массив целых чисел A размером M на N. Найти произведение элементов, расположенных ниже побочной диагонали |
5 |
Задан двухмерный массив целых чисел A размером M на N. Найти сумму элементов, расположенных ниже побочной диагонали |
6 |
Задан двухмерный массив целых чисел A размером M на N. Найти количество элементов, расположенных выше главной диагонали. |
7 |
Задан двухмерный массив целых чисел A размером M на N. Найти минимальный элемент, расположенный ниже главной диагонали. |
8 |
Задан двухмерный массив целых чисел A размером M на N. Найти максимальный элемент, расположенный выше главной диагонали. |
9 |
Задан двухмерный массив целых чисел A размером M на N. Найти максимальный элемент, расположенный выше побочной диагонали. |
10 |
Задан двухмерный массив целых чисел A размером M на N. Найти минимальный элемент, расположенный ниже побочной диагонали. |
11 |
Задан двухмерный массив целых чисел A размером N на M. Найти максимальный элемент и поменять его местами с элементом A[1,1]. |
12 |
Задан двухмерный массив целых чисел A размером N на M . Найти минимальный элемент и поменять его с элементом A[N,M]. |
13 |
Задан двухмерный массив целых чисел A размером N на M, состоящий из нулей и единиц. Найти количество нулей и единиц в этом массиве. |
14 |
Задан двухмерный массив целых чисел A размером N на M. Найти число элементов A[i, j] > T и сумму этих элементов. |
15 |
Задан двухмерный массив целых чисел A размером N на M. Найти число элементов A[i,j] < T и произведение этих элементов. |
Задание 3: Двумерный массив (вариант задается преподавателем).
Все двумерные массивы в заданиях имеют размерность NxM, где N - число строк, М - число столбцов. Для квадратных массивов - рамерность NxN. В программе двумерные массивы вводить c помощью компонента TStringGrid, в котором 0-й столбец и 0-ю строку использовать для отображения индексов массивов.
Таблица 4.2
Вариант |
Задание |
1 |
Посчитать количество нулевых, положительных и отрицательных элементов двухмерного массива. |
2 |
Определить произведение, сумму и среднее арифметическое элементов двухмерного массива. |
3 |
Определить поотдельности произведение элементов 2-х двухмерных массивов и результирующее произведение. |
4 |
Определить отношение суммы элементов двухмерного массива, стоящих на нечетных местах в строках, на сумму элементов, стоящих на четных местах. |
5 |
Вывести все элементы двумерного массива, абсолютные значения которых меньше 1. |
6 |
Подсчитать, сколько элементов двухмерного массива в интервале [А,В]. Вычислить количество элементов, не попавших ни в один из этих интервалов. |
7 |
Для заданного двухмерного массива определить: - сумму всех положительных элементов; - произведение всех отрицательных элементов; - количество нулевых элементов; - среднее значение абсолютных величин всех элементов. |
8 |
Для заданного двухмерного массива выполнить следующее: - подсчитать число элементов с начала до первого отрицательного; - подсчитать число отрицательных элементов. |
9 |
Определить максимальный и минимальный элементы двухмерного массива и их адреса. Вычислить сумму, разность, среднее арифметическое и геометрическое значения. |
10 |
Для заданного двухмерного массива подсчитать число элементов, которые расположены за первым отрицательным элементом, и вычислить их среднее арифметическое. |
11 |
Все элементы двухмерного массива, меньшие 1, заменить на их обратную величину. Полученный массив отсортировать в порядке возрастания. |
12 |
Определить элемент двухмерного массива и его порядковый номер, значение синуса которого есть наибольшее число. Найти среднее значение синусов элементов этого массива. |
13 |
Определить, что больше: сумма, разность или произведение максимального и минимального элементов двухмерного массива. |
14 |
Для двух двухмерных массивов А и В определить: - средние значения; - наибольшие значения; - наименьшие значения; - сумму всех элементов каждого массива. |
15 |
Найти разность суммы элементов двух заданных двухмерных массивов и их произведение. Определить, что больше. |
16 |
Все отрицательные элементы двух квадратных массивов возвести в квадрат, а положительные умножить на 2. Найти сумму всех элементов модифицированных массивов. |
17 |
Задан двумерный массив. Расположить положительные элементы в порядке возрастания. Отрицательные элементы остаются на своих первоначальных местах. |
18 |
Написать программу, создающую двумерный массив из NxM целых случайных чисел (-10..10), и перемещающую отрицательные числа в конец массива. |
19 |
Написать программу, создающую массив из NxM случайных целых чисел в диапазоне (0..100) и выводящую на экран среднее арифметическое чисел массива и массив отклонений от среднего (B[i, j]=A[i, j]-Aср). |
20 |
Написать программу, создающую двумерный массив из NxM случайных чисел и сортирующую первую строку массива по возрастанию, а вторую – по убыванию. |
21 |
Даны два двухмерных массива (NхM). Получить третий массив размерностью 2Nx2M, состоящий из элементов первых двух. |
22
|
В двумерном массиве отсортировать каждую строку по возрастанию. |
23 |
Отсортировать двумерный массив по убыванию. |
24 |
Отсортировать каждый столбец двумерного массива по убыванию. |
25 |
Дан двумерный массив. Найти сумму элементов каждой строки массива. |
26 |
Даны два массива NхN. Найти максимальное число (одно) из этих массивов. |
27 |
Отсортировать главную диагональ двумерного массива NхN по убыванию. |
28 |
Написать программу, создающую двумерный массив (NxN) элементы которого равны произведению их индексов (таблица Пифагора). |
29 |
В массиве NхN расположить элементы каждой четверти по возрастанию. |
30 |
Дан двумерный массив NxN. Поменять местами левую и правую половину массива. |
31 |
Написать программу, создающую двумерный массив (NxN) построчно заполненный числами от 1 до 2N, и меняющую местами верхнюю и нижнюю половину массива. |
32 |
Для квадратного массива найти сумму элементов, расположенных в строках, содержащих отрицательные элементы. |
33 |
Для квадратного массива найти сумму и произведение элементов, расположенных на главной и второстепенной диагоналях массива. |
34 |
Вычислить и вывести таблицу NхN, элементы которой равны сумме их индексов. |