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

Материал из НГПУ им. К.Минина
Перейти к: навигация, поиск
Строка 1: Строка 1:
<Center>'''Использование функций'''</Center>
+
<center>'''Использование функций'''</center>
Функция отличается от процедуры тем,что результат ее работы возвращается в виде значения этой
+
функции и,следовательно,вызов функции может использоваться наряду наряду с другими операндами в выражениях.
+
  
Пример программы с использованием функций:  
+
== Пример 1.==
 +
*'''Условие задачи:'''
 +
Даны все действительные числа a,b,c.Вычислить
 +
max(a,b,+c)+max(a+b,c)/1+max(a+bc,12)                                                 
 +
*'''Использованные компоненты:'''
 +
 
 +
Label1 - используется для текстовых комментариев;
 +
 
 +
Label2 - используется для вывода суммы;
 +
 
 +
edit1 - используется для ввода числа;
 +
 
 +
edit2 - используется для ввода числа;
 +
 
 +
edit3 - используется для ввода числа;
 +
 
 +
BitBtn1 - запуск программы;
 +
 
 +
BitBtn2 - выход из программы;
 +
 
 +
*'''Программный код:'''
  
unit Unit2;
+
unit Unit2;
  
 
interface
 
interface
Строка 70: Строка 88:
  
 
end.
 
end.
while условие do оператор;
 
  
repeat операторы until условие;
+
*'''Форма с результатом работы программы:'''
 +
[[Изображение:-7-1.JPG]]
 +
== Пример 2.==
 +
*'''Условие задачи:'''
 +
Из матрицы А[3,4] получить вектор В, элементами которого являются наибольшие элементы столбцов матрицы.
 +
*'''Использованные компоненты:'''
  
условие – логическое выражение.
+
Label1 - используется для текстовых комментариев;
  
В операторе while сначала вычисляется логическое выражение и если оно истинно, то выполняется оператор. После этого управление возвращается в начало цикла на вычисление логического выражения. Если условие ложно, оператор завершает работу и управление передаётся на следующий оператор.
+
Label2 - используется для текстовых комментариев;
  
В операторе repeat сначала выполняются операторы, и только потом вычисляется логическое выражение. Если оно ложно, то управление возвращается в начало цикла, повторяется выполнение операторов тела цикла. Если условие истинно – то выход из цикла.
+
edit1 - используется для ввода числа;
== Пример 1.==
+
*Условие
+
Алгоритм Евклида для подсчета НОД (наибольшего общего делителя) двух натуральных чисел.
+
  
*Использованные компоненты
+
BitBtn1 - запуск программы;
  
 +
BitBtn2 - выход из программы;
  
*Программный код
+
*'''Программный код:'''
 
+
var a,b,x,y,z:integer;
+
 
+
procedure TForm1.BitBtn2Click(Sender: TObject);
+
begin
+
close;
+
end;
+
  
 +
  unit Unit1;
 +
  interface
 +
  uses
 +
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 +
  Dialogs, XPMan, StdCtrls, Buttons;
 +
  type
 +
  TForm1 = class(TForm)
 +
    Edit1: TEdit;
 +
    Label1: TLabel;
 +
    Label2: TLabel;
 +
    XPManifest1: TXPManifest;
 +
    Label3: TLabel;
 +
    BitBtn1: TBitBtn;
 +
    BitBtn2: TBitBtn;
 +
   
 +
    procedure BitBtn1Click(Sender: TObject);
 +
    procedure BitBtn2Click(Sender: TObject);
 +
  private
 +
    { Private declarations }
 +
  public
 +
    { Public declarations }
 +
  end;
 +
  var
 +
  Form1: TForm1;
 +
  implementation
 +
  {$R *.dfm}
 +
  function F(k: integer): integer;
 +
  begin
 +
    if (k=1) or (k=2)
 +
            then F:=1
 +
            else F:= F(k-1) + F(k-2)
 +
end;
 
  procedure TForm1.BitBtn1Click(Sender: TObject);
 
  procedure TForm1.BitBtn1Click(Sender: TObject);
 
+
var N: integer;
 
  begin
 
  begin
a:=strtoint(edit1.Text);
+
N:=strtoint(Edit1.Text);
b:=strtoint(edit2.Text);
+
label2.Caption:=inttostr(F(n));
  x:=a; y:=b;
