Новое на сайте

Частота встречаемости символов в матрице
Задача
02 Май 2013

Двумерный массив MxN заполнить случайными символами английского алфавита (заглавные). Вывести на экран сколько раз встречается каждый символ.

Нетипизированные файлы
Учебник
13 Мар 2013

В Pascal, кроме рассмотренных, существуют также нетипизированные файлы. Они совместимы со всеми типами файлов и используются тогда, когда тип элементов файла не важен (например, при копировании). Такие файлы описываются следующим образом:

var имя_файла: file;

Например, возможно такое описание:

var FileOneType: file;

Типизированные файлы
Учебник
08 Мар 2013

Более характерным для Pascal являются типизированные файлы, или файлы произвольного доступа. Основным свойством этих файлов является то, что их структура данных представляет собой последовательность компонентов одного типа. Описывают подобный файл словосочетанием file of с последующим указанием типа компонентов файла, число которых (длина файла) не фиксируется:

var имя_файла: file of тип_компонентов

Текстовые файлы
Учебник
26 Фев 2013

Текстовые файлы состоят из символьных строк переменной длины. Каждая строка завершается специальной комбинацией, называемой «конец строки». Комбинация «конец строки» состоит из двух символов: «перевод каретки» (ASCII-код #13) и «перевод строки» (#10). Завершается текстовый файл символом «конец файла» (#26).

Описание текстового файла осуществляется объявлением переменной типа Text:

var файловая_переменная: Text;

Перевод чисел
Учебник
19 Дек 2012

Примечание. Перед шестнадцатеричным числом надо вводить знак $.

unit Unit1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, 
  Graphics, Dialogs, StdCtrls;
 
type
 
  { TForm_convertion }
 
  TForm_convertion = class(TForm)
    Button_convertion: TButton;
    Edit_dec: TEdit;
    Edit_hex: TEdit;
    Label_hex: TLabel;
    Label_dec: TLabel;
    Label_title2: TLabel;
    Label_title3: TLabel;
    Label_title4: TLabel;
    Label_title1: TLabel;
    procedure Button_convertionClick(Sender: TObject);
  private

Простой калькулятор
Учебник
19 Дек 2012

unit Unit1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, 
  Graphics, Dialogs, StdCtrls;
 
type
 
  { TForm_calc }
 
  TForm_calc = class(TForm)
    Button_plus: TButton;
    Button_minus: TButton;
    Button_mult: TButton;
    Button_div: TButton;
    Edit_num1: TEdit;
    Edit_num2: TEdit;
    Label_result: TLabel;
    procedure Button_divClick(Sender: TObject);
    procedure Button_minusClick(Sender: TObject);
    procedure Button_multClick(Sender: TObject);
    procedure Button_plusClick(Sender: TObject);
  private

Пример описания класса и подкласса (отрезок времени)
Учебник
17 Дек 2012

type TTime = class
  protected
    hour,min,sec: byte;
    function total_sec: integer;   // возвращает полное число секунд
    procedure timefromsec(tsec: integer);  // перевод сек. в ч.м.с
  public
    procedure settime(h,m,s: byte);
 // присваивание полям, исправление аргументов
    procedure print; // вывод значений полей
    procedure plus(first,second: ttime);
    procedure minus(first,second: ttime);
    procedure mult(first: ttime; second:byte);
    procedure divide(first: ttime; second:byte);
end;
function TTime.total_sec: integer; begin

Перегрузка операций
Учебник
12 Дек 2012

Перегрузка операций + и - для комплексных чисел.

type
  TComplex = class
    private
      x,y: real; //действительная и мнимая части
    public
      constructor Create;
      function Modul(): real;
      function Argument(): real;
      procedure Printer();
  end;
constructor TComplex.Create;
  begin
    x := 0; y := 0;
    inherited Create;
  end;
function TComplex.Modul(): real;
  begin
    modul := sqrt(x*x + y*y);
  end;
function TComplex.Argument(): real;
  begin
    argument := arctan(y/x) * 180/pi;
  end;
procedure TComplex.Printer();
  begin

Наследование
Учебник
23 Ноя 2012

В зависимости от того, какие действия происходят при вызове, методы делятся на следующие группы:

  • статические методы;
  • виртуальные методы;
  • динамические методы.

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

Инкапсуляция
Учебник
02 Ноя 2012

private
    <поля и методы, доступные только в пределах модуля>
protected
    <поля и методы, доступные только в классах потомках>
public
    <поля и методы, доступные из других модулей>
published
    <поля и методы, видимые в инспекторе объектов>

Пример был взят из учебника Free Pascal и Lazarus (Е.Р. Алексеев, О.В. Чеснокова, Т.В. Кучер), где он описан для среды Lazarus и с графическим интерфейсом.

Здесь приводится для IDE Free Pascal.

{$mode objfpc}
 
uses Classes;
 
type TPolygon = class(TObject)
    private
        k: integer;