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

Материал из Wiki Mininuniver
Перейти к навигацииПерейти к поиску
(Задание)
 
(не показано 8 промежуточных версий 2 участников)
Строка 1: Строка 1:
 
<Center>'''Программирование на Delphi циклов с условием'''</Center>
 
<Center>'''Программирование на Delphi циклов с условием'''</Center>
 +
 +
== Операторы REPEAT и WHILE ==
 
Для программирования циклов с условием в Delphi существуют оператор цикла с предусловием WHILE и оператор цикла с постусловием REPEAT.
 
Для программирования циклов с условием в Delphi существуют оператор цикла с предусловием WHILE и оператор цикла с постусловием REPEAT.
  
Строка 14: Строка 16:
 
В операторе repeat сначала выполняются операторы, и только потом вычисляется логическое выражение. Если оно ложно, то управление возвращается в начало цикла, повторяется выполнение операторов тела цикла. Если условие истинно – то выход из цикла.
 
В операторе repeat сначала выполняются операторы, и только потом вычисляется логическое выражение. Если оно ложно, то управление возвращается в начало цикла, повторяется выполнение операторов тела цикла. Если условие истинно – то выход из цикла.
 
== Пример 1.==  
 
== Пример 1.==  
*Условие
+
*'''Условие'''
 
Алгоритм Евклида для подсчета НОД (наибольшего общего делителя) двух натуральных чисел.
 
Алгоритм Евклида для подсчета НОД (наибольшего общего делителя) двух натуральных чисел.
  
*Использованные компоненты
+
*'''Использованные компоненты'''
 +
 
 +
Label1 - для вывода описания
 +
 
 +
Label2 - для вывода описания
  
 +
Label3 - для вывода описания
  
*Программный код
+
Edit2 - для ввода числа
  
var a,b,x,y,z:integer;
+
Edit1 - для ввода числа
  
procedure TForm1.BitBtn2Click(Sender: TObject);
+
BitBtn1 - для запуска решения
begin
+
 
close;
+
BitBtn2 - для выхода из формы
end;
 
  
 +
*'''Программный код'''
 +
 +
  unit Unit1;
 +
interface
 +
  uses
 +
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 +
Dialogs, StdCtrls, Buttons;
 +
type
 +
    TForm1 = class(TForm)
 +
    Label1: TLabel;
 +
    Label2: TLabel;
 +
    Edit2: TEdit;
 +
    Label3: TLabel;
 +
    BitBtn1: TBitBtn;
 +
    BitBtn2: TBitBtn;
 +
    Edit1: TEdit;
 +
procedure BitBtn2Click(Sender: TObject);
 +
procedure BitBtn1Click(Sender: TObject);
 +
  private
 +
{ Private declarations }
 +
  public
 +
{ Public declarations }
 +
end;
 +
  var
 +
    Form1: TForm1;
 +
implementation
 +
{$R *.dfm}                     
 +
  var
 +
    a,b,x,y,z:integer;
 +
procedure TForm1.BitBtn2Click(Sender: TObject);
 +
begin
 +
close;
 +
end;
 
  procedure TForm1.BitBtn1Click(Sender: TObject);
 
  procedure TForm1.BitBtn1Click(Sender: TObject);
 
 
  begin
 
  begin
a:=strtoint(edit1.Text);
+
  a:=strtoint(edit1.Text);
b:=strtoint(edit2.Text);
+
  b:=strtoint(edit2.Text);
 
   x:=a; y:=b;
 
   x:=a; y:=b;
    while (x<>y) do
+
  while (x<>y) do
      if x>y then x:=x-y
+
  if x>y then x:=x-y
              else y:=y-x;
+
  else y:=y-x;
      z:=x;
+
  z:=x;
label3.Caption:='НОД= '+inttostr(z);
+
  label3.Caption:='НОД= '+inttostr(z);
end;
+
end;
end.
+
end.
 +
 
 
*Форма с результатом работы программы
 
*Форма с результатом работы программы
 