+
end;
    while (x<>y) do
+
  procedure TForm1.BitBtn2Click(Sender: TObject);
      if x>y then x:=x-y
+
  begin
              else y:=y-x;
+
  close;
      z:=x;
+
  end;
label3.Caption:='НОД= '+inttostr(z);
+
   end.
end;
+
end.
+
*Форма с результатом работы программы
+
[[Изображение:-4-1.JPG]]
+
== Пример 2.==
+
*Условие
+
 
+
*Использованные компоненты
+
 
+
*Программный код
+
 
+
var n:integer;
+
      s,z,e:real;
+
procedure TForm1.BitBtn2Click(Sender: TObject);
+
begin
+
close;
+
end;
+
 
+
procedure TForm1.BitBtn1Click(Sender: TObject);
+
begin
+
e:=strtofloat(edit1.Text);
+
n:=1; z:=1/6; s:=0;
+
    while abs(z)>=e do
+
      begin
+
        s:=s+z;
+
        n:=n+1;                         
+
        z:=n/((n+1)*(n+2));
+
      end;
+
label2.Caption:='Сумма= '+floattostr(s);
+
end;
+
 
+
end.
+
*Форма с результатом работы программы
+
== Пример 3.==
+
 
+
*Условие
+
 
+
*Использованные компоненты
+
 
+
*Программный код
+
 
+
var x1,x2,d,e,m:real;
+
procedure TForm1.BitBtn2Click(Sender: TObject);
+
begin
+
close;
+
end;
+
 
+
procedure TForm1.BitBtn1Click(Sender: TObject);
+
begin
+
m:=strtofloat(edit1.Text);
+
e:=strtofloat(edit2.Text);
+
x1:=m;
+
   repeat
+
    x2:=2/3*x1+m/3/sqr(x1);
+
    d:=abs(x1-x2);
+
    x1:=x2;                 
+
  until d<=e;
+
label3.Caption:='Корень= '+floattostr(x2);
+
end;
+
 
+
end.
+
 
+
*Форма с результатом работы программы
+
  
 +
*'''Форма с результатом работы программы:'''
 +
[[Изображение:7-2.JPG]]
  
 
==Задание==
 
==Задание==
  
Таблица 13
+
<CENTER>'''Таблица №1'''</CENTER>
 +
{| border=4 
 +
!Номер варианта||Условие||
 +
  |-
 +
|<center>1</center>||Проверить, является ли строка палиндромом (т.е. читается ли она одинакого слева на право и справа налево). Пробелы игнорируются. Например, шалаш, а роза упала на лапу азора.||
 +
  |-
 +
|-
 +
|<center>2</center>||Проверить, верно ли что в строке чередуются гласные и согласные буквы.Пробелы игнорируются.||
 +
  |-
 +
|-
 +
|<center>3</center>||Проверить, имеется ли в заданном тексте баланс открывающихся и закрывающихся скобок.||
 +
  |-
 +
|-
 +
|<center>4</center>||В заданном предложении указать слово, в котором доля гласных а,е,и максимальна.||
 +
  |-
 +
|-
 +
|<center>5</center>||В заданном предложении найти самое короткое и самое длинное слово.||
 +
  |-
 +
|-
 +
|<center>6</center>||Для каждого символа заданного текста указать, сколько раз он встречается в тексте. Сообщение об одном символе должно печататься не более одного раза.||
 +
  |-
 +
|-
 +
|<center>7</center>||В заданном тексте удалить символ "," и подсчитать число удаленных символов.||
 +
  |-
 +
|-
 +
|<center>8</center>||В заданном тексте подсчитать количество гласных букв.||
 +
  |-
 +
|-
 +
|<center>9</center>||В заданном тексте заменить каждый символ "а", стоящий на четном месте, на символ "о".||
 +
  |-
 +
|-
 +
|<center>10</center>||Подсчитать количество слов в предложении.||
 +
  |-
 +
|-
 +
|<center>11</center>||Определить, сколько раз в строке встречается заданное слово.||
 +
  |-
 +
|-
 +
|<center>12</center>||Для каждого слова заданного предложения указать долю согласных.||
 +
  |-
 +
|-
 +
|<center>13</center>||Определить слово в заданном предложении, в котором доля гласных максимальна.||
 +
  |-
 +
|-
 +
|<center>14</center>||Удалить из текста пробелы и подсчитать число удаленных символов.||
 +
  |-
 +
  |}
 +
