Borland delphi 4 0 для начинающих типы данных строковые типы


Borland delphi 4 0 для начинающих типы данных строковые типы

Delphi 4 для начинающих. Часть 3
Разгребаясь с письмами читателей, я решил начать следующую статью с работы с файлами и строковыми переменными. На такой ход меня натолкнуло следующее письмо: «Я только начал программировать на Delphi. У меня к вам большая просьба: при создании различных программ часто приходится работать с файлами (создавать, удалять, копировать, переписывать файлы), не могли бы вы в ближайшем номере «Компьютерной газеты» мне рассказать о методах работы с файлами». Что ж, желание просящих выполняю.

Подавляющее большинство приложений, с которыми работает пользователь, должно как-то сохранять результаты своей работы, сохранять изменения в настройках. Для сохранения настроек приложения зачастую используют системный реестр, а вот для сохранения конечных данных приходится использовать файлы или базы данных. О базах данных мы поговорим в будущих статьях, а о работе с файлами я поведаю Вам уже сейчас.

Для использования файлов в приложении разработчику приходится решать множество задач. Основные из них – это поиск необходимого файла и выполнение с ним операций ввода/вывода.

Основные принципы и структура файловой системы мало изменились еще со времен MS-DOS. Если не принимать во внимание способы защиты файлов и организацию их хранения на уровне кластеров, то все остается без изменений вот уже скоро двадцать лет. Новые варианты файловых систем (FAT32, NTFS) не изменяют главного – понятия файла и способов обращения к нему. Поэтому современный программный код Delphi, например, для чтения данных из файла, удивительно похож на аналогичный, написанный, к примеру, на Turbo Pascal 4.0.

При организации операций файлового ввода/вывода в приложении большое значение имеет тип используемых данных. В основном это строки, но встречаются числовые данные или структурированная информация, например, записи или массивы данных. О типе хранимых в файле данных необходимо знать заранее. Для работы с файлами необходимо для начала описать тип файла. Для этого используются специальные файловые переменные. Они делятся на нетипизированные и типизированные. В Delphi имеется одна нетипизированная переменная. Для ее обозначения используется ключевое слово file :

Такие файловые переменные используются для организации быстрого и эффективного ввода/вывода безотносительно к типу данных. При этом подразумевается, что данные читаются или записываются в виде двоичного массива. Для этого используются специальные процедуры блочного чтения и записи.

Типизированные файловые переменные обеспечивают ввод/вывод с учетом конкретного типа данных. Для их объявления используется ключевое слово file of, к которому добавляется конкретный тип данных. Например, для работы с двоичным файлом файловая переменная будет иметь вид:

v ar ByteFile: file of byte;

При этом можно использовать любые типы фиксированного размера, за исключением указателей. Разрешается использовать структурные типы, если их составные части удовлетворяют названному выше ограничению. Например, можно создать файловую переменную для записи:


type Country = record

var CountryFile: file of Country;

Для работы с текстовыми файлами используется специальная файловая переменная TextFile или Text :

Теперь, после рассмотрения типов файлов, рассмотрим две наиболее распространенные операции, выполняемые с файлами: чтение и запись. Для их выполнения применяются специальные функции файлового ввода/вывода.

Итак, для выполнения операции чтения и/или записи необходимо выполнить следующие действия:

  1. Объявить файловую переменную;
  2. При помощи функции AssignFile связать эту переменную с требуемым файлом;
  3. Открыть файл при помощи функций Append, Reset или Rewrite;
  4. Выполнить операции чтения и/или записи. При этом, в зависимости от сложности задачи и структуры данных, может использоваться целый ряд вспомогательных функций.
  5. Закрыть файл при помощи функции CloseFile .

В качестве примера рассмотрим небольшой фрагмент исходного кода программы:

If OpenDlg1.Execute then AssignFile(F, OpenDlg1.fileName) else exit;

While Not EOF(F) do

Если в диалоге OpenDlg1 был выбран файл, то его имя связывается с файловой переменной F при помощи процедуры AssignFile . В качестве имени файла всегда рекомендуется передавать полное имя файла (включая путь к нему). Как раз в таком виде возвращают результат выбора файла диалоги работы с файлами, описанные в материале прошлого номера. Затем при помощи процедуры Reset этот файл открывается для чтения и записи. В цикле осуществляется чтение из файла текстовых строк и запись их в компонент TMemo . Процедура Readln осуществляет чтение текущей строки файла и переходит на следующую строку. Цикл выполняется до тех пор, пока функция EOF не сообщит о достижении конца. По завершении цикла файл закрывается.

Теперь остановимся поподробнее на назначении функций, используемых для файлового ввода/вывода. Открытие файла может осуществляться тремя процедурами:


procedure Reset(var F [: File; RecSize: Word ] );
— открывает существующий файл для чтений и записи, текущая позиция устанавливается на первой строке файла;


procedure Append(var F: Text);
— открывает файл для записи информации после его последней строки, текущая позиция устанавливается на конец файла;

procedure Rewrite(var F: File [; Recsize: Word ] ); — создает новый файл и открывает его, текущая позиция устанавливается в начало файла. Если файл с таким именем уже существует, то он перезаписывается.

Чтение данных из файла выполняют процедуры Read и Readln.


procedure Read( [ var F: Text; ] V1 [, V2. Vn ] ); —
для текстовых файлов;


Procedure Read(F, V1 [, V2,…,Vn ] );
— для типизированных файлов.

При одном вызове процедуры можно читать данные в произвольное число переменных. Естественно, тип переменных должен совпадать с типом файла. При чтении в очередную переменную читается ровно столько байт из файла, сколько занимает тип данных. В следующую переменную читается столько же байт, расположенных следом. После выполнения процедуры текущая позиция устанавливается на первом непрочитанном байте. Аналогично работают несколько процедур Read для одной переменной, выполненных подряд.

procedure Readln([ var F: Text; ] V1 [, V2, . Vn ]); — считывает одну строку текстового файла и устанавливает текущую позицию на следующую строку. Если использовать процедуру без переменных, то она просто передвигает текущую позицию на следующую строку.

Процедуры для записи данных в файл Write и Writeln работают аналогично.

Для контроля за текущей позицией в файле применяются две основные функции. Функция EOF возвращает значение True, если достигнут конец файла. Функция EOLN сигнализирует о достижении конца строки. В качестве параметра в функции необходимо передавать файловую переменную.


procedure Seek(var F; N: Longint); —
обеспечивает смещение текущей позиции на N элементов. Размер одного элемента в байтах зависит от типа данных файла (от типизированной переменной).

Рассмотрим теперь режим блочного чтения и записи в файл. Он обеспечивает ввод/вывод данных между файлом и областью адресного пространства (буфером). Этот режим отличается значительной скоростью, причем скорость пропорциональна размеру одного передаваемого блока – чем больше блок, тем больше скорость.

Для реализации этого режима необходимо использовать только нетипизированные файловые переменные. Размер блока определяется в процедуре открытия файла ( Reset, Rewrite, Append ). Непосредственно для выполнения операций используются процедуры BlockRead и BlockWrite . Процедура


procedure BlockRead(var F: File; var Buf; Count: Integer [; var AmtTransferred: Integer]);

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

В блочном режиме чтения/записи размер блока необходимо выбирать таким образом, чтобы он был кратен размеру одному значению типа, который хранится в файле. Например, если в файле хранятся значения типа Double (8 байт), то размер блока может быть равен 8, 16, 24, 32 и т.д. Фрагмент исходного кода блочного чтения из такого файла выглядит так:

DoubleArray: array [0..255] of Double;

If OpenDlg.Execute then AssignFile(F, OpenDlg.FileName) else Exit;

BlockRead(F, DoubleArray, 32, Transfered);

ShowMessage(‘Считано ‘+IntToStr(Transfered)+’ блок(-а,-ов)’);

Как видно из примера, размер блока установлен в процедуре Reset и кратен размеру элемента массива DoubleArray, в который считываются данные. В переменную Transfered возвращается число считанных блоков. Если размер файла меньше заданного в процедуре BlockRead числа блоков, ошибка не возникает, а в переменную Transfered передается число реально считанных блоков.

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


procedure BlockWrite(var f: File; var Buf; Count: Integer [; var AmtTransferred: Integer]);

