Блок-схема Delphi

Автор работы: Пользователь скрыл имя, 23 Июля 2014 в 18:43, курсовая работа

Краткое описание

Delphi— императивный, структурированный, объектно-ориентированный язык программирования, диалект Object Pascal. Начиная со среды разработки Delphi 7.0, в официальных документах Borland стала использовать название Delphi для обозначения языка Object Pascal. Начиная с 2007 года уже язык Delphi (производный от Object Pascal) начал жить своей самостоятельной жизнью и претерпевал различные изменения, связанные с современными тенденциями (например, с развитием платформы .NET) развития языков программирования: появились class helpers, перегрузки операторов и другое.

Содержание

Введение
История Delphi ……………………………………………… 2
Постановка задачи ………………………………………….. 5
Блок-схема
Основного алгоритма……………………………………….. 6
Подпрограмм ………………………………………………... 7
Листинг программы …………………………………………….. 10
Описание ………………………………………………………… 22
Заключение ……………………………………………………… 24
Список использованной литературы ………………………….. 25

Прикрепленные файлы: 1 файл

Содержание.docx

— 597.60 Кб (Скачать документ)

 

Содержание

  1. Введение
    1. История Delphi ……………………………………………… 2
    2. Постановка задачи ………………………………………….. 5
  2. Блок-схема
    1. Основного алгоритма……………………………………….. 6
    2. Подпрограмм ………………………………………………... 7
  3. Листинг программы …………………………………………….. 10
  4. Описание ………………………………………………………… 22
  5. Заключение ……………………………………………………… 24
  6. Список использованной литературы ………………………….. 25

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Введение

Delphi— императивный, структурированный, объектно-ориентированный язык программирования, диалект Object Pascal. Начиная со среды разработки Delphi 7.0, в официальных документах Borland стала использовать название Delphi для обозначения языка Object Pascal. Начиная с 2007 года уже язык Delphi (производный от Object Pascal) начал жить своей самостоятельной жизнью и претерпевал различные изменения, связанные с современными тенденциями (например, с развитием платформы .NET) развития языков программирования: появились class helpers, перегрузки операторов и другое.

Изначально среда разработки Delphi была предназначена исключительно для разработки приложений Microsoft  Windows, затем был реализован вариант для платформ Linux (как Kylix), однако после выпуска в 2002 году Kylix 3 его разработка была прекращена, и вскоре было объявлено о поддержке Microsoft .NET, которая, в свою очередь, была прекращена с выходом Delphi 2007.

На сегодняшний день, наряду с поддержкой разработки 32 и 64-разрядных программ для Windows, реализована возможность создавать приложения для Apple Mac OS X (начиная с Embarcadero Delphi XE2), IOS (включая симулятор, начиная с XE4 посредством собственного компилятора), а также, в Delphi XE5, приложения для Google Android (непосредственно исполняемые на ARM процессоре).

Независимая, сторонняя реализация среды разработки проектом Lazarus (Free Pascal, компиляция в режиме совместимости с Delphi) позволяет использовать его для создания приложений на Delphi для таких платформ, как Linux, Mac OS X и Windows CE.

Также предпринимались попытки использования языка в проектах GNU (например, Notepad GNU) и написания компилятора для GCC.

В Delphi формальное начало любой программы четко отличается от других участков кода, и расположено в определенном, единственном в рамках проекта, исходном файле с расширением dpr (тогда как другие файлы исходных текстов программы расположены в файлах с расширением pas).

Program Project32;

{$APPTYPE CONSOLE}

{$R *.res}

uses

  System.SysUtils;

Begin

  Try

    {TODO -user -console Main: Insert code here}

  Except

    on E: Exception do

      Writeln (E.ClassName, ': ', E.Message);

  end;

end.

В Delphi, в исходных файла pas (которые, как правило, и содержат основное тело программы), на уровне языковых средств введено строгое разделение на интерфейсный раздел, и раздел реализации. В интерфейсной части содержатся лишь объявления типов и методов, тогда как код реализации в интерфейсной части не допускается на уровне компиляции. Подобное разделение свойственно также языкам C/C++, где условно, в рамках культуры и парадигмы программирования вводится разделение на заголовочные и собственно, файлы реализации, но подобное разделение не обеспечивается на уровне этого языка или компилятора.

В Delphi метод или функция четко определяются зарезервированными для этого ключевыми словами procedure или function, тогда как C-подобных языках обозначается лишь скобками:

/Delphi

Procedure Do Something (aParam: integer);//не возвращает значения

Function Calculate (aParam1, aParam2: integer): integer; //возвращает целочисленный результат

//C#

void DoSomething (int aParam);//не возвращает значения

{

//code

}

int Calculate(int aParam1,aParam2);//возвращает целочисленный результат

{

//code

}

В Delphi начало, и конец программного блока выделяются ключевыми словами begin и end, тогда как в C-подобных языках программирования для этих целей используются фигурные скобки: {}. Таким образом, в Delphi достигается лучшая читаемость кода, особенно для лиц с ослабленным зрением.