[[Изображение:-4-1.JPG]]
 
[[Изображение:-4-1.JPG]]
 +
 
== Пример 2.==  
 
== Пример 2.==  
*Условие
+
*'''Условие'''
 
+
Вычислить сумму членов ряда  (...вставить формулу...)  с точностью до члена ряда, меньшего Е.
*Использованные компоненты
+
*'''Использованные компоненты'''
 
+
Label1 - для тектовых коментарий; <br>
*Программный код
+
Label2 - для вывода результата;<br>
 
+
Edit1 - для ввода числа;<br>
var n:integer;
+
BitBtn1 - для запуска программы;<br>
 +
BitBtn2 - для выхода из программы.<br>
 +
*'''Программный код'''
 +
unit Unit1;
 +
interface
 +
uses
 +
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 +
  Dialogs, StdCtrls, Buttons;
 +
type
 +
  TForm1 = class(TForm)
 +
    Label1: TLabel;
 +
    Label2: TLabel;
 +
    Edit1: TEdit;
 +
    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}
 +
  var n:integer;
 
       s,z,e:real;
 
       s,z,e:real;
procedure TForm1.BitBtn2Click(Sender: TObject);
+
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
+
begin
close;
+
close;
end;
+
end;
 
+
procedure TForm1.BitBtn1Click(Sender: TObject);
procedure TForm1.BitBtn1Click(Sender: TObject);
+
begin
begin
+
  e:=strtofloat(edit1.Text);
e:=strtofloat(edit1.Text);
+
  n:=1; z:=1/6; s:=0;
n:=1; z:=1/6; s:=0;
 
 
     while abs(z)>=e do
 
     while abs(z)>=e do
 
       begin
 
       begin
Строка 68: Строка 133:
 
         z:=n/((n+1)*(n+2));
 
         z:=n/((n+1)*(n+2));
 
       end;
 
       end;
label2.Caption:='Сумма= '+floattostr(s);
+
  label2.Caption:='Сумма= '+floattostr(s);
end;
+
end;
 +
end.
 +
*'''Форма с результатом работы программы'''
  
end.
 
*Форма с результатом работы программы
 
 
== Пример 3.==  
 
== Пример 3.==  
  
*Условие
+
*'''Условие'''
 
+
Вычислить кубический корень из числа m методом Ньютона по формуле: '''...(вставить формулу)...''' Вычисления продолжать пока '''...(вставить формулу)...'''  не станет меньше заданной точности Е.
*Использованные компоненты
+
*'''Использованные компоненты'''
 
+
Label1 - для текстовых комментарий; <br>
*Программный код
+
Label2 - для текстовых комментарий;<br>
 
+
Label3 - для вывода результата;<br>
var x1,x2,d,e,m:real;
+
Edit1 - для ввода числа;<br>
procedure TForm1.BitBtn2Click(Sender: TObject);
+
Edit2 - для ввода числа;<br>
begin
+
BitBtn1 - для запуска программы;<br>
close;
+
BitBtn2 -для выхода из программы.<br>
end;
+
*'''Программный код'''
 
+
unit Unit1;
procedure TForm1.BitBtn1Click(Sender: TObject);
+
interface
begin
+
uses
m:=strtofloat(edit1.Text);
+
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
e:=strtofloat(edit2.Text);
+
  Dialogs, StdCtrls, Buttons;
x1:=m;
+
type
  repeat
+
  TForm1 = class(TForm)
    x2:=2/3*x1+m/3/sqr(x1);
+
    Label1: TLabel;
    d:=abs(x1-x2);
+
    Label2: TLabel;
    x1:=x2;                   
+
    Edit1: TEdit;
  until d<=e;
+
    Edit2: TEdit;
label3.Caption:='Корень= '+floattostr(x2);
+
    Label3: TLabel;
end;
+
    BitBtn1: TBitBtn;
 
+
    BitBtn2: TBitBtn;
end.
+
    procedure BitBtn2Click(Sender: TObject);
 