Еще одна часто выполняемая с файлом операция – поиск файлов в заданном каталоге. Для организации поиска и отбора файлов используются специальные процедуры, а также структура, в которой сохраняются результаты поиска.

Эта запись обеспечивает хранение характеристик файла при удачном поиске. Дата и время создания файла хранятся в формате MS-DOS, поэтому для получения этих параметров в формате TDateTime необходимо использовать функцию


function FileDateToDateTime(FileDate: Integer): TDateTime;

Обратное преобразование выполняет функция


function DateTimeToFileDate(DateTime: TDateTime): Integer;

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

faReadOnly – только для чтения;

Для определения параметров файла используется оператор AND :


If SearchRec.Attr AND faReadOnly) > 0 then ShowMessage(‘
файл только для чтения’);

Непосредственно для поиска файлов используются функции FindFirst и FindNext .

function FindFirst(const Path: string; Attr: Integer; var F: TSearchRec): Integer;

находит первый файл, заданный полным маршрутом Path и параметрами Attr . Если заданный файл найден, функция возвращает 0, иначе – код ошибки. Параметры найденного файла возвращаются в записи F типа TSearchRec .

function FindNext(var F: TSearchRec): Integer;

используется для поиска файла. При этом используются параметры поиска, заданные последним вызовом функции FindFirst . В случае удачного поиска возвращается 0.

Для освобождения ресурсов, выделенных для выполнения поиска, применяется функция

procedure FindClose(var F: TSearchRec);

В качестве примера организации поиска файлов рассмотрим фрагмент исходного кода, в котором маршрут поиска файлов задается в однострочном текстовом редакторе DirEdit, а список найденных файлов передается в компонент TListBox.

FindFirst(DirEdit.Text, faArchive + faHidden, SearchRec);

While FindNext(SearchRec) = 0 do

Напоследок, как и обещал в прошлом номере, немного о создании дополнительных форм. Итак, для создания дополнительной формы необходимо воспользоваться пунктом меню New Form ( File/New Form ) или кнопкой New Form на панели инструментов. Перед Вами появится новая форма проекта с названием Form2 . При запуске программы эта форма не будет активизирована. Для ее запуска необходимо воспользоваться процедурой Show из кода исходной программы. Список существующих форм и возможность активизация форм проекта доступны при нажатии на кнопку ViewForm на панели инструментов или при нажатии на пункт Forms… ( View/Forms… ). Таким образом, необязательно загромождать экран бесконечными формами проекта, когда на данный момент из них необходима только одна. Достаточно закрыть ненужные формы, а при необходимости активизировать их при помощи диалога ViewForm .

Borland delphi 4 0 для начинающих типы данных строковые типы

При описании переменной следует указать ее тип. Знание типа переменной необ-
ходимо для определения набора значений, которые она может принимать, и действий,
которые над ней можно выполнять. Для обозначения типа используют идентификато-
ры. Ранее мы уже познакомились с такими типами, как натуральные и целые числа,
обозначаемые идентификаторами Cardinal и Integer.
Все типы можно разделить на шесть основных подразделов:
• простой тип;
• строковый тип;
• структурный (структурированный) тип;
• указательный тип;
• процедурный тип;
• вариантный тип.
Простые типы
Простые типы определяют упорядоченные множества значений. Это может быть
или множество натуральных чисел (тип Cardinal), или множество целых чисел (тип
integer), оптимизированных для работы с 32-разрядными приложениями, а также
базовые целочисленные типы, перечисленные в табл. 3.2.
Таблица 3.2. Целочисленные типы
Тип Диапазон Формат
Integer от -2147483648 до 2147483647 Знаковый 32 бита
Cardinal от 0 до 4294967295 Беззнаковый 32 бита
s h o r t i n t от-128 до 127 Знаковый 8 бит
Smallint от-32768 до 32767 Знаковый 16 бит
Longint от -2147483648 до 2147483647 Знаковый 32 бита
Int64 от-26 3 до 263-1 Знаковый 64 бита
Byte от 0 до 255 Беззнаковый 8 бит
word от 0 до 65535 Беззнаковый 16 бит
Longword от 0 до 4294967295 Беззнаковый 32 бита
Целочисленные типы можно отнести и к порядковым типам. Порядковые типы
представляют собой подмножество простых типов. Все простые типы, отличные от ве-
щественных типов, являются порядковыми и имеют следующие четыре характеристики.
1. Все возможные значения данного порядкового типа представляют собой упоря-
доченное множество, и каждое возможное значение связано с порядковым но-
мером, который представляет собой целочисленное значение. За исключением
значений целочисленного типа, первое значение любого порядкового типа име-
ет порядковый номер 0, следующее значение имеет порядковый номер 1 и т.д.
Порядковым номером значения целочисленного типа является само это значе-
ние. В любом порядковом типе каждому значению, кроме первого, предшеству-
ет другое значение, и после каждого значения, кроме последнего, следует дру-
гое значение в соответствии с упорядоченностью типа.

);
Readln;
end.
Переменная х типа integer получает значение 3. Указателю PointerLnteger
присваивается значение адреса переменной х. Затем на экран выводится выражение
PointerLnteger^, в данном случае это надо понимать как вывод значения, на кото-
рое указывает указатель PointerLnteger.
О том, что надо вывести значение не самого указателя, а то значение, на которое
указывает указатель, говорит символ » Л » , размещенный после указателя. На экране
будет отображено значение 3.
Здесь пропущено начало программы, но, как вы уже имели возможность убедиться,
оно одинаково для всех программ типа Console Application. В дальнейшем, если нет
особой необходимости, листинги будут приводиться без начальной части.
Когда объявляется новый тип, то принято идентификатор типа начинать с буквы «т».
Например: TNewType. При объявлении указателя идентификатор принято начинать с бук-
вы «р»: PNewPointer. Хотя это и не обязательно, лучше придерживаться этого правила.
Встроенный тип PChar обозначает указатель на строку, которая завершается ну-
лем. Тип PChar описывается следующим образом.
type
PChar = AChar;
Delphi для Windows поддерживает набор правил расширенного синтаксиса, облег-
чающих работу со строками с завершающим нулем, с помощью типа PChar.
В системных модулях System и SysUtils объявлены некоторые стандартные ука-
затели (табл. 3.6), которые можно использовать в программах.
Директива компилятора $т используется для контроля типа указателя, сгенери-
рованного с помощью оператора «в». Эта директива может иметь два состояния
<$Т+>ИЛИ
Таблица 3.6. Стандартные указатели
Тип указателя На какой тип указывает
PAnsiString, Pstring AnsiString
PByteArray TByteArray (объявлен В SysUtils). Используется при
преобразованиях типов, динамически размещая память для массивов
PCurrency, PDouble, Currency, Double, Extended, Single
PExtended, PSingle
P i n t e g e r Integer
POleVariant OleVariant
PShortString Shortstring. Применяется при использовании кода с устаревшим
типом Pstring
PTextBuf TTextBuf (объявлен в Sysueils). Встроенный буфер в записи
TTextRec для файлов
PVarRec TVarRec (объявлен в System)
Pvariant Variant
PWideString WideString
PWordArray TWordArray (объявлен в SysUtils). Используется при
преобразованиях типов, динамически размещая память для массивов с
2-х байтовыми значениями
Если установлено состояние <$т->, то результатом операции с оператором «@» бу-
дет нетипизированный указатель, который может использоваться со всеми другими
типами указателей. Если установлено состояние <$т+>, тип результата будет иметь
значение Лт, где т совместимо только с типом переменной.

Структурные типы данных: Строки

Структурные типы данных объединяют в себе один или несколько других типов, в том числе структурных. К структурным типам относятся:

Илон Маск рекомендует:  Урок 15. PHP - Цикл Do while

Рассмотрим подробнее перечисленные типы.

Строки

Строки (строковые типы) представлены тремя физическими и одним общим типами.

ShortString ? максимальная длина символов — 255 ? Память 2 — 256 байт;

AnsiString ?Примерно 2 x 10 в 31 степени ? 4 байта — 2 Гбайт

WideString ?Примерно 2 х 10 в 30 степени ?4 байта — 2 Гбайт

