Главная страница
Навигация по странице:

  • Новым в этой работе являются: • компонент таблица строк StringGrid

  • Unit_M.pas

  • FixedCols и FixedRows

  • Комментарий Данная процедура будет выполняться только при условии, что введены размеры матрицы, т.е Edit 1. Text и Edit 2. Text

  • Label 5 , Label 6 , Label 7

  • KeyPress

  • Button 1 ).8. Созданная программа не позволяет редактировать элементы таблицы. Внесем изменения в свойства компонента StringGrid

  • Задание для самостоятельного выполнения

  • StringGrid

  • Const N =15; M =15;

  • ListBox . Для заполнения выделите объект ListBox

  • String

  • Комментарий а) Свойство Items

  • ItemIndex

  • ттттт. Практическая работа Работа с интерфейсом среды программирования Delphi. Создание простого проекта. Запуск программ на выполнение


    Скачать 2.63 Mb.
    НазваниеПрактическая работа Работа с интерфейсом среды программирования Delphi. Создание простого проекта. Запуск программ на выполнение
    Анкорттттт
    Дата30.01.2022
    Размер2.63 Mb.
    Формат файлаdoc
    Имя файла0018f8f0-cdfb5c43.doc
    ТипПрактическая работа
    #346059
    страница13 из 16
    1   ...   8   9   10   11   12   13   14   15   16

    Практическая работа № 17 Предотвращение и обработка ошибок.


    Цель работы: научиться находить и предотвращать ошибки.

    Постановка задачи

    Создайте программу, которая в зависимости от величин N (количество строк) и M (количества столбцов) создает матрицу размером NxM. Программа предоставляет возможность заполнить матрицу с помощью случайных чисел или ввести значения вручную. Кроме этого можно подсчитать сумму элементов матрицы, определить максимальный и минимальный элементы матрицы.







    Новым в этой работе являются:

    • компонент таблица строк StringGrid вкладки палитры компонентов Additional.

    План разработки программы

    1. Откройте новый проект.

    2. Разместите в форме объекты в соответствии с рис.2.

    3. Установите свойства компонент на вкладке Object Inspector:



    4. Сохраните код программы и проект под именами, например, Unit_M.pas и Pr_M.dpr.

    Немного теории

    Компонент StringGrid (вкладка палитры компонентов Additional) предназначен для создания таблицы.

    Свойству компонента Cells соответствует двухмерный массив ячеек, каждая из которых может содержать произвольный текст. Содержание ячейки массива, находящегося на пересечении столбца с номером Col и строки с номером Row определяется элементом StringGrid 1.Cells [Col, Row]. Это содержимое можно редактировать.

    Двумерный массив состоит из двух частей: фиксированной и рабочей.

    Фиксированная часть служит для показа заголовков столбцов (строк) и для ручного управления их размерами. Обычно фиксированная часть занимает крайний левый столбец и самую верхнюю строку таблицы. С помощью свойств FixedCols и FixedRows можно задать другое количество фиксированных столбцов и строк. Если свойства FixedCols и FixedRows имеют значение 0, то таблица не содержит фиксированной зоны.

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





    5. Разместите в блоке реализации после слова implementation описание переменных:

    В таблице приведен перечень часто используемых свойств компонента StringGrid.



    6. Основная задача проекта – создать таблицу, размер которой будет определен после заполнения полей Edit1 и Edit2.

    Создадим следующие процедуры обработки событий:









    end; end;

    Комментарий

    Данная процедура будет выполняться только при условии, что введены размеры матрицы, т.е Edit1.Text и Edit2.Text не являются «пустым символом». В начале устанавливаются недоступными компоненты ввода, определяющие размер таблицы, и кнопка «Создать», а недоступные ранее кнопки «Заполнить» и «Очистить» становятся доступными. После этого переходим к формированию таблицы. Для этого устанавливаем значения переменных N и M, определяющих количество строк и столбцов таблицы – переводим из текстовой информации значения полей Edit1 и Edit2 в числовые значения. После этого программно задаем свойства компонента StringGrid (MATR) и устанавливаем его видимым. В конце заполняем фиксированную часть таблицы значениями номеров строк и столбцов.

    Button2 «Заполнить таблицу»

    OnClick

    procedure TForm1.Button2Click(Sender: TObject); Var I,J:Byte; begin Randomize; For I:=1 to N do For J:=1 to M do MATR.Cells[J,I]:=IntToStr(Random(N*M));

    MATR_MAX:= StrToInt(MATR.Cells[1,1]); MATR_MIN:= StrToInt(MATR.Cells[1,1]); MATR_SUM:=0; For I:=1 to N do For J:=1 to M do

    begin MATR_SUM:=MATR_SUM+StrToInt(MATR.Cells[J,I]);

    IF StrToInt(MATR.Cells[J,I])>MATR_MAX Then MATR_MAX:=StrToInt(MATR.Cells[J,I]);

    IF StrToInt(MATR.Cells[J,I])MATR_MIN:=StrToInt(MATR.Cells[J,I]);

    end; Label5.Caption:=IntToStr(MATR_SUM); Label6.Caption:=IntToStr(MATR_MAX); Label7.Caption:=IntToStr(MATR_MIN); end;

    Комментарий

    В начале процедуры заполняются ячейки таблицы (MATR.Cells[J,I]) случайными числами в диапазоне от 0 до (N*M-1). Дальше определяются максимальное и минимальное числа и сумма элементов таблицы. В конце процедуры полученные значения выводятся на экран. Для этого используются компоненты Label5, Label6, Label7.

    Для заполнения ячеек таблицы как положительными, так и отрицательными











    7. Программа готова. Но если в поля ввода «Размерность матрицы» мы по ошибке вместо числа введем букву или какой-либо другой символ, то программа будет прервана. Для того чтобы это избежать создадим процедуры обработки события KeyPress для компонента Edit1.



    Комментарий

    В зависимости от нажатой клавиши программа выполнит следующие действия:

    • нажата любая цифровая клавиша или клавиша «Back Space» (код клавиши #8) – программа ничего не изменит,

    • нажата клавиша «Enter» (код клавиши #13) – курсор перейдет в окно редактора ввода Edit2,

    • во всех остальных случаях – введенный символ будет удален (присвоение значения пустого символа Chr(0)).

    Для компонента Edit2 самостоятельно создайте процедуру, обрабатывающую ввод. Она будет отличаться тем, что при нажатии клавиши «Enter», курсор должен перейти на кнопку «Создать таблицу» (Button1).

    8. Созданная программа не позволяет редактировать элементы таблицы. Внесем изменения в свойства компонента StringGrid'>StringGrid (MATR). Для этого на вкладке Object Inspector свойству Options.goEditing установим значение True. Процедура, обрабатывающая нажатие клавиши в поле компонента StringGrid (MATR) будет выглядеть так:

    procedure TForm1.MATRKeyPress(Sender: TObject; var Key: Char); Var I,J:Byte; begin case Key of

    ’0’..’9’: ;

    #8: ;

    #13: if MATR.Col
    else Key:=Chr(0); end; MATR_MAX:= StrToInt(MATR.Cells[1,1]); MATR_MIN:= StrToInt(MATR.Cells[1,1]); MATR_SUM:=0; For I:=1 to N do For J:=1 to M do

    begin

    MATR_SUM:=MATR_SUM+StrToInt(MATR.Cells[J,I]);

    IF StrToInt(MATR.Cells[J,I])>MATR_MAX Then MATR_MAX:=StrToInt(MATR.Cells[J,I]);

    IF StrToInt(MATR.Cells[J,I])MATR_MIN:=StrToInt(MATR.Cells[J,I]);

    end; Label5.Caption:=IntToStr(MATR_SUM); Label6.Caption:=IntToStr(MATR_MAX); Label7.Caption:=IntToStr(MATR_MIN);

    end;

    Комментарий

    Обработка нажатия допустимой клавиши рассмотрена в п.7. Отличие заключается в действии, которое произойдет, если нажата клавиша «Enter» - переход к следующей ячейке в данной строке, если эта ячейка не последняя в строке.

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

    9. Сохраните проект окончательно, запустите и протестируйте его.

    Задание для самостоятельного выполнения

    1. Дополните программу, вставив блок определения суммы по каждому столбцу матрицы.

    Подсказка. Необходима еще одна таблица (компонент StringGrid), в которой будут находиться подсчитанные суммы по столбцам. Формировать эту таблицу нужно в момент формирования основной таблицы.

    Продолжение работы

    Доработать программу так, чтобы можно было бы заполнять матрицу различными способами:

    на оценку «4»



    Подсказка.

    Удалите кнопку Заполнить таблицу, добавив отдельные процедуры для заполнения каждым способом.

    Вначале необходимо внести изменения в раздел объявления:

    Const N=15; M=15; //N-количество строк, M-количество столбцов

    Type T_Mas=Array[1..N, 1..M] Of Integer; //Тип массив

    Var

    Mas :T_Mas;

    MATR_MAX, //Значение максимального элемента таблицы MATR_MIN, //Значение минимального элемента таблицы MATR_SUM: Integer;//Значение суммы элементов таблицы

    Пример процедуры для заполнения с помощью случайных чилел может выглядеть так:

    Procedure Z0 (Var MAS: T_MAS); Var I,J:Byte; begin Randomize; For I:=1 to N do For J:=1 to M do MAS[J,I]:=Random(N*M);

    End.

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

    Для выбора способа заполнения можно воспользоваться компонентой ListBox.

    Для заполнения выделите объект ListBox1, найдите свойство Items, щелкните на кнопке с тремя точками, расположенной справа от него. В появившемся окне встроенного редактора String List Editor введите названия способов заполнения, каждый на новой строке. Например:

    Случайными числами По горизонтали По вертикали Змейкой слева Змейкой справа Зигзагом Спиралью

    Комментарий

    а) Свойство Items содержит элементы списка.

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

    в) Свойство ItemIndex определяет номер элемента, выбранного из списка.
    Первый элемент имеет номер 0. Если не выбран ни один из элементов, то
    значение свойства ItemIndex равно – «-1».

    Сохраните набранный текст в файле под именем ZAPOLN.txt. Для этого нажмите правую кнопку мыши и выберите режим Save. Для выхода из встроенного редактора щелкните на кнопке OK.

    Комментарий

    Просмотреть содержимое созданного текстового файла ZAPOLN.txt, можно с помощью любого текстового редактора, а также внести изменения в тестовый файл, не используя встроенный редактор Delphi.
    1   ...   8   9   10   11   12   13   14   15   16


    написать администратору сайта