+
    procedure BitBtn1Click(Sender: TObject);
*Форма с результатом работы программы
+
  private
 
+
    { Private declarations }
 +
  public
 +
    { Public declarations }
 +
  end;
 +
var
 +
  Form1: TForm1;
 +
implementation
 +
{$R *.dfm}
 +
  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.
 +
*'''Форма с результатом работы программы'''
  
 
==Задание==
 
==Задание==
  
Таблица 13
+
Таблица 9(Находится в разработке)
  
Таблица 14
+
Таблица 10(Находится в разработке)
  
 
==Литература==
 
==Литература==

Текущая версия на 09:01, 19 апреля 2008

Программирование на Delphi циклов с условием

Операторы REPEAT и WHILE

Для программирования циклов с условием в Delphi существуют оператор цикла с предусловием WHILE и оператор цикла с постусловием REPEAT.

Формат операторов:

while условие do оператор;

repeat операторы until условие;

условие – логическое выражение.

В операторе while сначала вычисляется логическое выражение и если оно истинно, то выполняется оператор. После этого управление возвращается в начало цикла на вычисление логического выражения. Если условие ложно, оператор завершает работу и управление передаётся на следующий оператор.

В операторе repeat сначала выполняются операторы, и только потом вычисляется логическое выражение. Если оно ложно, то управление возвращается в начало цикла, повторяется выполнение операторов тела цикла. Если условие истинно – то выход из цикла.

Пример 1.

  • Условие

Алгоритм Евклида для подсчета НОД (наибольшего общего делителя) двух натуральных чисел.

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

Label1 - для вывода описания

Label2 - для вывода описания

Label3 - для вывода описания

Edit2 - для ввода числа

Edit1 - для ввода числа

BitBtn1 - для запуска решения

BitBtn2 - для выхода из формы

  • Программный код
 unit Unit1;
interface
 uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
    TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Edit2: TEdit;
    Label3: TLabel;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    Edit1: TEdit;
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
 private
{ Private declarations }
 public
{ Public declarations }
end;
 var
    Form1: TForm1;
implementation
{$R *.dfm}                       
 var 
    a,b,x,y,z:integer;
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
close;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
 a:=strtoint(edit1.Text);
 b:=strtoint(edit2.Text);
 x:=a; y:=b;
 while (x<>y) do
 if x>y then x:=x-y
 else y:=y-x;
 z:=x;
 label3.Caption:='НОД= '+inttostr(z);
end;
end.
  • Форма с результатом работы программы

-4-1.JPG

Пример 2.

  • Условие

Вычислить сумму членов ряда (...вставить формулу...) с точностью до члена ряда, меньшего Е.

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

Label1 - для тектовых коментарий;
Label2 - для вывода результата;
Edit1 - для ввода числа;
BitBtn1 - для запуска программы;
BitBtn2 - для выхода из программы.

  • Программный код
unit Unit1;
interface
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, Buttons;
type
 TForm1 = class(TForm)
   Label1: TLabel;
   Label2: TLabel;
   Edit1: TEdit;
   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}
 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.

  • Условие

Вычислить кубический корень из числа m методом Ньютона по формуле: ...(вставить формулу)... Вычисления продолжать пока ...(вставить формулу)... не станет меньше заданной точности Е.

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

Label1 - для текстовых комментарий;
Label2 - для текстовых комментарий;
Label3 - для вывода результата;
Edit1 - для ввода числа;
Edit2 - для ввода числа;
BitBtn1 - для запуска программы;
BitBtn2 -для выхода из программы.

  • Программный код
unit Unit1;
interface
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, Buttons;
type
 TForm1 = class(TForm)
   Label1: TLabel;
   Label2: TLabel;
   Edit1: TEdit;
   Edit2: TEdit;
   Label3: TLabel;
   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}
 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.
  • Форма с результатом работы программы

Задание

Таблица 9(Находится в разработке)

Таблица 10(Находится в разработке)

Литература

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


Ссылки

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

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