Тип ShortString представляет собой строку, которая фактически является массивом из 256 элементов — array [0. .255]. Нулевой байт этого массива (строки) указывает длину строки. В ранних версиях языка подобная строка обозначалась типом string, тип shortstring введен в Object Pascal для обеспечения совместимости с этими версиями.

Язык Delphi поддерживает также подтипы типа shortstring, максимальная длина которых изменяется в диапазоне от 0 до 255 символов. Они обозначаются целым числом в квадратных скобках, указываемым справа от ключевого слова string. Например, инструкции:

обеспечивают объявление строковой переменной с именем str50, максимальная длина которой составляет 51 символ, т.е. столько, сколько требует описание типа, плюс 1 байт. В случае использования предопределенного типа shortstring мы израсходовали бы 256 байт памяти.

Типы AnsiString и WideString представляют собой динамические массивы, максимальная длина которых фактически ограничена размером основной памяти компьютера. В типе AnsiString для символов используется кодировка ANSI, а в типе WideString — кодировка Unicode.

Общим типом является тип String, который может соответствовать как типу ShortString, так и типу AnsiString, что определяется директивой компилятора $H. По умолчанию используется <$H+>, и тип String равен типу AnsiString. В файле параметров проекта знак «+» директивы (это верно и для других директив) соответствует записи H=1, а знак «-» — записи H=0. Разработчик обычно управляет интерпретацией типа String с помощью окна параметров проекта, устанавливая/снимая флажок Huge Strings (Большие строки).

Так как строки фактически являются массивами символов, для обращения к отдельному символу строки достаточно указать имя строковой переменной и номер (позицию) этого символа в квадратных скобках, например, strName [1].

Кроме рассмотренных, в языке имеется тип PChar, представляющий так называемук строку с нулевым окончанием— в ее конце стоит код #0. Максимальная длина этой строки ограничена размером основной памяти компьютера.

Borland delphi 4 0 для начинающих типы данных строковые типы

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

Любая величина в Delphi может быть постоянной или переменной. Её имя (идентификатор) может состоять из комбинации латинских букв, цифр и знака подчёркивания, и начинаться не с цифры. При этом регистр символов значения не имеет.

Место описания данных в программе — вне логических блоков begin / end. В модуле перед ключевым словом implementation есть блок описания:

Именно здесь, начиная со следующей строки, удобно объявлять глобальные переменные и константы. Как видим, одна (Form1) уже есть!

Команда объявления переменных в языке Delphi:

var имя_переменной : тип_переменной ;

Слово var — ключевое. Именем может быть любой идентификатор, если он не был описан ранее и не является одним из ключевых или зарезервированных слов языка Delphi. Если нужно описать несколько переменных одного типа, то их перечисляют, отделяя запятой:

Если несколько описаний следуют друг за другом, то ключевое слово var повторно можно не указывать:

Постоянную величину иначе называют константой. Конечно, в программе можно использовать числа и строки непосредственно: 3.1415 или ‘Это значение числа пи’ , но иногда удобнее присвоить их идентификатору. Описание констант аналогично описанию переменных, но используется ключевое слово const, за именем идентификатора следует тип, затем знак равенства и его значение. Причём тип константы допускается не указывать:

const pi= 3.1415 ;
ZnakPi : String = ‘Это значение числа пи’ ;

К слову, константа Pi встроенная в Delphi, то есть для того чтобы использовать в Delphi число 3,1415. в расчётах, нужно просто присвоить встроенную константу Pi переменной типа Real или просто использовать непосредственно в выражениях.

Теперь пришло время узнать о типах данных, используемых в Delphi. Прежде всего это строки и числа.

Строкой называется последовательность символов, заключённая в одиночные кавычки:
‘это текстовая строка’ Если текст должен содержать сам символ кавычки, то его надо повторить дважды:
‘это » — символ одиночной кавычки’ Строка может быть и пустой, не содержащей символов. Тогда она состоит из двух идущих друг за другом без пробела кавычек. Естественно, строка может состоять и только из одних пробелов.
Самый популярный строковый тип — String. Строка типа String может содержать переменное количество символов объёмом до 2 Гбайт. Если нужно ограничить размер строки фиксированным значением, то после ключевого слова String в квадратных скобках указывается число, определяющее количество символов в строке: String[50]. Более полно работа со строками Delphi описывается далее.
Одиночный символ имеет тип Char и записывается в виде знака в одиночных кавычках: ‘a’. Есть символы, которые на экране отобразить невозможно, например, символ конца строки (равен #13), символ переноса строки (равен #10). Такие символы записываются в виде их числового кода (в кодировке ANSI), перед которым стоит знак #. Например, #0.
Наконец, существуют так называемые нуль-терминированные строки. Отсчёт символов в таких строках начинается с нуля, а заканчивается символом с кодом (#0). Такие строки имеют тип PChar.

Числа бывают целые и дробные.
В следующей таблице перечислены стандартные типы целых чисел и соответствующие им дипазоны допустимых значений.

Integer -2147483648 .. +2147483647
Cardinal 0 .. 4294967295
Shortint -128 .. +127
Smallint -32768 .. +32767
Int64 -2 63 .. +2 63 -1
Byte 0 .. +255
Word 0 .. +65535
Наиболее удобным для использования в программах является тип Delphi Integer. Другие целые типы используются для уменьшения места, занимаемого данными в памяти компьютера.

Дробные числа имеют дробную часть, отделяемую десятичной точкой. Допускается использование символа e (или E), за которым следует число, указывающее, что левую часть нужно умножить на 10 в соответствующей степени: 5e25 — пять умножить на десять в двадцать пятой степени.
Ниже приведены стандартные типы дробных чисел и соответствующие им диапазоны допустимых значений. Для большинства типов указан диапазон положительных значений, однако допустимым является аналогичный диапазон отрицательных значений, а также число .

Real 5*10 -324 .. 1.7*10 308
Real48 2.9*10 -39 .. 1.7*10 38
Singl 1.5*10 -45 .. 3.4*10 38
Double 5*10 -324 .. 1.7*10 308
Extended 3.6*10 -4951 .. 1.1*10 4932 -1
Comp -2 63 .. +2 63 -1
Currency 922337203685477.5807
Наиболее удобным для использования в программах является тип Delphi Real. Ему эквивилентен тип Double, но в будущем это может быть изменено. Вычисления с дробными числами выполняются приближённо, за исключением типа Currency (финансовый), который предназначен для минимизации ошибок округления в бухгалтерских расчётах.

Следующим типом данных является логический Boolean, состоящий всего из двух значений: True (Истина) и False (Ложь). При этом True > False.

Теперь, используя компоненты, их свойства и события, вводя собственные переменные, можно конструировать программы, содержащие вычисления. Осталось узнать, как вычисленное значение вывести на экран.
Про консольные программы я здесь не говорю! А в нормальных оконных Windows-приложениях это значение нужно поместить в какой-нибудь компонент, имеющий свойства Text или Caption. Это, например, такие компоненты как Label и Edit, да и сама Форма имеет свойство Caption, куда тоже можно выводить информацию. Однако, в Delphi информацию перед выводом, как правило, необходимо преобразовывать. Так как присвоение возможно только между переменными одного типа, то такая программа (не пытайтесь её исполнять):

var A, B, C: Integer ;
begin
A := 5 ;
B := 10 ;
C := A+B ;
Label1.Caption := C ;
end ;

вызовет ошибку, так как свойство Caption имеет текстовый тип String, а использованные переменные — цифровой тип Integer. Значит, нужно преобразовать значение переменной C в текстовый тип. Для этого есть встроенная функция IntToStr. Строка в нашей «программе», вызывавшая ошибку, должна выглядеть так:

Такая программа, кроме показа числа 15, ни на что не способна. Мы должны научиться вводить в программу другие числа. Используем компоненты Edit. Введённые числа будут содержаться в свойстве Text этих компонентов. Расположим на форме два компонента Edit, один компонент Label и кнопку Button, по нажатию на которую и будем проводить вычисления. В компоненты Edit1 и Edit2 будем вводить числа для суммирования. Чтобы переместиться в редактор кода, щёлкнем дважды по нашей кнопке Button1. Мы попадём прямо в сформированную для нас средой Delphi заготовку обработчика нажатия на кнопку, непосредственно между операторами begin и end. Напишем такой простой код:

procedure TForm1.Button1Click(Sender: TObject);
var A, B, C: Integer; //Не забудьте описание переменных
begin
//Начало кода:
A := Edit1.Text;
B := Edit2.Text;
C := A+B;
Label1.Caption := IntToStr(C);
//Конец кода
end ;

При попытке исполнить этот код Delphi покажет ошибки по аналогичной причине — переменные A и B имеют цифровой тип Integer, а свойство Text — текстовый тип String. Исправить ошибки поможет встроенная функция StrToInt, выполняющая обратное преобразование — текст в целое число. Операторы присвоения переменным A и B должны выглядеть так:

A := StrToInt(Edit1.Text);
B := StrToInt(Edit2.Text);

В данном случае переменные A, B, C использовались для наглядности. Можно обойтись одной строчкой:

Аналогично, имеются функции и для преобразования в строку и обратно действительных чисел c плавающей (Floating англ.) запятой, имеющих тип Real. Для преобразования в строку — FloatToStr, обратно — StrToFloat.
Часто результаты вычислений, имеющие тип Delphi Real, имеют после запятой длинный «хвост» цифр. При выводе такой переменной в текстовом виде необходимо ограничить количество цифр после запятой. Как это можно сделать, описывается также в Уроке Delphi Работа со строками Delphi.

Классификация типов данных в Delphi. Типы с плавающей точкой (Double, Single, Real, Extended)

Типы бывают: 1)Простые/Порядковые (целый, логический, символьный, перечисляемый, диапазон (интервальный тип)); 2)Вещественный; 3)Структурированные(массивы, записи, файлы, классы, интерфейсы); 4)Строки; 5)Указатели; 6)Вариант; 7)Процедурный тип.