<CENTER>'''Таблица №2'''</CENTER>
 +
{| border=1
 +
|-
 +
!Номер варианта||Условие
 +
|-
 +
|<center>1</center>||Дан массив из слов А(N). Найти все слова,  заканчивающиеся гласной буквой.
 +
|-
 +
|<center>2</center>||Дан массив из слов Х(m). Найти все слова четной длины.
 +
|-
 +
|<center>3</center>||Дан массив из слов У(к). Найти все слова с нечетным количеством буквы "о".
 +
|-
 +
|<center>4</center>||Дан массив из слов A(m). Найти все слова с длиной, не превышающей заданной.
 +
|-
 +
|<center>5</center>||Дан массив из слов X(n). Найти все слова, содержащие хотя бы одно вхождение заданной подстроки.
 +
|-
 +
|<center>6</center>||Дан массив из слов A(k). Найти все слова, начинающиеся  и заканчивающиеся одной и той же буквой.
 +
|-
 +
|<center>7</center>||Дан массив из слов A(k). Найти все слова с четным  количеством буквы "е".
 +
|-
 +
|<center>8</center>||Дан массив из слов У(L). Найти все слова, содержащие  шипящие.
 +
|-
 +
|<center>9</center>||Дан массив из слов A(n). Найти все слова, начинающиеся  с заданной буквы.
 +
|-
 +
|<center>10</center>||Дан массив из слов У(m). Найти все слова, у которых есть буквы а, о и е.
 +
|-
 +
|<center>11</center>||Дан массив из слов Т(к). Найти все слова, начинающиеся или заканчивающиеся буквой "з".
 +
|-
 +
|<center>12</center>||Дан массив из слов Т(к). Найти все слова, содержащие заданное количество букв.
 +
|-
 +
|<center>13</center>||Дан массив из слов Z(m). Найти все слова, в которых есть две подряд идущие одинаковые буквы.
 +
|-
 +
|<center>14</center>||Дан массив из слов X(k). Найти все слова, длина которых кратна трем. 
  
Таблица 14
+
  |}
  
 
==Литература==
 
==Литература==
Строка 182: Строка 243:
 
#Бобровский С. Delphi 7. Учебный курс. –  СПб:  Питер, 2003
 
#Бобровский С. Delphi 7. Учебный курс. –  СПб:  Питер, 2003
 
#Культин Н. Основы программирования в  Delphi 7. СПб: БХВ-Петербург, 2005.
 
#Культин Н. Основы программирования в  Delphi 7. СПб: БХВ-Петербург, 2005.
 
  
 
==Ссылки==
 
==Ссылки==

Версия 10:06, 1 марта 2008

Использование функций

Пример 1.

  • Условие задачи:

Даны все действительные числа a,b,c.Вычислить max(a,b,+c)+max(a+b,c)/1+max(a+bc,12)

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

Label1 - используется для текстовых комментариев;

Label2 - используется для вывода суммы;

edit1 - используется для ввода числа;

edit2 - используется для ввода числа;

edit3 - используется для ввода числа;

BitBtn1 - запуск программы;

BitBtn2 - выход из программы;

  • Программный код:
unit Unit2;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ExtCtrls, Grids, XPMan, Buttons;

type

 TForm1 = class(TForm)
   Edit1: TEdit;
   Edit2: TEdit;                
   Edit3: TEdit;
   Label1: TLabel;
   Label2: TLabel;
   Label3: TLabel;
   Label4: TLabel;
   Label5: TLabel;
   XPManifest1: TXPManifest;
   BitBtn1: TBitBtn;
   BitBtn2: TBitBtn;
  
   procedure BitBtn2Click(Sender: TObject);
   procedure BitBtn1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var

 Form1: TForm1;

implementation

{$R *.dfm} function max (x,y: real): real;

    begin
        if x > y
           then  max:=x
           else  max:=y
    end;


var z, a, b, c: real; procedure TForm1.BitBtn2Click(Sender: TObject); begin


    begin
     a:=strtoint(edit1.Text);
     b:=strtoint(edit2.text);
     c:=strtoint(edit3.Text);
     z:=(max(a, b+c) + max(a+b, c*c))/(1+ max(a+b*c, 12));
     Label4.Caption:=floattostr(z);

