- •Программирование на языке
- •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.6. Компонент tEdit для ввода одномерных массивов
В Delphi ввод одномерных массивов, кроме использования компонента TStringGrid , можно еще организовать и с использованием компонента TEdit. Зачастую это бывает проще, т.к. не надо дополнительно задавать размерность массива - она получается из подсчета слов в строке TEdit. Алгоритм ввода одномерного массива из строки TEdit состоит в разделении этой строки на отдельные слова, каждое из которых и есть компонент массива. Слова в строке друг от друга отделяются некоторыми разделителями, например, одним или несколькими пробелами - это и позволяет выделить из строки отдельные слова.
Заметим, что компонент TEdit удобно использовать для ввода только одномерного массива, для ввода двумерного массива он менее удобен, и в этом случае больше подходит TStringGrid.
4.7. Пример написания программы с использованием tEdit
Задание: Одномерный массив целых чисел A размерности n вводится из строки TEdit. Найти количество четных положительных элементов массива, и произведение отрицательных элементов.
Интерфейс программы приведен на рис. 4.2, а на листинге 4.2 - фрагмент программы (только обработчик TForm1.Button1Click() по аналогии с примером 4.5)
Рис. 4.2. Интерфейс программы
Листинг 4.2
//---------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
//нажатие кнопки Вычислить
var
pe, k : integer;
s, s1 : string;
A:array [1..100] of integer;
begin
{Ввод массива из строки Edit1}
s := Edit1.Text; //получаем строку из Edit1
s := Trim(s); //удаляем пробелы из строки s слева и справа
while Pos( ' ', s ) > 0 do //оставляем по одному пробелу между словами
Delete( s, Pos( ' ', s ), 1 );
s := s+' '; //искусственно добавляем один пробел в конец строки
n := 0; //готовим счетчик слов
s1 := ''; //готовим вспомогательную строку для слова
for i := 1 to Length(s) do
if s[i] = ' ' then begin //если нашли очередное слово, то ...
n := n+1; //увеличиваем счетчик слов
A[n] := StrToInt(s1); //преобразуем найденное слово в элемент массива
s1 := ''; //очищаем вспомогательную строку - готовим для след.слова
end
else s1 := s1+s[i]; //иначе продолжаем накапливать символы слова
//показываем введенный массив в Мемо
s:='Введенный массив :'+#13#10;
s:=s+'Индекс'+#9+'Значение'+#13#10;
for i:=1 to n do
s := s+IntToStr(i)+' :'+#9+InTtoStr(A[i])+#13#10;
Memo1.Text := s;
{расчет}
k := 0;
pe := 1;
for i := 1 to n do
if (A[i] > 0) and (not odd(A[i])) then k := k + 1
else if (A[i] < 0) then pe := pe * A[i];
{ Вывод результата}
Memo1.Lines.Add('Количество четных положительных элементов: ' + IntToStr(k));
Memo1.Lines.Add('Произведение отрицательных элементов: ' + IntToStr(pe));
end;
//---------------------------------------------------