Типы с плавающей точкой:

Тип Размер(byte) Кол-во значащих цифр Диапазон
Single 7-8 1.5e-45 … 3.4e38
Double 15-16 5.0e-324 . 1.7e308
Real 11-12 2.9e-39 … 1.7e38
Extended 19-20 3.4e-4951 … 1.1e4932

S-e-m

Здесь m – знаковый разряд числа; e – экспоненциальная часть (содержит двоичный порядок); m – мантисса числа.

Мантисса m имеет длину от 23 (для Single) до 63 (для Extended) двоичных разрядов, что и обеспечивает точность 7-8 для Single и 19-20 для Extended десятичных цифр. Десятичная точка(запятая) подразумевается перед левым (старшим) разрядом мантиссы, но при действиях с числом она сдвигается влево и вправо в соответствии с двоичным порядком числа, хранящимся в экспоненциальной части, поэтому действия над вещественными числами называют арифметикой с плавающей точкой(запятой).
Особые операции :
Round( r ) – 3 округление (r= 2.6);
Trunc ( 2.8 ) – 2 целая часть;
Int (2.8 ) – 2.0 округление дробной части;
Frac (2.8) – 0.7 дробная часть.
11. Порядковые типы. Целые типы в Delphi, тип диапазон

К порядковым типам относятся целые типы, логический и символьный типы, а так же перечисления и тип-диапазон(пользовательский тип). К любому из них применима функция ORD(X) , которая возвращает порядковый номер значения выражения X. Для целых типов ORD(X) возвращает само значение X. Применение к логическому, символьному и к перечислениям дает «+» целое число в диапазоне 0-1(лог. тип), 0-255 (символьный), 0-65535 (перечисление). У типа-диапазон результат применения ord(x) зависит от свойств базового порядкового типа.
Так же к порядковым типам можно применять функции:
PRED(X) – возвращает предыдущее значение порядкового типа ( ord(pred(x)) = ord(x)-1).

SUCC(X)– возвращает следующее значение порядкового типа( ord(succ(x)) = ord(x)+1).
Вот некоторые целые типы :

Название типа Размер в байтах Диапазон
Byte 0…255
Shortint -128…127
Word 0…65535
Integer -2147483647…2147483295

К типам применимы следующие функции :

Abs(x)–возвращает модуль X

Chr(x)–возвращает символ по его коду

Dec(x)–уменьшает значение на 1

Inc(x)–увеличивает значение на 1
Div–целочисленное деление

Mod–дробная часть деления

Sqr(x)–возвращает квадрат X

А так же операции *,/,+,.
При работе с данными, нужно следить за тем, чтобы они не выходили за границы диапазона значений.
Тип-диапазон – это подмножество своего базового типа, в качестве которого может выступать любой порядковый тип, кроме типа-диапазона. Задается границами своих значений внутри базового типа : .. .Есть две функции : HIGH(x) — возвращает максимальное значение типа-диапазона, к которому принадлежит переменная Х.
LOW(x) — возвращает минимальное значение типа-диапазона.

12.Порядковые типы. Символьный тип. Таблица символов.
Значениями символьного типа является множество символов компьютера. Каждому символу присваивается целое число в диапазоне от 0 до 255. Это число служит кодом внутреннего представления символа, его возвращает функция ORD. В Delphi 7 есть три символьных типа :

Тип ANSIChar представляет собой так называемые Ansi-символы. Это символы, которые используются в операционных системах семейства Windows(размером 1 байт). Тип WideChar предназначен для хранения так называемых Unicode-символов, которые в отличие от Ansi-симвояов занимают два байта. Это позволяет кодировать символы числами от 0 до 65535 и используется для представления различных азиатских алфавитов. Первые 256 символов в стандарте Unicode совпадают с символами Аnsi.Тип Char в Delphi 7 эквивалентен типу AnsiChar и обеспечивает наибольшую производительность. Для отображения множества символов в подмножество натуральных чисел и обратно имеются следующие две стандартные функции:

ord(c) — дает порядковый номер символа с;
chr(i) — дает символ с порядковым номером i.
UpCase(CH) – возвращает прописную букву, если CH– строчная латинская буква, в противном случае возвращает сам символ.
Length( ) – функция, результатом которой является длина указанной строки.
13.Логический тип. Логические операторы и операции сравнения.
Значениями логического типа может быть одна из предварительно объявленных констант False или True.
Ord (False) =0; Ord (True) = 1; False

14.Порядковые типы. Перечисляемый тип.(пользовательский тип)
Перечисление, или перечисляемый тип
, задается перечислением тех значений, которые он может получать. Каждое значение именуется некоторым идентификатором и располагается в списке, обрамленном круглыми скобками, например :
Type
TSound = (‘ click, clack, clock’);