end; end;

procedure TForm1.BitBtn1Click(Sender: TObject); begin close; end;

end.

  • Форма с результатом работы программы:

-7-1.JPG

Пример 2.

  • Условие задачи:

Из матрицы А[3,4] получить вектор В, элементами которого являются наибольшие элементы столбцов матрицы.

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

Label1 - используется для текстовых комментариев;

Label2 - используется для текстовых комментариев;

edit1 - используется для ввода числа;

BitBtn1 - запуск программы;

BitBtn2 - выход из программы;

  • Программный код:
 unit Unit1;
 interface
 uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, XPMan, StdCtrls, Buttons;
 type
 TForm1 = class(TForm)
   Edit1: TEdit;
   Label1: TLabel;
   Label2: TLabel;
   XPManifest1: TXPManifest;
   Label3: TLabel;
   BitBtn1: TBitBtn;
   BitBtn2: TBitBtn;
   
   procedure BitBtn1Click(Sender: TObject);
   procedure BitBtn2Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;
 var
 Form1: TForm1;
 implementation
 {$R *.dfm}
 function F(k: integer): integer;
 begin 
    if (k=1) or (k=2)
           then F:=1
           else F:= F(k-1) + F(k-2)
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
var N: integer;
begin
N:=strtoint(Edit1.Text);
label2.Caption:=inttostr(F(n));
end;
 procedure TForm1.BitBtn2Click(Sender: TObject);
 begin
 close;
 end;
 end.
  • Форма с результатом работы программы:

7-2.JPG

Задание

Таблица №1
Номер варианта Условие
1
Проверить, является ли строка палиндромом (т.е. читается ли она одинакого слева на право и справа налево). Пробелы игнорируются. Например, шалаш, а роза упала на лапу азора.
2
Проверить, верно ли что в строке чередуются гласные и согласные буквы.Пробелы игнорируются.
3
Проверить, имеется ли в заданном тексте баланс открывающихся и закрывающихся скобок.
4
В заданном предложении указать слово, в котором доля гласных а,е,и максимальна.
5
В заданном предложении найти самое короткое и самое длинное слово.
6
Для каждого символа заданного текста указать, сколько раз он встречается в тексте. Сообщение об одном символе должно печататься не более одного раза.
7
В заданном тексте удалить символ "," и подсчитать число удаленных символов.
8
В заданном тексте подсчитать количество гласных букв.
9
В заданном тексте заменить каждый символ "а", стоящий на четном месте, на символ "о".
10
Подсчитать количество слов в предложении.
11
Определить, сколько раз в строке встречается заданное слово.
12
Для каждого слова заданного предложения указать долю согласных.
13
Определить слово в заданном предложении, в котором доля гласных максимальна.
14
Удалить из текста пробелы и подсчитать число удаленных символов.
Таблица №2
Номер варианта Условие
1
Дан массив из слов А(N). Найти все слова, заканчивающиеся гласной буквой.
2
Дан массив из слов Х(m). Найти все слова четной длины.
3
Дан массив из слов У(к). Найти все слова с нечетным количеством буквы "о".
4
Дан массив из слов A(m). Найти все слова с длиной, не превышающей заданной.
5
Дан массив из слов X(n). Найти все слова, содержащие хотя бы одно вхождение заданной подстроки.
6
Дан массив из слов A(k). Найти все слова, начинающиеся и заканчивающиеся одной и той же буквой.
7
Дан массив из слов A(k). Найти все слова с четным количеством буквы "е".
8
Дан массив из слов У(L). Найти все слова, содержащие шипящие.
9
Дан массив из слов A(n). Найти все слова, начинающиеся с заданной буквы.
10
Дан массив из слов У(m). Найти все слова, у которых есть буквы а, о и е.
11
Дан массив из слов Т(к). Найти все слова, начинающиеся или заканчивающиеся буквой "з".
12
Дан массив из слов Т(к). Найти все слова, содержащие заданное количество букв.
13
Дан массив из слов Z(m). Найти все слова, в которых есть две подряд идущие одинаковые буквы.
14
Дан массив из слов X(k). Найти все слова, длина которых кратна трем.

Литература

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

Ссылки

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

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