Учебный курс Программирование на Delphi. Модуль 13 — различия между версиями

Материал из НГПУ им. К.Минина
Перейти к: навигация, поиск
 
(Задание)
 
(не показано 25 промежуточных версий 6 участников)
Строка 1: Строка 1:
 +
== Использование процедур==
 
<Center>'''Использование процедур'''</Center>
 
<Center>'''Использование процедур'''</Center>
 +
Часто в программе появляются участки, выполняющие одни и те же действия с различными данными.
 +
Такие участки лучше всего оформлять в виде подпрограмм.
 +
Выделяют два вида подпрограмм: Процедуры и функции.
 +
Процедурой называют особенным образом оформленный фрагмент программы, имеющий собственное имя.
 +
В заголовке процедуры, может быть задан список формальных параметров.При вызове процедур, формальные параметры, будут заменены фактическими.
 +
 +
В Delphi7, объявления процедур происходит автоматически при создании действия с элементом.
 +
Создать такое действие можно либо просто дважды щёлкнув на объекте (click), либо выбрав нужное действие из подменю events в object inspector
 +
 +
Пример объявления процедуры:
 +
 +
procedure TForm1.Button1Click(Sender: TObject);
 +
Эта строка означает, что если нажать (click) на кнопку button1, находящуюся на форме form1, то будут выполнятся действия, которые указаны в теле процедуры.
 +
 +
== Пример 1.==
 +
*'''Условие'''
 +
Массив A(n) отсортировать в порядке возрастания  элементов.<br>
 +
Сортировка осуществляется методом выбора.
 +
Для этого в процедуре max ищется номер максимального элемента. В основном алгоритме максимальный эемент и последний меняются местами. Цикл повторяется до тех пор, пока не останется только один не отсортированный элемент.
 +
 +
*'''Использованные компоненты'''
 +
label1 - для текстовых комментарий; <br>
 +
label2 - для текстовых комментарий; <br>
 +
label3 - для текстовых комментарий; <br>
 +
Button1 - для формирования вектора;<br>
 +
Button2 - для вызова процедуры сортировки;<br>
 +
Button3 - для выхода;<br>
 +
StringGrid1 - для вывода исходного массива;<br>
 +
StringGrid2 - для вывода отсортированного массива.<br>
 +
*'''Программный код'''
 +
unit Unit1;
 +
interface
 +
uses
 +
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 +
  Dialogs, XPMan, Grids, StdCtrls, Buttons;
 +
type
 +
x=array [1..20] of real;
 +
  TForm1 = class(TForm)
 +
    Button1: TButton;
 +
    Edit1: TEdit;
 +
    Label1: TLabel;
 +
    StringGrid1: TStringGrid;
 +
    Label2: TLabel;
 +
    Button2: TButton;
 +
    StringGrid2: TStringGrid;
 +
    Label3: TLabel;
 +
    XPManifest1: TXPManifest;
 +
    BitBtn1: TBitBtn;
 +
    procedure Button1Click(Sender: TObject);
 +
    procedure Button2Click(Sender: TObject);
 +
    procedure BitBtn1Click(Sender: TObject);
 +
  private
 +
    { Private declarations }
 +
  public
 +
    { Public declarations }
 +
  end;
 +
var
 +
  Form1: TForm1;
 +
  a:x; i, j, n, k: integer; R: real;
 +
implementation
 +
{$R *.dfm}
 +
procedure max (q: integer; var nmax: integer);
 +
  var m: real; l: integer;
 +
  begin
 +
        m:=A[1]; nmax:=1;
 +
        for l:=1 to q do
 +
            if A[l]>m then
 +
              begin
 +
                    m:= A[l]; nmax:= l
 +
              end
 +
end; {конец описания процедуры}
 +
procedure TForm1.Button2Click(Sender: TObject);
 +
begin
 +
randomize;
 +
  n:=strtoint(edit1.Text);
 +
  j:=n;
 +
  for i:=1 to n do begin
 +
  a[i]:=random(11);
 +
  stringgrid1.Cells[i-1,0]:=floattostr(a[i]);
 +
                    end;
 +
end;
 +
procedure TForm1.Button1Click(Sender: TObject);
 +
  begin {основная программа}
 +
      while j <> 1 do
 +
          begin
 +
              max (j, k);
 +
              R:= A[k]; A[k]:= A[j]; A[j]:= R;
 +
              j:= j-1;
 +
              end;
 +
              for i:=1 to n do
 +
              stringgrid2.Cells[i-1,0]:=floattostr(a[i]);
 +
          end;
 +