Описание переменных : var snd:TSound;
Особые операции:
ord(snd) – возвращает номер значения по порядку начиная с нуля(нумерацию можно начинать с единицы, если в типе указать : Type TSound = (‘click’=1,’ clack, clock’).

15.Тип массив(статический) : описание, ввод, вывод. Форматный вывод.
Это пользовательский тип.
Отличительная особенность массивов заключается в том, что все их компоненты – суть данные одного типа. Эти компоненты можно легко упорядочить и обеспечить доступ к любому из них простым указанием его порядкового номера.
Описание типа массива : = array [ ] of ;
– правильный идентификатор; array,of – зарезервированные слова(массив, из); – список из одного или нескольких индексных типов, разделенных запятыми; – любой тип Паскаля.
В качестве индексных типов в Паскале можно использовать любые порядковые типы, кроме LongInt и типов-диапазонов с базовым типом LongInt.
Обычно в качестве индексного типа используется тип-диапазон, в котором задаются границы индексов. Так как тип за словом of,– это любой тип Паскаля, он может быть, в частности, и другим массивом, например :
type mat = array [0..5,-1..2,Char] of Byte.

Ввод и вывод begin a.b : =100; writeln(a.b); End.

16.Тип запись : описание, ввод, вывод, Оператор With. Запись с вариантами.
Запись
– это структура данных, состоящая из фиксированного количества компонентов, называемых полями записи. В отличие от массива компоненты (поля) записи могут быть различного типа. Чтобы можно было ссылаться на тот или иной компонент записи, поля именуются.
Структура объявления типа записи такова :
= record end;
– правильный идентификатор ;record,end – зарезервированные слова(запись, конец); – список полей, представляющий собой последовательность разделов записи, между которыми ставится точка с запятой. Каждый раздел записи состоит из одного или нескольких идентификаторов полей, отделяемых друг от друга запятыми. За идентификатором(-ми) ставится двоеточие и описание типа поля(-ей).
Описание : type BirthDay = record
day, month : Byte;
year : Word end;
var a, b: BirthDay;

К каждому из компонентов записи можно получить доступ, если использовать составное имя, то есть указать имя переменной, затем точку и имя поля : a. Day : = 27
Для вложенных полей приходится продолжать уточнения :
Type BirthDay = record …. End;
var c : record
name : String ;
bd : BirthDay ;
end;
begin
…. If c. bd. Year = 1939 then
end.
Чтобы упростить доступ к полям записи, используется оператор присоединения WITH :
with do
with, do – ключевые слова ( с, делать) ; – имя переменной типа запись, за которой, возможно, следует список вложенных полей; – любой оператор Паскаля.
Например : with c. bd do month : = 9;
В Паскале допускается использовать записи с так называемыми вариантными полями, например :
Type Forma = record
Name :String ;
case Byteof
0 : (BirthPlace : String [40] ) ;
1 : ( Country : String [20] ) ;
end;
17.Тип множество : описание, ввод, вывод, операции над множествами.
Множество
– это наборы однотипных, логически связанных друг с другом объектов. Характер связей между объектами лишь подразумевается программистом и никак не контролируется в Паскалем. Количество элементов, входящих в множество, может меняться в пределах от 0 до 256. Именно непостоянством количества своих элементов множества отличаются от массивов и записей.
Два множества эквивалентны ó все их элементы одинаковые, причем порядок следования может быть разным. Если одни элементы одного множества входят также и в другое, то говорят о включении первого множества во второе.
Пример определения и задания множеств :
type
digitChat = set of ‘0’ .. ‘9’ ;
var s1,s2,s3: digitChar;

Илон Маск рекомендует:  API для работы с доменами, API Whois, Api Domain, API blacklist
Ввод и вывод : S1:=[ 1..10]; … Writeln(s1); End.

S2:=[‘2’,’3’,’1’];
s3:=[‘2’,’3’];

end.
В этом примере s1 и s2 эквивалентны, а s3 включено в s2, но не эквивалентно ему.
Описание :
= set of
– правильный идентификатор;set, of – зарезервированные слова (множество, из); – базовый тип элементов множества, в качестве которого может использоваться любой порядковый тип, кроме Word, Integer, LongInt.
Над множествами определены следующие операции :
а) пересечение множеств (*) – результат содержит элементы, общие для обоих множеств.
б) объединение множеств (+) – результат содержит элементы первого множества, дополненные элементами из второго множества.
в) разность множеств (-) – результат содержит элементы первого множества, которые не принадлежат второму.
г) проверка эквивалентности (=) – возвращает True, если оба множества эквивалентны.
д) проверка неэквивалентности (<>) – возвращает True, если оба множества неэквивалентны.
е) проверка вхождения первого множества во второе ( =) – возвращает True, если второе множество включено в первое.
з)проверка принадлежности (in) – в этой бинарной операции первый элемент – выражение, а второй – множество одного и того же типа; возвращает True если выражение имеет значение, принадлежащее множеству, (см. предыдущий пример) 1 in s1 возвращает True, а 2*2 in s2 возвращает False.
и) Include – включает новый элемент в множество ( Include (S, I), здесь S- множество, I – элемент)
Exclude – исключает элемент из множества ( Exclude (S, I)).

18.Текстовый файл : описание файловой переменной, основные операции. Использование параметров программы для передачи программе имен файлов.
Текстовый файл – совокупность строк (последовательностей символов) переменной длины, заканчивающихся специальным символом eoln (конец строки; на клавиатуре набирается нажатием клавиши Enter).
Описание файловой переменной : : TextFile; или просто Text.
Первоначально любой файл данных создается как текстовый. Набранные на клавиатуре данные представляют собой стандартный входной файл. Содержимое дисплея при просмотре любого файла – стандартный выходной файл. Эти файлы используются при задании и просмотре данных. Для хранения данных последние записываются в файл на внешнем запоминающем устройстве (диске).

Основные операторы для работы с текстовыми файлами:
assignFile( ,’ ’) – связывает файловую переменную с файлом;
rewrite( ) – создание и открытие нового файла для записи;
reset ( ) – открытие существующего текстового файла (файла, связанного с файловой переменной ) для чтения;
append( ) – открытие существующего текстового файла (файла, связанного с файловой переменной ) для дозаписи в конец;
closeFile( ) – закрытие открытого файла.

Операторы ввода-вывода:
read( , ) – чтение данных; элемент списка ввода для текстового файла – число или символ или строка string;
write( , ) — запись данных согласно списку вывода; элемент списка вывода для текстового файла – число или символ или строка string.
readln( , ) — чтение данных согласно списку ввода и переход на следующую строку; если в строке данных остались данные, не вошедшие в список ввода, они игнорируются
writeln( , ) — запись данных в файл согласно списку вывода с добавлением в конце выведенной строки маркера конца строки (переход на следующую строку).
Параметры :
assignFile(dat, ParamStr(1));
assignFile(res, ParamStr(2));
ParamStr – стандартная функция для работы с параметрами в Delphi, она возвращает параметр с заданным номером. Ее синтаксис:
function ParamStr( : word): string;

Все параметры трактуются как отдельные строки (string). Параметры пользователя нумеруются, начиная с единицы. В нулевом параметре ParamStr(0) ОС передает программе полное имя запускаемого приложения (например, D:\Гречкина\Project1.exe). Этот (нулевой) параметр не входит в общее число параметров, которое можно узнать с помощью функции ParamCount: function ParamCount: word.
19.Назначение и отличие процедур общего вида и функций.
Назначение
. Подпрограммы (процедуры и функции) представляет собой инструмент, с помощью которого любая программа может быть разбита на ряд в известной степени независимых друг от друга частей. Такое разбиение необходимо по двум причинам :
1)Средство экономии памяти.
2)Применение методики нисходящего проектирования, благодаря которой достигаются достаточно простые алгоритмы, которые можно легко запрограммировать.
Отличие : Процедуры и функции представляют собой относительно самостоятельные фрагменты программы, оформленные особым образом и снабженные именем. Отличие процедуры от функции заключается в том, что результатом исполнения операторов, образующие тело функции, всегда является некоторое единственное значение или указатель, поэтому вызов функции, поэтому вызов функции можно использовать в соответствующих выражениях наряду с переменными и константами.
20. Описание и вызов процедур.
Формат описания процедуры имеет вид:

procedure имя процедуры (формальные параметры);

раздел описаний процедурыbegin исполняемая часть процедурыend;
Вызов:
имя процедуры (формальные параметры);


21. Описание и вызов функций.
Формат описания функции:

function имя функции (формальные параметры):тип результата;

раздел описаний функции

begin
исполняемая часть функции
end;Вызов:
Имя переменной:=имя функции (формальные параметры);…
ИЛИ
имя процедуры (имя функции (формальные параметры));
22. Классы формальных параметров: параметры-константы, параметры-значения, параметры-переменные. Ключевые слова const, var, out при описании параметров.Параметры-значения

Формальный параметр-значение обрабатывается, как локальная по отношению к процедуре или функции переменная, за исключением того, что он получает свое начальное значение из соответствующего фактического параметра при активизации процедуры или функции. Изменения, которые претерпевает формальный параметр-значение, не влияют на значение фактического параметра.
Соответствующее фактическое значение параметра-значения должно быть выражением и его значение не должно иметь файловый тип или какой-либо структурный тип, содержащий в себе файловый тип.
Фактический параметр должен иметь тип, совместимый по присваиванию с типом формального параметра-значения. Если параметр имеет строковый тип, то формальный параметр будет иметь атрибут размера, равный 255.
Параметры-константы
Формальные параметры-константы работают аналогично локальной переменной, доступной только по чтению, которая получает свое значение при активизации процедуры или функции от соответствующего фактического параметра. Присваивания формальному параметру-константе не допускаются. Формальный параметр-константа также не может передаваться в качестве фактического параметра другой процедуре или функции.
Параметр-константа, соответствующий фактическому параметру в операторе процедуры или функции, должен подчиняться тем же правилам, что и фактическое значение параметра.
В тех случаях, когда формальный параметр не изменяет при выполнении процедуры или функции своего значения, вместо параметра-значения следует использовать параметр-константу. Параметры-константы позволяют при реализации процедуры или функции защититься от случайных присваиваний формальному параметру. Кроме того, для параметров структурного и строкового типа компилятор при использовании вместо параметров-значений параметров-констант может генерировать более эффективный код.
Параметры-переменные
Параметр-переменная используется, когда значение должно передаваться из процедуры или функции вызывающей программе. Соответствующий фактический параметр в операторе вызова процедуры или функции должен быть ссылкой на переменную. При активизации процедуры или функции формальный параметр-переменная замещается фактической переменной, любые изменения в значении формального параметра-переменной отражаются на фактическом параметре.
Внутри процедуры или функции любая ссылка на формальный параметр-переменную приводит к доступу к самому фактическому параметру. Тип фактического параметра должен совпадать с типом формального параметра-переменной (вы можете обойти это ограничение с помощью нетипизированного параметра-переменной).
Примечание: Файловый тип может передаваться только, как параметр-переменная.
23. Массивы и записи как формальные параметры процедур и функций.
Объявление :
Type mas = array [1..100] of integer;
procedure massiv ( a : mas);

