Разделы
  Delphi
  C++
  PHP
  Windows
  Linux
 

Основы Delphi: 0. Пилотная статья


Первая программа

Не будем вдаваться в подробности истории Delphi, для этого есть Википедия. Сразу перейдем к первой программе:

program HelloWorld;

{$APPTYPE CONSOLE}

begin
  WriteLn('Hello, World!');
  ReadLn;
end.

Как можно заметить, программа начинается с ключевого слова program, за которым идет идентификатор - имя программы. Программа начинает выполняться с главного блока, заключенного между begin и end. В конце программы ставится точка.

Для того, чтобы указать компилятору, что наше приложение является консольным, используется директива APPTYPE с параметром CONSOLE.

Для вывода в консоль используется процедура WriteLn, которая выводит строку 'Hello, World!' в консоль и переходит на новую строчку. Процедурой ReadLn мы задерживаем выполнение программы до нажатия ENTER.

Запустив программу, мы получим следующий результат:

Hello, World!

Это одна из самых простых программ, в дальнейшем мы будем усложнять ее.


Переменные

Переменные в Delphi объявляются после ключевого слова var:

var
  a: integer;
  b, c: string;
  d: integer = 0;
  e: string = 'Hello, World!';

Переменные можно сразу инициализировать, написав знак "=" и значение. Переменные одного типа можно перечислять через запятую.

Изменим нашу программу: добавим вывод переменных. Для перемещения в переменную какого-либо значения используется оператор ":=".

program HelloWorld;

{$APPTYPE CONSOLE}

var
  a, b: integer;
  c: integer = 10;
  d: integer = 10;

begin
  a := 10;
  b := 20;
  c := 30;

  Write(a);
  Write(' ');
  WriteLn(b);

  WriteLn(c,' ',d);

  ReadLn;
end.

10 20
30 10

Можно заметить, что мы использовали процедуру Write для вывода информации без переноса на новую строчку. Также процедуры Write и WriteLn принимают любое число параметров (в том числе и нулевое).


Стандартные типы данных

В языке Delphi есть набор стандартных типов данных. Они подразделяются на целочисленные, вещественные, логические и строковые. В следующей таблице представлены целочисленные типы данных:

ТипОписаниеРазмер памятиЗначения
byteБеззнаковое целое1 байт0..255
shortintЗнаковое целое1 байт-128..127
wordБеззнаковое целое2 байта0..65535
smallintЗнаковое целое2 байта-32768..32767
cardinal
longword
Беззнаковое целое4 байта0..4294967295
или 0..232-1
integer
longint
Знаковое целое4 байта-2147483648..2147483647
или -231..231-1
int64Знаковое целое8 байт-9223372036854775808..9223372036854775807
или -263..263-1
uint64Беззнаковое целое8 байт0..18446744073709551615
или 0..264-1

Чем больше памяти выделяется для хранения значения переменной соответствующего типа, тем больше различных значений может принимать данная переменная. Существует два типа, размер памяти которых зависит от архитектуры создаваемого приложения - NativeInt и NativeUInt - знаковое и беззнаковое целое соответственно:

Тип32-битная архитектура64-битная архитектура
NativeInt4 байта8 байт
NativeUInt4 байта8 байт
longint4 байта4 байта
int648 байт8 байт

Далее перечислены вещественные типы данных:

ТипОписаниеРазмер памятиЗначения
singleЗнак - 1 бит.
Мантисса - 23 бита.
Экспонента - 8 бит.
4 байта1.5 * 10-45 .. 3.4 * 1038
real48Знак - 1 бит.
Мантисса - 40 бит.
Экспонента - 7 бит.
6 байт2.9 * 10-39 .. 1.7 * 1038
double
real
Знак - 1 бит.
Мантисса - 52 бита.
Экспонента - 11 бит.
8 байт5.0 * 10-324 .. 1.7 * 10308
extendedЗнак - 1 бит.
Мантисса - 64 бита.
Экспонента - 15 бит.
10 байт3.6 * 10-4951 .. 1.1 * 104932
compЗнак - 1 бит.
Мантисса - 63 бита.
Экспонента - 0 бит.
8 байт-263..263-1
currencyЗнак - 1 бит.
Мантисса - 63 бита.
Экспонента - 0 бит.
8 байт-922337203685477.5808..922337203685477.5807 или -263/10000..(263-1)/10000


Чем больше размерность мантиссы, тем более точное значение несет в себе переменная данного типа. Чем больше размерность экспоненты, тем больше отношение максимального и минимального значения одного знака. Для сопроцессора родным является тип extended, т.к. все регистры сопроцессора - 80-битные. Однако использование типа extended может быть не эффективным из-за бóльших операций с памятью.

В следующей таблице можно узнать о строковых типах:

ТипОписаниеРазмер памятиЗначения
AnsiChar
char
Символ Ansi1 байтСимволы ASCII или UTF-8.
ShortStringСтрока до 255 символовот 2 до 256 байт-//-
AnsiString
string
Строка до 2 гигабайт символовот 4 байт до 2 Гбайт-//-
WideCharСимвол Юникода2 байта16-битные символы Юникода.
WideStringСтрока Юникода по 2 байта на символот 4 байт до 2 Гбайт-//-


To be continued...





Copyright (C) ZasKok S.M.S., 2009-2010
Hosted by uCoz