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

Материал из НГПУ им. К.Минина
Перейти к: навигация, поиск
(Пример 3.)
(Задание)
 
(не показаны 2 промежуточные версии 2 участников)
Строка 1: Строка 1:
 
<Center>'''Программирование на Delphi циклов с условием'''</Center>
 
<Center>'''Программирование на Delphi циклов с условием'''</Center>
 +
 +
== Операторы REPEAT и WHILE ==
 
Для программирования циклов с условием в Delphi существуют оператор цикла с предусловием WHILE и оператор цикла с постусловием REPEAT.
 
Для программирования циклов с условием в Delphi существуют оператор цикла с предусловием WHILE и оператор цикла с постусловием REPEAT.
  
Строка 196: Строка 198:
 
==Задание==
 
==Задание==
  
<center>'''Таблица 9'''</center>
+
Таблица 9(Находится в разработке)
 
+
{| border=2
+
|-
+
|<center>'''№ варианта'''</center>
+
|<center>'''Условие'''</center>
+
|-
+
|<center>1</center>
+
|Вычислить квадратный корень из заданного числа x с точностью Е по итерационному методу Ньютона по формуле:
+
[[Изображение:Таблица9 Задание1.JPG]]
+
|-
+
|<center>2</center>
+
|Для выражения  exp(k)/k определить наименьшее  k, при котором значение выражения становится больше заданного числа n.
+
|-
+
|<center>3</center>
+
|Найти наибольшую степень двойки, не превышающую заданного числа n
+
|-
+
|<center>4</center>
+
|Ввести и просуммировать любое количество целочисленных значений. Если введено значение 999, то вывести результат суммирования.
+
|-
+
|<center>5</center>
+
|Найти наименьшее общее кратное двух чисел.
+
|-
+
|<center>6</center>
+
|Найти наибольшую степень 3, не превышающую заданного числа m.
+
|-
+
|<center>7</center>
+
|Для выражения [[Изображение:Таблица9__Задание7.JPG]]  определить наименьшее k,  при котором значение выражения становится  больше заданного числа m.
+
|-
+
|<center>8</center>
+
|Кощей Бессмертный зарыл клад на глубину 1 м. Этого ему показалось не достаточно, он отрыл клад, углубил колодец до 2 м и снова зарыл. Этого ему опять показалось мало, он отрыл  клад, углубил колодец до 3 м и зарыл. Затем  он проделал тоже, углубив колодец до 4 м,  потом до 5 м, 6 м и т.д. Известно, что  колодец глубиной n метров Кощей вырывает за  n2  дней. Известно также, что на 1001-й день  Кощей умер от непосильной работы. На какой глубине остался клад? (Временем, необходимым  для закапывания клада, пренебречь).
+
|-
+
|<center>9</center>
+
|Два параллельных зеркала А и В обращены друг  к другу. При падении луча на зеркало А он  ослабляется на Т[%], а при его падении на зеркало В - на Р[%]. Определить, после скольких  отражений луч, попеременно отражаясь то от  зеркала А, то от зеркала В, ослабеет более чем  в 50 раз. Первоначально он попадает на зеркало А.
+
|-
+
|<center>10</center>
+
|В водохранилище каждые сутки поступает Т [м3] воды, а расходуется R [ м3] на орошение полей  и испарение, к тому же ежесуточно теряется  А(1-exp(-V)) [м3] воды на просачивание  в почву, где А - коэффициент , V - объем воды в водохранилище. Определить, за сколько дней объем воды в водохранилище  уменьшится на Р [%] заданного первоначального объема  V0. Принять А = 100.
+
|-
+
|<center>11</center>
+
|Найти число в последовательности Фибоначчи  большее заданного числа m и его порядковый  номер. Члены ряда Фибоначчи вычисляются по формуле:
+
F(1) = F(2) = 1
+
  
F(k) = F(k-1) + F(k-2), k > 2
+
Таблица 10(Находится в разработке)
|-
+
|<center>12</center>
+
|На железнодорожном пути находится n разрозненных вагонов. К ним движется вагон с кинетической энергией W, он сцепляется с ближайшим вагоном, затем вместе с ним движется дальше, сцепляясь с очередным вагоном, и т.д. При каждой сцепке расходуется 20% имеющейся кинетической энергии, еще Р[ Дж ] затрачивается на то, чтобы стронуть с места неподвижный вагон и, если энергия не истрачена полностью, движение продолжается. Определить, сколько вагонов окажутся сцепленными.
+
|-
+
|<center>13</center>
+
|Вычислить значения функции:
+
[[Изображение:Задание13.JPG]]
+
<br>
+
для k = 1,2 ...  Вычисления производить до тех пор, пока t >= z. x, y, z вводятся.
+
+
|-
+
|<center>14</center>
+
|Извлечь корень степени m из числа x,  воспользовавшись итерационной формулой:
+
[[Изображение:Задание14.JPG]]
+
<br>
+
Вычисления продолжать пока [[Изображение:Задание14-1.JPG]]не станет меньше заданной точности Е.
+
|}
+
<center>'''Таблица 14'''</center>
+
+
+
{| border=2
+
|-
+
|<center>'''№ варианта'''</center>
+
|<center>'''Условие'''</center>
+
|-
+
|<center>1</center>
+
|[[Изображение:Формула1.JPG]]
+
|-
+
|<center>2</center>
+
|[[Изображение:Формула2.JPG]]
+
|-
+
|<center>3</center>
+
|[[Изображение:Формула3.JPG]]
+
+
|-
+
|<center>4</center>
+
|[[Изображение:Формула4.JPG]]
+
|-
+
|<center>5</center>
+
|[[Изображение:Формула5.JPG]]
+
|-
+
|<center>6</center>
+
|[[Изображение:Формула6.JPG]]
+
|-
+
|<center>7</center>
+
|[[Изображение:Формула7.JPG]]
+
|-
+
|<center>8</center>
+
|[[Изображение:Формула8.JPG]]
+
|-
+
|<center>9</center>
+
|[[Изображение:Формула9.JPG]]
+
|-
+
|<center>10</center>
+
|[[Изображение:Формула10.JPG]]
+
|-
+
|<center>11</center>
+
|[[Изображение:Формула11.JPG]]
+
|-
+
|<center>12</center>
+
|[[Изображение:Формула12.JPG]]
+
|-
+
|<center>13</center>
+
|[[Изображение:Формула13.JPG]]
+
|-
+
|<center>14</center>
+
|[[Изображение:Формула14.JPG]]
+
|}
+
  
 
==Литература==
 
==Литература==

Текущая версия на 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