Открытый массив представляет собой формальный параметр подпрограммы, описывающий базовый тип элементов массива, но не определяющий его размерности и границы
procedure MyProc( OpenArray : array of Integer);
Внутри такой параметр трактуется как одномерный массив с нулевой нижней границей. Верхняя граница открытого массива возвращается функцией High.Используя 0 как минимальный индекс, подпрограмма может обрабатывать одномерные массивы произвольной длины.
24. Имена процедур и функций как фактические параметры процедур( Процедурный тип).
Процедурные типы — это нововведение фирмы Borland (в стандартном Паскале таких типов нет). Основное назначение этих типов — дать программисту гибкие средства передачи функций и процедур в качестве фактических параметров обращения к другим процедурам и функциям.
Для объявления процедурного типа используется заголовок процедур, в котором опускается ее имя, например:
type
Proc = procedure (a, b, с : Real; Var d : Real);
Proc2 = procedure (var a, b);
РгосЗ = procedure;
Func1 = function : String;
Func2 = function ( var s : String) : Real;
В программе могут быть объявлены переменные процедурных типов, например,так:
var
р1 : Proc;
ар : array [1..N] of Proc1;
Переменным процедурных типов допускается присваивать в качестве значений имена соответствующих подпрограмм. После такого присваивания имя переменной становится синонимом имени подпрограмм.
В отличие от стандартного Паскаля, в Турбо Паскале разрешается использовать в передаваемой процедуре как параметры-значения, так и параметры-переменные
<ознакомиться с файлом ProcType на сайте Гречкиной>
25.Модули в Паскале : назначение, описание, использование. Обязательные и дополнительные разделы.
Модуль
– это автономно контролируемая программная единица, включающая в себя различные компоненты раздела описаний ( типы, константы, переменные, процедуры и функции) и, возможно, некоторые исполняемые операторы инициализирующей части.
Структура модуля :
unit ;
interface

implementation

begin

end.
Если в модуле используются другие модули, то нужно объявить их словом uses,оно можется следовать сразу за словом interface, либо сразу за словом implementation, либо и там и там.
unit – зарезервированное слово( единица); interface – зарезервированное слово (интерфейс), начинающее интерфейсную часть модуля; implementation – зарезервированное слово(выполнение), начинающее исполняемую часть модуля; begin – зарезервированное слово, начинающее инициализирующую часть модуля(эта конструкция begin необязательна); end – зарезервированное слово, являющееся признаком конца модуля.
В части interface содержатся объявления всех глобальных объектов модуля, которые должны стать доступными основной программе и(или) другим модулям.
В части implementation содержит описания подпрограмм, объявленных в интерфейсной части. В ней могут объявляться локальные для модуля объекты – вспомогательные типы, константы, переменные и блоки, а так же метки, если они используются в инициализирующей части.
В инициализирующей части (begin как это слово, так и вся эта часть может отсутствовать или быть пустой) размещаются исполняемые операторы, содержащие некоторый фрагмент программы. Эти операторы исполняются до передачи управления основной программе и обычно используются для подготовки ее к работе. Например, в них могут инициализироваться переменные, открываться нужные файлы и т.д.
Для использования в программе модуля или списка модулей необходимо в начале программы поместить оператор uses, после которого уже указывать модули :
program Lalala;
uses aUnit, bUnit, cUnit;
26.Составление функциональных и структурированных тестов.
Функциональные тесты проверяют правильность работы программы по принципу: «не знаю как сделано, но знаю, что должно быть в результате, и именно это и проверяю».
К функциональным тестам относятся:
· «тепличные», проверяющие программу при корректных, нормальных значениях исходных данных
· «экстремальные» («стресс–тесты»), находящиеся на границе области определения (например, наибольшая или наименьшая нагрузка системы по количеству или по времени), проверяющие поведение системы в экстремальных ситуациях, которые могут произойти и на которые программа должна корректно реагировать.
· «запредельные» («тесты обезьяны»), выходящие за границы области определения (а возможно, и здравого смысла), проверяющие ситуации, бессмысленные с точки зрения постановки задачи, но которые могут произойти из-за ошибок пользователя (корректная реакция системы на запрещенный или неподдерживаемый ввод и т.п., так называемая «защита от дурака»)
Структурные тесты контролируют (тестируют) работу всех структурных частей программы (функций, процедур, модулей, основной программы) по всем возможным маршрутам (ветвям программы).
При структурном тестировании необходимо осуществлять контроль:
· обращений к данным (т.е. проверять правильность инициализации переменных; а также размеры массивов и строк; отслеживать, не перепутаны ли строки со столбцами; соответствуют ли входных и выходных значений выбранным типам данных; проверять правильность обращения к файлам и т.п.);
· вычислений (порядок следования операторов и запись выражений; переполнение разрядной сетки или получение машинного нуля; соответствие результата заданной точности и т.п.);
· передачи управления (завершение циклов, функций, программы);
· межмодульных интерфейсов (списки формальных и фактических параметров; отсутствие побочных эффектов, когда подпрограмма изменяет аргументы, которые не должны меняться и т.п.).
Искусство тестирования сводится к разработке простого, полного и не избыточного набора тестов, а технология тестирования – к испытанию программы на всем наборе тестов, после внесения в нее каждого изменения.
20. Нисходящее и восходящее тестирование программ. Достоинства и недостатки. Использование заглушек и драйверов.
Восходящее тестирование.

При восходящем подходе программа собирается и тестируется снизу вверх. Только модули самого нижнего уровня (модули, не вызывающие других модулей) тестируются независимо, автономно. После того как тестирование этих модулей завершено, вызов их должен быть так же надежен, как вызов встроенной функции языка или оператор присваивания. Затем тестируются модули, непосредственно вызывающие уже проверенные. Эти модули более высокого уровня тестируются не автономно, а вместе с уже проверенными модулями более низкого уровня. Процесс повторяется до тех пор, пока не будет достигнута вершина. Здесь завершаются и тестирование модулей, и тестирование сопряжений программы. Для каждого модуля необходимо написать небольшую ведущую программу.

Типы данных в Delphi Обучающий материал

В delphi, при разработке приложений для их быстродействия и максимальной производительности в работе с оперативной памятью используются типы данных. Без указания типа невозможно себе представить, какое количество байт будет выделено для хранения значения переменной в оперативной памяти.

Только обязательное назначение типа переменной обеспечит эффективную работу приложения с минимальной нагрузкой на компьютерную систему.

Язык delphi оперирует достаточно большим набором типов данных: целочисленный тип, вещественный, символьный, строчный и логический тип. К тому же представленные, обобщенные типы в зависимости от объема выделенной памяти под хранение имеют конкретное разделение на типы.

Целочисленный тип данных в Delphi представлен:

  • Shortint — занимает в памяти 8 битов и имеет числовой диапазон от -127 до 128.
  • Smallint — числовой интервал находится в пределах -32 768 — 32 767 (16 битов).
  • Longint – диапазон чисел от -2 147 483 648 до 2 147 483 647 (32 бита).
  • Int64- наибольший интервал от – 263 до 263-1 (64 бита).
  • Byte- интервал значений от 0 до 255 (8 бит).
  • Word- числовой диапазон от 0 до 65535 (16 бит).
  • Longword –интервал составляет 0 — 4 294 967 295 (32 бита).