procedure TForm1.BitBtn1Click(Sender: TObject);
 +
begin
 +
close;
 +
end;
 +
end.
 +
*'''Форма с результатом работы программы'''
 +
[[Изображение:-11-1.JPG]]
 +
 +
==Задание==
 +
Таблица 13
 +
 +
{| border=1
 +
! Номер варианта|| Условие
 +
|-
 +
| <Center>1</Center>|| В массиве A(n) и B(n) все элементы, следующие за максимальным (за первым по порядку, если их  несколько), заменить на 1.
 +
|-
 +
| <Center>2</Center>|| Дана матрица A(n,m). Упорядочить столбцы по  убыванию элементов.
 +
|-
 +
| <Center>3</Center>|| Дана матрица X(n,m). Упорядочить строки по  возрастанию элементов.
 +
|-
 +
| <Center>4</Center>|| Дана матрица У(k,l). Получить из нее вектор,  содержащий суммы элементов строк. Отсортировать  его в порядке убывания элементов.
 +
|-
 +
| <Center>5</Center>|| Из текста выделить слова и вывести их в алфавитном порядке.
 +
|-
 +
| <Center>6</Center>|| Вычислить:
 +
 +
[[Изображение:Формула вар 6.jpg]]
 +
 +
где Xmax - максимальный элемент вектора X(n) Уmax - максимальный элемент вектора У(m).
 +
 +
|-
 +
| <Center>7</Center>||Вычислить суммы элементов векторов У(k) и X(L), находящиеся в интервале от а до b.
 +
|-
 +
| <Center>8</Center>||Вычислить:
 +
 +
[[Изображение:Формула вар 8.jpg]]
 +
|-
 +
| <Center>9</Center>||Решить уравнение a*x+b=0,
 +
где а - длина вектора  У(n), b - длина вектора Z(m).
 +
|-
 +
| <Center>10</Center>||Решить уравнение  [[Изображение:Формула вар 10.jpg]]
 +
где а - произведение элементов целочисленного вектора Т(к), b - произведение элементов целочисленного вектора  D(L), с - произведение  элементов целочисленного вектора R(n).
 +
 +
|-
 +
| <Center>11</Center>||Дана матрица У(к,к). Сформировать вектор, содержащий диагональные элементы матрицы У. Отсортировать его  в порядке убывания элементов.
 +
|-
 +
| <Center>12</Center>||Решить уравнение  [[Изображение:Формула вар 12.jpg]]
 +
 +
где р - минимальный элемент матрицы A(3,3), q - минимальный  элемент матрицы B(4,4), r - минимальный элемент  матрицы С(5,5).
 +
 +
|-
 +
| <Center>13</Center>||Заданы три матрицы A(m,m), B(n,n), C(k,k). Найти  минимальный из всех максимальных элементов главных  диагоналей матриц.
 +
|-
 +
| <Center>14</Center>||Вычислить:
 +
 +
[[Изображение:Формула вар 14.jpg]]
 +
|-
 +
|}
 +
 +
==Литература==
 +
 +
#Архангельский. Программирование на Delphi 6. – М: БИНОМ,  2002
 +
#Бобровский С. Delphi 7. Учебный курс. –  СПб:  Питер, 2003
 +
#Культин Н. Основы программирования в  Delphi 7. СПб: БХВ-Петербург, 2005.
 +
 +
 +
==Ссылки==
 +
 +
[[Учебный курс Программирование на Delphi]]
 +
 +
[[Учебный план курса Программирование на Delphi]]
 +
 +
 +
[[Категория: Учебный курс Программирование на Delphi]]

Текущая версия на 11:55, 20 мая 2008

Использование процедур

Использование процедур

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

В Delphi7, объявления процедур происходит автоматически при создании действия с элементом. Создать такое действие можно либо просто дважды щёлкнув на объекте (click), либо выбрав нужное действие из подменю events в object inspector

Пример объявления процедуры:

procedure TForm1.Button1Click(Sender: TObject); Эта строка означает, что если нажать (click) на кнопку button1, находящуюся на форме form1, то будут выполнятся действия, которые указаны в теле процедуры.

Пример 1.

  • Условие

Массив A(n) отсортировать в порядке возрастания элементов.
Сортировка осуществляется методом выбора. Для этого в процедуре max ищется номер максимального элемента. В основном алгоритме максимальный эемент и последний меняются местами. Цикл повторяется до тех пор, пока не останется только один не отсортированный элемент.

  • Использованные компоненты

label1 - для текстовых комментарий;
label2 - для текстовых комментарий;
label3 - для текстовых комментарий;
Button1 - для формирования вектора;
Button2 - для вызова процедуры сортировки;
Button3 - для выхода;
StringGrid1 - для вывода исходного массива;
StringGrid2 - для вывода отсортированного массива.

  • Программный код
unit Unit1;
interface
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, XPMan, Grids, StdCtrls, Buttons;
type
x=array [1..20] of real;
 TForm1 = class(TForm)
   Button1: TButton;
   Edit1: TEdit;
   Label1: TLabel;
   StringGrid1: TStringGrid;
   Label2: TLabel;
   Button2: TButton;
   StringGrid2: TStringGrid;
   Label3: TLabel;
   XPManifest1: TXPManifest;
   BitBtn1: TBitBtn;
   procedure Button1Click(Sender: TObject);
   procedure Button2Click(Sender: TObject);
   procedure BitBtn1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;
var
 Form1: TForm1;
 a:x; i, j, n, k: integer; R: real;
implementation
{$R *.dfm}
procedure max (q: integer; var nmax: integer);
  var m: real; l: integer;
 begin
       m:=A[1]; nmax:=1;
       for l:=1 to q do
           if A[l]>m then
              begin
                    m:= A[l]; nmax:= l
              end
end; {конец описания процедуры}
procedure TForm1.Button2Click(Sender: TObject);
begin
randomize;
  n:=strtoint(edit1.Text);
  j:=n;
  for i:=1 to n do begin
  a[i]:=random(11);
  stringgrid1.Cells[i-1,0]:=floattostr(a[i]);
                   end;
end;
procedure TForm1.Button1Click(Sender: TObject);
  begin {основная программа}
     while j <> 1 do
         begin
              max (j, k);
              R:= A[k]; A[k]:= A[j]; A[j]:= R;
              j:= j-1;
              end;
              for i:=1 to n do
              stringgrid2.Cells[i-1,0]:=floattostr(a[i]);
         end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
close;
end;
end.
  • Форма с результатом работы программы

-11-1.JPG

Задание

Таблица 13

Номер варианта Условие
1
В массиве A(n) и B(n) все элементы, следующие за максимальным (за первым по порядку, если их несколько), заменить на 1.
2
Дана матрица A(n,m). Упорядочить столбцы по убыванию элементов.
3
Дана матрица X(n,m). Упорядочить строки по возрастанию элементов.
4
Дана матрица У(k,l). Получить из нее вектор, содержащий суммы элементов строк. Отсортировать его в порядке убывания элементов.
5
Из текста выделить слова и вывести их в алфавитном порядке.
6
Вычислить:

Формула вар 6.jpg

где Xmax - максимальный элемент вектора X(n) Уmax - максимальный элемент вектора У(m).

7
Вычислить суммы элементов векторов У(k) и X(L), находящиеся в интервале от а до b.
8
Вычислить:

Формула вар 8.jpg

9
Решить уравнение a*x+b=0,

где а - длина вектора У(n), b - длина вектора Z(m).

10
Решить уравнение Формула вар 10.jpg

где а - произведение элементов целочисленного вектора Т(к), b - произведение элементов целочисленного вектора D(L), с - произведение элементов целочисленного вектора R(n).

11
Дана матрица У(к,к). Сформировать вектор, содержащий диагональные элементы матрицы У. Отсортировать его в порядке убывания элементов.
12
Решить уравнение Формула вар 12.jpg

где р - минимальный элемент матрицы A(3,3), q - минимальный элемент матрицы B(4,4), r - минимальный элемент матрицы С(5,5).

13
Заданы три матрицы A(m,m), B(n,n), C(k,k). Найти минимальный из всех максимальных элементов главных диагоналей матриц.
14
Вычислить:

Формула вар 14.jpg

Литература

  1. Архангельский. Программирование на Delphi 6. – М: БИНОМ, 2002
  2. Бобровский С. Delphi 7. Учебный курс. – СПб: Питер, 2003
  3. Культин Н. Основы программирования в Delphi 7. СПб: БХВ-Петербург, 2005.


Ссылки

Учебный курс Программирование на Delphi

Учебный план курса Программирование на Delphi