Метод доступа в C# всегда относится к одному, и только к одному свойству, тогда как для Delphi это утверждение, вообще говоря, неверно. Более того, один и тот же метод может быть использован для реализации доступа к существенно различным свойствам.

Как Delphi, так и C# допускает использование индексируемых свойств: в этом случае синтаксис доступа к такому свойству аналогичен доступу к элементу массива. Однако, если в Delphi число индексируемых свойств, равно как и число индексаторов, может быть произвольным, в C# индексатор применим лишь к специальному свойству по умолчанию. Кроме того, в Delphi свойство по умолчанию не только может быть индексируемым, также оно может быть перегружено по типу индексатора.

TMyObject=class

    Protected

    Function getStr (name: string):string; virtual;

    Function getStrByIx (ix:integer):string;virtual;

    Function getBy2Indicies(X,Y:integer):string;virtual;

    Public

    Property Value[name:string]:string  read getStr;default;

    Property Value[ix:integer]:string read getStrByIx;default;

    Property Value[x,y:integer]:string read getBy2Indicies;default;//количество

  end;

Object Pascal (Delphi) является результатом  функционального расширения Turbo Pascal.

Delphi оказал огромное влияние  на создание концепции языка C# для платформы .NET.[источник не  указан 749 дней] Многие его элементы  и концептуальные решения вошли  в состав. С#. Одной из причин  называют переход Андерса Хейлсберга, одного из ведущих разработчиков  Дельфи, из компании Borland Ltd. в Microsoft Corp.

Версия 8 способна генерировать байт-код исключительно для платформы .NET. Это первая среда, ориентированная на разработку мульти язычных приложений (лишь для платформы .NET);

Последующие версии (обозначаемые годами выхода, а не порядковыми номерами, как это было ранее) могут создавать как приложения Win32, так и байт-код для платформы .NET.

Delphi for .NET — среда разработки Delphi, а также язык Delphi (Object Pascal), ориентированные  на разработку приложений для .NET.

Первая версия полноценной среды разработки Delphi для .NET — Delphi 8. Она позволяла писать приложения только для .NET. Delphi 2006 поддерживает технологию MDA с помощью ECO (Enterprise Core Object) версии 3.0.

В марте 2006 года компания Borland приняла решение о прекращении дальнейшего совершенствования интегрированных сред разработки Builder, Delphi и C++ Builder по причине убыточности этого направления. Планировалась продажа IDE-сектора компании. Группа сторонников свободного программного обеспечения организовала сбор средств для покупки у Borland прав на среду разработки и компилятор.

Однако в ноябре того же года было принято решение отказаться от продажи IDE бизнеса. Тем не менее, разработкой IDE продуктов теперь будет заниматься новая компания — CodeGear, которая будет финансово полностью подконтрольна Borland.

В августе 2006 года Borland выпустил облегченную версию RAD Studio под именем Turbo: Turbo Delphi (для Win32 и .NET), Turbo C#, Turbo C++.

В марте 2008 года было объявлено о прекращении развития этой линейки продуктов.

В марте 2007 года CodeGear порадовала пользователей обновленной линейкой продуктов Delphi 2007 for Win32 и выходом совершенно нового продукта Delphi 2007 for PHP.

1.2.Математическая постановка задачи

Условие:

Результаты эксперимента хранятся в двумерном массиве m x n (n>=3, m=2*n). Найти пересечение двух множеств и сформировать одномерный массив (заштрихованная часть)..

Найти среднее арифметическое значение элементов одномерного массива.

   
   
   
   



 

 В одномерном массиве подсчитать, сколько элементов отличаются от ср. арифм. значения на 50%. Вспомогательные массивы не создавать.

 

 Входные данные:

1. Количество столбцов двумерного  массива n;

2. Результаты эксперимента, которые  хранятся в двумерном массиве 

  Выходные данные:

1. Размер полученного одномерного массива

2. Среднее арифметическое значение  элементов одномерного массива 

3. Количество элементов массива, которые отличаются от ср. арифм. значения на 50%.

 Требования к программе:

Программа написана на языке Delphi (консольный режим)

Оформить в подпрограммы:

1. Ввод данных эксперимента.

2. Формирование одномерного массива 

3. Подсчет количества элементов  массива, которые отличаются от  ср. арифм. значения на 50%.

1.3. Решение примера заданным методом

Находим ср.  арифм.  и,  сравнивая,  сколько элементов массива, отличаются от ср. арифм. На 50 %.

 

2. Блок-схема

Рис 1. Блок-схема основной подпрограммы.

Рис 2. Блок-схема подпрограммы формирования двумерного массива и ввода данных эксперимента vvodmas.

 

 

 
 Рис 3. Блок-схема подпрограммы нахождения пересечения двух множеств и формирования одномерного массива peresech.

 

Рис 4. Блок-схема подпрограммы расчета среднего арифметического значения элементов одномерного массива srednee.

Рис 5. Блок-схема подпрограммы формирования откорректированного одномерного массива correct.

Рис 6. Блок-схема подпрограммы вывода одномерного массива vyvodmas.

3. Листинг программы

unit kurs_gui;

interface

uses

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

  Dialogs, Grids, StdCtrls;

type  // раздел описания типов данных

  // описание типа - динамический одномерный массив

  t1dArray = array of Real;

  // описание типа - динамический  двумерный массив

  t2dArray = array of array of Real;

  TForm1 = class(TForm)

    lbl_n: TLabel;

    edt_n: TEdit;

    btn_n: TButton;

    //ввод значений массива

    strgrd_mn: TStringGrid;

    //кнопка запуска основной подпрограммы

    btnRaschet: TButton;

    lblx_len: TLabel;

    // вывод размера  полученного одномерного массива

    edt_xlen: TEdit;

    // вывод среднего  арифметическое значение элементов  массива X

    edt_xsr: TEdit;

    lbl_xsr: TLabel;

    lbl_del: TLabel;

    // вывод количества  удаленных элементов массива X

    edt_del: TEdit;

    lbl_ylen: TLabel;

    // вывод размер откорректированного массива Y

    edt_ylen: TEdit;

    lbl_ysr: TLabel;

    // вывод cреднее  арифметическое значение элементов  откорректированного массива Y

    edt_ysr: TEdit;

    lbl_y: TLabel;

    //вывод значений массива

    strgrd_y: TStringGrid;

    procedure btn_nClick(Sender: TObject);

    procedure btnRaschetClick(Sender: TObject);

    procedure FormCreate(Sender: TObject);

  private

    { Private declarations }

  // массив с результатами  эксперимента

  A: t2dArray;

  // одномерный массив  полученный в результате пересечения  двух множеств

  X: t1dArray;

  // откорректированный  одномерный массив

  Y: t1dArray;

  xlen: Integer; // размер массива X

  ylen: Integer; // размер массива Y

  xsr: Real;  // среднее арифметическое  значение элементов массива X

  ysr: Real;  // среднее арифметическое  значение элементов откорректированного  массива Y

  m: Integer; // количество строк  массива A

  n: Integer; // количество столбцов массива A

  //инициализация strgrd_mn

  //col - введенное количество  столбцов

  procedure vvod_n(col:Integer);

  // подпрограмма формирования двумерного массива и ввода данных эксперимента

  // row - количество строк  массива m2d

  // col - количество столбцов  массива m2d

  // возвращает введенный  массив m2d[0..row-1][0..col-1]

  // true - если массив успешно сформирован

  function vvodmas(Var m2d: t2dArray; row: Integer; col: Integer):Boolean;

  // функция нахождения пересечения двух множеств и формирования одномерного массива

  // m2d - двумерный массив  с результатами эксперимента [0..row-1][0..col-1]

  // row - количество строк  массива m2d

  // col - количество столбцов  массива m2d

  // возвращает полученный  одномерный массив m1d и его длину

  function peresech(m2d: t2dArray; row: Integer; col: Integer;

  var m1d: t1dArray): Integer;

  // функция расчета  среднего арифметического значения  элементов одномерного массива

  // m1d - одномерный массив [0..len-1]

  // len - длина массива m1d

  // возвращает среднее  арифметическое значение элементов  массива m1d

  function srednee(m1d: t1dArray; len: Integer): Real;

  // функция формирования откорректированного одномерного массива

  // m1d - одномерный массив [0..len-1]

  // len - длина массива m1d

  // sr - среднее арифметическое  значение элементов массива m1d;

  // возвращает откорректированный  одномерный массив m1d1 и его длину

  function correct(m1d: t1dArray; len: Integer; sr: Real;

  var m1d1: t1dArray): Integer;

  // процедура вывода  одномерного массива

  // m1d - одномерный массив [0..len-1]

  // len - длина массива m1d

  procedure vyvodmas(m1d: t1dArray; len: Integer);

  public

    { Public declarations }

  end;

var // раздел объявления переменных

  Form1: TForm1;

implementation

 

{$R *.dfm}

 

//инициализация strgrd_mn

//col - введенное количество столбцов

procedure TForm1.vvod_n(col:Integer);

var

  i,j:Integer; // индексы

begin

  if (col<3) then

  begin

    //выводим сообщение

    ShowMessage('Значение n должно быть не менее 3');

    //завершаем подпрограмму

    Exit;

  end;

  n:=col;     // количество  столбцов

  m := 2 * n; // находим количество строк

  //количество строк m + 1 фиксированный столбец

   strgrd_mn.RowCount:=m+1;

  //количество столбцов n + 1 фиксированная строка

   strgrd_mn.ColCount:=n+1;

  //подпишем строки  и столбцы

  strgrd_mn.Cells[0,0]:='m\n';

  //строки

  for i:=1 to m do strgrd_mn.Cells[0,i]:=IntToStr(i);

  //столбцы

  for j:=1 to n do strgrd_mn.Cells[j,0]:=IntToStr(j);

  //очистим ячейки

  //строки

  for i:=1 to m do

   begin

      //столбцы

      for j:=1 to n do

       begin

         //очистим ячейку

        strgrd_mn.Cells[j,i]:='';

       end;

   end;

end;

  // подпрограмма формирования  двумерного массива и ввода  данных эксперимента

  // row - количество строк  массива m2d

Информация о работе Блок-схема Delphi