Следует заметить, что последние 3 типа называются беззнаковыми так, как имеют в своем числовом интервале только положительные числа( нет отрицательных значений). К тому же можно использовать и тип “Integer”, который соответствует “Longint”. К тому же следует знать, что значения в типах имеют строгий порядок. Такое положение позволяет использовать по отношению к значениям различные процедуры и функции. Не относится к вещественному типу данных в Delphi(не упорядочен).

Числа с плавающей точкой (дробные) представлены в delphi вещественным типом. Вещественный тип данных делится на 6 типов, которые отличаются числовым диапазоном, количеством значащих цифр и занимаемой памятью.

  • Single- число может находиться в интервале 1.5 x 1045-3.4х 1038.Объем занимаемой памяти 4 байта.
  • Real48 — числовой диапазон 2.9x-39-1.7×1038 (6 байт).
  • Double — интервал составляет 5.0×10-324 -1.7×10308 (8 байт).
  • Extended — 3.6×10-4951 -1.1 х104932 (10 байт).
  • Comp — диапазон чисел 263+1 – 263-1, занимаемая память 8 байт.
Илон Маск рекомендует:  Фиксированный макет с одной колонкой

Currency – этот вещественный тип данных называют еще денежным. С его помощью осуществляется реализация различных приложений финансовой тематики. Имеет 53 бита точности и поддержку 4 десятичных мест.

Текстовую информацию(переменные) представляют строковые типы данных в Delphi. Различают 3 типа:

  • Shortstring — длина строки может составлять максимально 255 символов и в памяти размещается статическим методом.
  • Longstring — такой тип данных ограничен лишь объемом динамической памяти.
  • WideString – аналогичен тип Longstring, но каждый символ представлен в Unicode.



В delphi строковые типы данных допускается обозначать типом string, который аналогичен shortstring.

Синтаксис указания типа переменной в delphi довольно просто. Ряд примеров подтверждает это утверждение:

Язык Delphi является производным от низкоуровневого языка Object Pascal, что позволяет разрабатывать с использованием совместимых компиляторов программы под Linux. Такое положение обеспечивает написание программ, разработку графических интерфейсов, приложений, способных облегчить администрирование linux, насытить систему новым и удобным функционалом.

Borland delphi 4 0 для начинающих типы данных строковые типы

Школа программирования Delphi

Портал DelphiSchool является бесплатным проектом, обеспечивающим пользователям быстрый и легкий доступ к урокам программирования на Delphi. Сайт позволяет научиться программировать на Делфи любому, кто хочеть писать свои программы, игры, Android приложения, программы для MAC OC или IOS. Кроме уроков Delphi и статей Delphi, на сайте доступны также и видеоуроки. Практически к каждому уроку, пользователю доступен исходник, изучив который, он сможет наглядно посмотреть как работает та или иная программа, написанная на Делфи. Кроме того мы постараемся прилагать к каждому материалу (статье, уроку, видеоуроку) файлы Delphi, которые будут помогать изучить предоставленный материал.

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

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

Все переменные должны относиться к какому-то типу. Поскольку переменная — это область памяти, где хранится определенная информация, то для того, чтобы знать, что хранится в этой памяти, мы должны указать компилятору, к какому типу относится переменная. Если переменная относится к типу целых чисел, то в памяти, отведенной под переменную, хранится целое число.

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

Существует несколько видов целых типов данных. В основном они отличаются только размером отводимой переменным памяти для хранения данных.

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

Таблица. Типы целочисленных переменных

Название

Размер памяти для хранения данных

Глава 3.Типы данных

Похожие главы из других книг

Типы данных

Глава 1 Типы данных, услоные операторы и массиы VBA

Глава 1 Типы данных, услоные операторы и массиы VBA

Типы данных

Типы данных Один из этапов проектирования базы данных заключается в объявлении типа каждого поля, что позволяет процессору базы данных эффективно сохранять и извлекать данные. В SQL Server предусмотрено использование 21 типа данных, которые перечислены в табл. 1.1.Таблица 1.1.

12.2. Типы баз данных

12.2. Типы баз данных Группу связанных между собой элементов данных называют обычно записью. Известны три основных типа организации данных и связей между ними: иерархический (в виде дерева), сетевой и реляционный.Иерархическая БДВ иерархической БД существует

Типы данных

