В отличии от процедур, объявление функций в разделе объявлений модуля среды Delphi не требуется.

function Mytg(x: real): real;

begin

       Mytg := sin(x)/cos(x);

end;

procedure TForm1.Button1Click(Sender: TObject);

var x, y :real;

begin

       x:=StrToFloat(Edit1.Text);

       y := Mytg(x)+ 1/Mytg(x) + sqr(Mytg(x));

       Label3.Caption:=FloatToStr(y);

end;

Лабораторная работа №13

Используя подпрограммы образовать и вывести двумерный массив A с элементами am, n=2mfi(n), где m, n = 1, 2, 3, 4. Составить еще одну программу для поиска в данном массиве, критерий которого взят из условия лабораторной работы № 8. Выполнить два варианта: один – в среде Pascal, другой – в среде Delphi.

Рекурсия

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

Пример

Рекурсивная функция вычисления суммы целых чисел от a до b.

function Sum(a, b: integer) : integer;

begin

       if a = b then Sum := a; { Это условие остановки рекурсии}

       else Sum := b+ Sum(a, b-1); {Это условие продолжения рекурсии, неявный цикл}

end;

Таким образом,

Sum(3, 5)=5+ Sum(3,4) + 5+4+ Sum(3,3)=5+4+3

Пример

Составить рекурсивную функцию Factorial для вычисления n!, которая основывается на формуле n!=n * (n – 1)!

Код программы в среде Pascal

НЕ нашли? Не то? Что вы ищете?

program Factorial (n: integer) : integer;

begin

       if n = 0 then Factorial := 1

       else Factorial :=n*Factorial(n-1);

end.

Внешний вид формы в Delphi


В конструкторе

При выполнении


Код программы в среде Delphi

function Factorial (n: integer) : integer;

begin

       if n = 0 then Factorial := 1

       else Factorial :=n*Factorial(n-1);

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

Label3.Caption:=IntToStr(Factorial(StrToInt(Edit1.Text)));

end;

Лабораторная работа №14

Составить программу вычисления суммы и произведения

X=У(fi(k)) и Y = П(fi+1(k)),

где k от 1 до заданного пользователем числа, используя рекурсивные функции.

Вывести значение выражения z. Выполнить два варианта: один – в среде Pascal, другой – в среде Delphi.



Формулировка задания

Формулировка задания

1.

z = x+y

14.

z = xy – 12

2.

z = xy

15.

z = x – 2y

3.

z = tg y – x

16.

z = 2xy – x

4.

z = (x+y)2

17.

z = cos (xy)

5.

z =5xy – 4

18.

z = |x – y|

6.

z = sin x + y

19.

z = ctg 2x – y

7.

z = x + y2

20.

z = exy

8.

z = x2y-3

21.

z = 4xy – y

9.

z = (xy)1/4

22.

z = 2x – y

10.

z = |12x – y|

23.

z = 2x2 – 4y

11.

z = tg (x+y)

24.

z = ln |x + 4y|

12.

z = 3xy – cos y

25.

z = 4x + ey

13.

z = 5x – 2y


Записи

Запись – это структура (тип данных), предназначенная для хранения в оперативной памяти компьютера сложных данных, состоящих из дополнительных компонент различных типов, которые называются полями. Синтаксис описания записей в разделе type или в разделе var:

ИмяЗаписи = record

       ИмяПоля1 : ТипПоля1;

       …

       ИмяПоляN : ТипПоляN;

       end;

Синтаксис доступа к конкретному полю конкретной записи

ИмяЗаписи. ИмяПоля

Однако, составным именем пользоваться не всегда удобно. Для их упрощения служит команда присоединения with.

with ИмяПеременной do Команда;

Пример

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

Код программы в среде Pascal

program Autoprice;

uses Crt;

const n =10;

type MyAuto = record

               mark : string[15];

               year, price : integer;

               end;

var a1 : array[1..n] of MyAuto;

       i : integer;

begin

       clrscr;

       for i:=1 to 10 do

               with a1[i] do

                       begin

                       writeln(‘введите марку машины’);

                       readln(mark);

                       writeln(‘введите год выпуска’);

                       readln(year);

                       writeln(‘введите цену’);

                       readln(price);

                       end;

       writeln();

       writeln(‘Фирма предлагает такие машины’);

       for i:=1 to 10 do

               with a1[i] do

                       writeln (mark:15, yeat:10, ‘$’, price);

       writeln();

       writeln(‘Выведем информацию об отобранных машинах’);

       for i:=1 to 10 do

               with a1[i] do

                       if price < 3000 then writeln (mark:15, yeat:10);

       readln;

end.

Внешний вид формы в Delphi


В конструкторе


При выполнении



Код программы в среде Delphi

{полный код модуля}

unit uRecord;

interface

uses

       Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

       Dialogs, Grids, StdCtrls;

const n =10;

type

MyAuto = record

               mark : string[15];

               year, price : integer;

               end;

               TForm1 = class(TForm)

               Button1: TButton;

               StringGrid1: TStringGrid;

               Button2: TButton;

               Label1: TLabel;

               Edit1: TEdit;

               StringGrid2: TStringGrid;

               Label2: TLabel;

               Label3: TLabel;

               procedure Button1Click(Sender: TObject);

               procedure FormCreate(Sender: TObject);

               procedure Button2Click(Sender: TObject);

       private

               { Private declarations }

       public

               { Public declarations }

       end;

var

       Form1: TForm1;

       a1 : array[1..n] of MyAuto;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

begin

StringGrid1.Cells[0,0]:='марка';

StringGrid2.Cells[0,0]:='марка';

StringGrid1.Cells[1,0]:='год выпуска';

StringGrid2.Cells[1,0]:='год выпуска';

StringGrid1.Cells[2,0]:='стоимость';

StringGrid2.Cells[2,0]:='стоимость';

end;

procedure TForm1.Button1Click(Sender: TObject);

var i : integer;

begin

       for i:=1 to 3 do

               with a1[i] do

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17