Типы данных В JScript поддерживаются шесть типов данных, главными из которых являются числа, строки, объекты и логические данные. Оставшиеся два типа — это null (пустой тип) и undefined (неопределенный

Типы данных

Типы данных Приведенные в этой главе таблицы взяты непосредственно из оперативной справочной системы и представляют единую модель данных Windows (Windows Uniform Data Model). Определения типов можно найти в заголовочном файле BASETSD.H, входящем в состав интегрированной среды разработки

14.5.1 Типы данных

14.5.1 Типы данных Файл может содержать текст ASCII, EBCDIC или двоичный образ данных (существует еще тип, называемый локальным или логическим байтом и применяемый для компьютеров с размером байта в 11 бит). Текстовый файл может содержать обычный текст или текст, форматированный

20.10.3 Типы данных MIB

20.10.3 Типы данных MIB Причиной широкого распространения SNMP стало то, что проектировщики придерживались правила «Будь проще!»? Все данные MIB состоят из простых скалярных переменных, хотя отдельные части MIB могут быть логически организованы в таблицы.? Только небольшое число

Глава 3.Типы данных

Типы данных

Типы данных Многие языки программирования при объявлении переменной требуют указывать, какой тип данных будет ей присваиваться. Например, в языке Java кодint i = 15;объявит переменную целого типа int с именем i и присвоит ей значение 15. В этом случае тип данных ставится в

5.2.4. Типы данных

5.2.4. Типы данных Мы можем вводить в ячейки следующие данные: текст, числа, даты, также приложение Numbers предоставляет возможность добавлять флажки, ползунки и другие элементы управления. Аналогично MS Excel для выравнивания чисел, дат и текстовых данных в Numbers существуют

ГЛАВА 9. Числовые типы данных.

ГЛАВА 9. Числовые типы данных. Firebird поддерживает числовые типы данных с фиксированной точкой (точные числа) и с плавающей точкой (приблизительная точность). Десятичными типами с фиксированной точкой являются целые типы с нулевым масштабом SMALLINT, INTEGER и в диалекте 3 BIGINT, а

ГЛАВА 11. Символьные типы данных.

ГЛАВА 11. Символьные типы данных. Firebird поддерживает символьные (строковые) типы данных фиксированной и переменной длины. Они могут быть определены для локального использования в любом наборе символов, выбираемом из большого списка. Символьные типы фиксированной длины не

Типы данных

Типы данных Несмотря на то, что типы данных подробно описаны в документации (см. [1, гл. 4]), необходимо рассмотреть ряд понятий, которые будут часто использоваться в последующих главах книги. Помимо изложения сведений общего характера будут рассмотрены также примеры

Типы данных в языке Borland Pascal 7.0

Читайте также:

  1. CHAR и VARCHAR2 — символьные типы данных Огасlе
  2. CRM – технологии и интеллектуальный анализ данных в управлении маркетингом.
  3. FPU предоставляет восемь регистров для хранения данных и пять вспомогательных регистров.
  4. RI +/- коррекция данных финансовой отчетности
  5. X. Логические основы ЭВМ. Кодирование данных в ЭВМ
  6. А. Функции для оценки разброса данных.
  7. Абстрактные структуры данных.
  8. Аварии на взрывоопасных и пожароопасных объектах, очаги поражения при данных авариях
  9. Автоматизация учета данных путевых листов малого АТП
  10. Автоматизированные банки данных
  11. АВТОМАТИЗИРОВАННЫЕ ИНФОРМАЦИОННЫЕ СИСТЕМЫ ДЛЯ КАМЕРАЛЬНОЙ ОБРАБОТКИ ТОПОГРАФО-ГЕОДЕЗИЧЕСКИХ ДАННЫХ
  12. Администратор базы данных и его функции

Переменные языка Borland Pascal 7.0

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

Типы данных в Borland Pascal 7.0 можно разделить на скалярные и структурированные. Существует также возможность вводить собственные типы данных.

В скалярных типах данных можно выделить следующие группы.

Целочисленные типы данных занимают от 1 до 4 байт. Все они представлены в табл. 2.1.

Пример описания переменных целочисленных типов:

Таблица 2.1 Целочисленные типы данных

Тип Диапазон Размер в байтах
Byte 0. 255
Word 0…65535
Integer -32768. 32767
Shortint -128. 127
Longint -2147483648. 2147483647

Вещественные типы данных занимают от 4 до 10 байт. Вещественные данные могут быть как с плавающей, так и с фиксированной точкой.

Примеры вещественных чисел:

· с фиксированной точкой: ;

· с плавающей точкой: .

Все вещественные типы приведены в табл. 2.2.

Таблица 2.2. Вещественные типы данных

Тип Диапазон Мантисса Размер (в байтах)
Real 2.9E-39. 1.7E38 11-12
Single 1.5E-45. 3.4E38 7-8
Double 5.0E-324…1.7E308 15-16
Extended 3.4E-49321. 1E4932 19-20

Пример описания переменных вещественных типов:

Символьный тип данных представляет собой любой символ, который может быть отображен на экране дисплея. Он занимает 1 байт и может быть описан с помощью служебного слова char, например:

В тексте программы значения переменных и константы символьного типа должны быть заключены в апострофы: .

Логический (булевский) тип данных. Данные этого типа могут принимать два значения:

· true (истина);

· false (ложь);

Кроме стандартных скалярных типов в Borland Pascal 7.0 существует возможность вводить такие скалярные типы, как перечислимый и интервальный.

Перечислимый тип задается непосредственным перечислением значений, которые может принимать переменная данного типа, например:

Можно сначала ввести перечислимый тип данных, а затем описать переменные этого типа. Для создания нового типа используется служебное слово type:

Интервальный тип данных позволяет задавать две константы, которые определяют границы изменения переменных данного типа. Значение первой константы должно быть меньше значения второй. Сами же они являются целочисленными или символьными, например:

Как и в случае перечислимого типа, можно предварительно ввести тип данных с помощью служебного слова , а затем описывать переменные данного типа, например:

Каждая переменная интервального типа занимает 1 байт.

К структурированным типам данных относятся:

Массив – совокупность данных одного и того же типа.

Число элементов массива фиксируется при описании типа и в процессе выполнения программы не изменяется. Для доступа к элементу необходимо указать имя массива и его номер в квадратных скобках. Для описания массивов используется служебное слово array. Описание переменной данного типа имеет следующий вид:

где – границы первого индекса массива; границы второго индекса массива, например:

Можно сначала определить тип данных массива, а затем описывать переменные этого типа, как и в случае со скалярными типами.

Строки – последовательность символов. При использовании в выражениях строка заключается в апострофы. Ее длина ограничена 255 символами. Для описания переменных строкового типа используется служебное слово string, например:

где длина строковой переменной; если не указано, то длина строки равна 255 символам.

Записи и файлы будут рассмотрены далее.

Дата добавления: 2014-01-07 ; Просмотров: 426 ; Нарушение авторских прав? ;

Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет

Типы данных

Любые данные, т.е. константы, переменные, свойства, значения функции или выражения, в Object Pascal характеризуются своими типами.

Тип определяет мно­жество допустимых значений, которые может иметь тот или иной объект, а также множество допустимых операций, которые применимы к нему. Кроме того, тип определяет также и формат внутреннего представления данных в памяти ПК.

Возвращает абсолютное целое значение Х

Возвращает целую часть частного деления Х на Y

Возвращает остаток частного деления Х на Y

Возвращает булево True (истина), если Х — нечетное целое, и False (ложь) — в противном случае

Возвращает целый квадрат Х (т.е. Х*Х)

Согласно принятому в Delphi соглашению, имена типов должны начинаться с латинской буквы Т (от слова Туре-тип).

После объявления типа можно объявить переменную, относящуюся к этому типу в разделе Var.

Переменные любого перечисляемого типа можно объявлять и без предвари­тельного описания этого типа, например: Var TCol: (black, red, green);

Тип-диапазон (или интервальный тип). Это один из типов данных, определяе­мых программистом.

Операции над порядковыми типами

Функции действительных типов

Абсолютная величина х

Косинус х (х выражается в радианах, а не в градусах)

Экспоненциальная функция от х

Дробная часть х

Целая часть х. Несмотря на название, возвращает действительное значение (с плавающей запятой), т.е. просто устанавливает нуль в дробной части

Натуральный логарифм от х

Ближайшее к х целое значение. Возвращает значение целого типа. Условие «ближайшее к х» не работает, если верхнее и нижнее значения оказываются равноудаленными (например, если дробная часть точно равна 0,5). В этих случаях Delphi перекладывает решение на операционную систему. Обычно процессоры Intel решают эту задачу в соответствии с рекомендацией IEEE округлять в сторону ближайшего четного целого числа. Иногда такой подход называют «банкирским округлением»

Квадрат х, т.е. X*X

Квадратный корень от х

Целая часть х. В отличие от Int, возвращающей действительное значение, Trunc возвращает целое

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

Function Date: TdateTime;

Возвращает текущую дату

Преобразует дату в строку символов

Преобразует дату и время в строку символов

Function Time: TdateTime;

Возвращает текущее время

Преобразует время в строку

В тексте программы последовательность символов, являющаяся строкой, заклю­чается в ординарные кавычки.

Если длина сцепленной строки превысит максимально допустимую длину N, то «лишние » символы отбрасываются.

Встроенные строковые функ­ции и процедуры:

Function Concat(sl, s2, s3: String): String;

Возвращает последовательное соединение строк. Эквивалентна оператору si + s2 + s3

Function Copy(s: String, pos, len: Integer): String;

Возвращает подстроку длиной максимум len символов, начинающуюся в позиции pos строки s

Procedure Delete(s: String, pos, len: Integer);

Удаляет максимум len символов из строки s, начиная с позиции pos

Procedure Insert(sourse:String, target, pos: Integer);

Вставляет строку source в строковую переменную target, начиная с позиции pos

Function Length (s:String): Integer;

Возвращает динамическую длину строки

Function Pos(substring, s: String): Integer;

Возвращает место первого вхождения подстроки substring в строку s

Стандартные функции и процедуры преобразования строк в другие типы:

Functoin StrToDate(st: String): TdateTime;

Преобразует символы строки в дату

Functoin StrToDateTime (st: String): TdateTime;

Преобразует символы строки в дату и время

Functoin StrToFloat(st: Sting): Extended;

Преобразует символы строки в вещественное число

Functoin StrToInt(st: String): Integer;

Преобразует символы строки в в целое число

Functoin StrToInt(St: String; Default: Integer);

Преобразует символы строки St в целое число. Если строка не содержит правильного представления целого числа, возвращается значение Default

Functoin StrToTime (st: String): TdateTime;

Преобразует символы строки st во время. Строка должна содер­жать два-три числа, разделенных символом «:» (двоеточие)

Procedure Val(St: String; var x; Code: Integer;

Преобразует строку символов во внутреннее представление целой или вещественной переменной X, которое определяется типом этой переменной

Стандартные функции и процедуры обратного преобразования:

Function DateToStr(Value: TDateTime): String;

Преобразует дату из параметра Value в строку символов

Function DateTimeToStr (Value:TDateTime): String;

Преобразует дату и время из параметра Value в строку символов

Procedure DateTimeToString(var St: String; Format: String; Value: TDateTime);

Преобразует дату и время из параметра Value в строку St в соответствии со спецификаторами даты/времени параметра Format

Function FloatToStr(Value: Extended): String;

Преобразует вещественное значение Value в строку символов

Function lntToStr(Value: Integer): String;

Преобразует целое значение Value в строку символов

Function TimeToStr(Value: TDateTime):String;

Преобразует время из параметра Value в строку символов

Procedure Str(X[: Width[: Decimals]]; var St:String);

Преобразует число X любого вещественного или целого типа в строку символов St; параметры Width и Decimals, если они присутствуют, задают формат преобразования. (Width — ширина поля, Decimals — количество символов в дробной части)

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

Различают массивы статические и динамические. Статический массив представляет собой массив, границы индексов и, соответственно, размеры которого задаются при объявлении, т.е. они известны еще до компиляции программы. Формат описания типа статистического массива:

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL