Borland delphi 4 0 для начинающих типы данных указательные типы

Содержание

Простые типы данных

Введение

В предыдущих уроках мы между делом знакомились с типами данных. Всё это время речь шла о простых типах. Сегодня мы обобщим пройденное ранее, а также познакомимся с новым материалом, который необходимо знать в рамках темы «Простые типы данных». Осмысленно подходить к выбору типов данных для используемых в программах переменных необходимо по разным причинам. Во-первых, имея под рукой многообразие доступных типов и умело ими распоряжаясь, можно сократить объём памяти, требуемый программе для работы. Экономию в 1-2 байта никто не заметит, но если речь идёт о больших объёмах данных, эти байты могут вылиться во вполне реальные мегабайты. Во-вторых, разумный выбор типов данных позволяет избежать некоторых ошибок, причём как со стороны программиста (на этапе создания программы), так со стороны пользователя (во время использования программы).

Простые типы данных — общее представление

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

  • целочисленные;
  • вещественные;
  • логические;
  • строковые (символьные).

Следует отметить, что все эти типы за исключением вещественного, упорядочены. Что это значит? А это значит, что в рамках данного типа значения расположены не в произвольном порядке, а в порядке возрастания. Зная об этом, в некоторых случаях можно исключить в своей программе лишний код. Поясню на примере, как именно упорядочены значения в этих типах данных:

Целочисленный тип — содержит числовые значения, целые числа. Числа упорядочены по возрастанию: . -2, -1, 0, 1, 2, 3, .
Логический тип — содержит всего 2 значения — True, False, которые тоже упорядочены: False, True (следует из соответствия False — 0, True — 1).
Символьный тип — символы кодовой таблицы. Поскольку каждому символу соответствует свой код, то символы расположены в порядке увеличения кода. К примеру, буквы латинского алфавита A, B, C, D, . идут в кодовой таблице именно так, т.к. чем дальше от начала алфавита, тем больший код имеет буква. То же самое касается и арабских чисел в кодовой таблице — они идут по порядку: 0, 1, 2, . 8, 9. Это позволяет делать такие сравнения, как, например ‘A’ Pred() — функция возвращает предыдущее значение для выражения, указанного в качестве единственного аргумента.

Примеры: Pred(5) = 4, Pred(‘E’) = ‘D’, Pred(True) = False.

Succ() — функция, обратная для Pred() — возвращает следующее значение.

Примеры: Succ(5) = 6, Succ(‘E’) = ‘F’, Succ(False) = True.

Ord() — возвращает порядковый номер значения в списке значений типа данных. С этой функцией мы уже встречались при работе со строками — с её помощью мы узнавали код символа.

Примеры: Ord(‘A’) = 65, Ord(True) = 1.

Low() — возвращает минимальное значение указанного типа данных.

Примеры: Low(Byte) = 0, Low(Boolean) = False, Low(Char) = #0 (символ с кодом 0).

High() — возвращает максимальное значение указанного типа данных.

Примеры: High(Byte) = 255, High(Boolean) = True, High(Char) = #255 (в русской локали это символ «я»).

Ну и ещё две процедуры, с которыми мы уже знакомы:

Dec() — уменьшает значение на единицу.

Inc() — увеличивает значение на единицу.

Не забывайте о втором необязательном параметре этих процедур.

Пользовательские типы данных

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

Целочисленные типы

Как следует из названия, целочисленные типы позволяют хранить целые числа. Среди них есть типы, которые хранят числа со знаком (т.е. положительные или отрицательные), а есть и такие, которые хранят только положительные. Чем большее количество значений может содержать тип, тем больше памяти он занимает. Рассмотрим целочисленные типы данных.

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

Byte — значения 0..255 — занимает в памяти 1 байт.

Word — значения 0..655352 байта.

LongWord — значения 0..42949672954 байта.

Теперь типы со знаком (отрицательные числа записываются со знаком минус «-» впереди, неотрицательные могут записываться как со знаком «+», так и без него):

ShortInt — значения -128..1271 байт.

SmallInt — значения -32768..327672 байта.

LongInt — значения -2147483648..21474836474 байта.

Int64 — значения -2 ^53 ..2 ^53 -18 байт.

Существуют также 2 общих типа, которые находят своё отражение в вышеперечисленных. Рекомендуется использовать именно эти типы, т.к. компилятор «заточен» под них и создаёт более быстрый и эффективный код:

Integer — значения -2147483648..21474836474 байта.

Cardinal — значения 0..42949672954 байта.

Следует отметить, что целые числа могут быть представлены не только в десятичной, но и в шестнадцатеричной системе счисления, т.е. в виде $xxxxxxxx, где x — один из символов 0, 1, . 8, 9, A, B, . E, F. К примеру, все цвета (точнее, их коды) представляются именно в виде шестнадцатеричных чисел.

Логические типы

С логическими выражениями и с логическим типом данных мы уже знакомы — это тип Boolean , принимающий значения True и False. Помимо Boolean существуют следующие логические типы: ByteBool , WordBool и LongBool . Однако последние введены лишь для обспечения совместимости с другими языками и системами программирования. Использовать рекомендуется только тип Boolean. Логическое значение в памяти занимает 1 байт. На самом деле, конечно, достаточно и одного бита, но оперировать ячейками меньше байта, мы, к сожалению, не можем.

Символьные типы

Символьные типы обеспечивают хранение отдельных символов. Основной тип данных — Char , который содержит символы с кодами 0..255. Существуют ещё типы AnsiChar и WideChar . Тип AnsiChar эквивалентен типу Char, т.е. по сути это один и тот же тип. Занимает в памяти 1 байт. Для кодирования символов используется код ANSI (American National Standards Institute). Тип WideChar кодируется международным кодом Unicode и занимает в памяти 2 байта. Таблица Unicode включает символы практически всех языков мира.

Вещественные типы

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

Real (он же Double ) — значения от 5.0×10 ^-324 до 1.7×10 ^308 , точность — 15-16 цифр, занимает в памяти 8 байт.

Real48 — значения от 2.9×10 ^-39 до 1.7×10 ^38 , точность — 11-12 цифр, 6 байт памяти.

Single — значения от 1.7×10 ^-45 до 3.4×10 ^38 , точность — 7-8 цифр, 4 байта.

Extended — от 3.6×10 ^-4951 до 1.1×10 ^4932 , точность — 19-20 цифр, 10 байт памяти.

Comp — от -2×10 ^63 +1 до 2×10 ^63 -1, точность — 19-20 цифр, 8 байт.

Currency — от -922337203685477.5808 до 922337203685477.5807, точность — 19-20 цифр, в памяти занимает 8 байт.

Как и в случае с целыми числами, перед вещественными числами может стоять знак «+» или «-«.

Существует 2 формы записи вещественных чисел — с фиксированной точкой и с плавающей.

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

Запись с плавающей точкой подразумевает запись порядка числа, который отделяется от самого числа буквой «E» (запись «e» тоже допустима). Например, запись 1.5e2 означает число 1.5 с порядком +2, т.е. это 1.5×10 ^2 = 150.

Типы Comp и Currency были введены специально для произведения точных денежных расчётов. При этом, тип Comp, как видно из значений границ диапазона, хранит целые числа, поэтому при задании чисел с дробной частью они автоматически преобразуются в ближайшее целое число.

Перечислимые типы данных

От рассмотрения готовых типов данных перейдём к типам, которые могут быть созданы самим программистом. Один из вариантов, как было отмечено выше, — это перечислимый тип.

Смысл перечислимого типа в том, что мы явным образом указываем (перечисляем) все возможные значения. Преимущества в том, что кроме заданных значений переменные этого типа не смогут принимать больше никаких значений. Кроме того, значения можно задавать вполне осмысленные — например слова. Это упростит понимание кода и написание программы.

Значения типа данных перечисляются через запятую, а весь этот набор заключается в круглые скобки. Описание типа должно производиться в специальном разделе раздела описаний — разделе описания типов. Этот раздел предваряется ключевым словом type . Т.е. запись идёт приблизительно так же, как и описание переменных или констант, только вместо var и const пишется type. Сам тип описывается следующим образом: название типа, далее знак равенства и далее само значение. В случае с перечислимым типом это будет набор возможных значений.

Примечание: практически все типы данных в Object Pascal принято называть с буквы «T» (сокращённо от «Type»). Это не закон языка — просто одно из правил хорошего тона. Зная, что «T***» — это тип, вы никогда не ошибётесь, в противном же случае название можно спутать, например, с названием переменной.

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

Обратите внимание, что после описания перечислимого типа в программе не может быть переменных, название которых совпадает с названием значений объявленного типа. В нашем примере не может быть переменных «Jan», «Feb» и т.д. При попытке присвоения переменной перечислимого типа значение, не указанное в списке, компилятор выдаст ошибку, поэтому ошибиться не представляется возможным.

Раздел type существует как в модуле всей формы (в этом разделе изначально описана сама форма: TForm1 = class(TForm) . ), так и в любой подпрограмме. Область действия типа, соответственно, определяется местом в программе, в котором он описан.

Интервальные типы данных

Интервальные типы данных (также их называют ограниченными) получаются из имеющихся типов путём ограничения диапазона значений. Интервал задаётся двумя константами — начальной и конечной границей. При каждом присвоении значения переменной выполняется проверка соответствия нового значения указанному диапазону. Если значение не попадает в диапазон, выдаётся сообщение об ошибке. Во время выполнения программы задание недопустимого значения к ошибке не приводит, зато значение переменной может стать неверным.
Ограниченный тип данных можно создать только на основе простого упорядоченного типа. Значение второй константы (т.е. правой границы) должно быть больше значения первой (левой границы).
Ограниченные типы данных также описывают в разделе type. Формат записи похожий, только между константами-границами ставятся две точки.

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

Помните, что использование ограниченного типа данных не уменьшит объём занимаемой памяти. Это следует из того, что задание интервала — это всего лишь условное задание возможных значений из общего набора значений данного типа.

Заключение

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

Автор: Ерёмин А.А.

Статья добавлена: 12 июня 2008

Зарегистрируйтесь/авторизируйтесь,
чтобы оценивать статьи.

Статьи, похожие по тематике

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

Ссылка для форумов (BBCode):

Быстрая вставка ссылки на статью в сообщениях на сайте:
<> (буква a — латинская) — только адрес статьи (URL);
<<статья:122>> — полноценная HTML-ссылка на статью (текст ссылки — название статьи).

Поделитесь ссылкой в социальных сетях:

Комментарии читателей к данной статье

Цитата (Белеков Б. Д):

Репутация: +40
Репутация: нет
Репутация: +1

Было было. где-то в первых ‘уроках’.

Кстати чё-то в паскале не помню инта64, как впрочем и реала48.

Репутация: +40

При использовании Delphi 2009 — да, там есть поддержка Юникода. А вам нужны греческие и японские? И они на клавиатуре у вас есть?

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

Репутация: -1

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

в одном из предыдущих уроков Вы говорили, что рассскажете про этот момент, отсюда собственно и возник вопрос.
Извините если побеспокоил напрасно.

Репутация: +40

Кажется, вопрос не по теме урока.

А как сделать — обработать событие OnKeyDown или OnKeyPress. У второго в качестве параметра введённый символ.

Репутация: -1

Оставлять комментарии к статьям могут только зарегистрированные пользователи.

Типы данных в 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, насытить систему новым и удобным функционалом.

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

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

Как следует понимать в этом предложении слово «множественность»?

Слово packed перед описанием компилятора предписывает компилятору по возможности экономить память, отводимую под объекты структурированного типа.

Как понимать эту фразу? Компилятор же не обладает интеллектом, как он может «экономить»??

Как понимать описание:

Как понимать такое описание:

В чём смысл фразы:

В памяти ПК элементы массива следуют друг за другом так, что при переходе от младших индексов к старшим наиболее быстро меняется самый правый индекс массива. ?

Как распределяется память в динамическом массиве? Что такое вообще память? Что значит инициализи ровать массив? Зачем использовать функцию Finalize? Чем принципиально отличается динамический массив от статического? Только тем, что статический формируется на стадии компиляции, а динамический в процессе работы программы? Что от этого меняется??

07.06.2012, 09:08

Структурированные типы данных
Ребят, я в делфи не разбираюсь, но мне нужна ваша помощь как сделать эту программу? Вот задание .

Структурированные типы данных
Доброго дня всем! Ребята, есть просьба, помогите мне пожалуйста. Очень вас прошу, кто может. Я буду.

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

Структурированные типы данных. Одномерные и двумерные массивы
Дан двумерный массив целых чисел. Определить есть ли в нем столбец, состоящий только из элементов.

Структурированные типы данных. файлы. работа с текстовыми файлами.
Дан текстовый файл f. Переписать в файл g все его строки, содержащие более 60 символов в обратном.

07.06.2012, 14:35 2
21.06.2012, 01:07 [ТС] 3

Большое спасибо, я понял, что означает слов packed.

Хотелось бы теперь понять назначение динамической памяти.

Также с тех пор накопилось очень много вопросов:
для чего применять логические операции к операндам целого типа? Зачем нужны логические операции «левый сдвиг» и «правый сдвиг»? Для динамических алгоритмов? Мощность типа — это суммарная длина этого типа во внутреннем представлении, не может превышать 2 ГБ. Это так? Плохо понимаю определение записи. Запись — это упорядоченный набор полей. Так? Плохо понимаю отличие множественного типа от динамического массива. Для чего вообще нужен множественный тип, если есть перечисленный? Плохо понимаю отличия динамических массивов от статических: динамический создаётся в процессе выполнения программы, а статический на стадии компиляции. Ну и что? Какая польза от этого, как это позволяет экономить память? Где хранится динамический массив? В динамической памяти? Что такое динамическая память? Особая область памяти, отвечающая за взаимодействие с ядром ОС? А статический где размещается? Чем отличается оперативная память от динамической?

21.06.2012, 01:07

Типы данных
Почему в одном случае нормально, в другом ошибка, число одинаковое procedure.

Типы данных
Здрасте! Создал вот такое из ТурбоПаскаль на Delphi и начались проблемы с типами (там где знаки.

Числовые типы данных
Ребят, помогите решить задачку одну из двух, любую! 1)Определить, равна ли сумма значений первых.

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-х байтовыми значениями
Если установлено состояние <$т->, то результатом операции с оператором «@» бу-
дет нетипизированный указатель, который может использоваться со всеми другими
типами указателей. Если установлено состояние <$т+>, тип результата будет иметь
значение Лт, где т совместимо только с типом переменной.

Классификация типов данных в 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;

Ввод и вывод : 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. Нисходящее и восходящее тестирование программ. Достоинства и недостатки. Использование заглушек и драйверов.
Восходящее тестирование.

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

Встроенные типы данных

Встроенные типы данных

К числовым типам языка Object Pascal относятся целочисленные и типы чисел с плавающей запятой (табл. Д.1).

Таблица Д.1. Числовые типы данных языка Object Pascal

Целочисленные типы Диапазон значений Типы чисел с плавающей запятой Диапазон значений
Byte 0..255 Real 5.0·10 -324 ..1.7·10 308
ShortInt -128..127 Real48 2.9·10 -39 ..1.7·10 38
SmallInt -32768..32767 Single 1.5·10 -45 ..3.4·10 38
Word 0..65535 Double 5.0·10 -324 ..1.7·10 308
Integer, LongInt -2147483648..21474883647 Extended 3.6·10 -4951 ..1.1·10 4932
Cardinal, LongWord 0..4294967295 Comp -2 63 +1..2 63 –1
Int64 -2 63 ..2 63 –1 Currency -922337203685477.5808..922337203685477.5807

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

Типы данных

Встроенные типы данных CTS

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

Глава 2 Ввод данных. Типы, или форматы, данных

Глава 2 Ввод данных. Типы, или форматы, данных Работа с документами Excel сопряжена с вводом и обработкой различных данных, то есть ин формации, которая может быть текстовой, числовой, финансовой, статистической и т. д. МУЛЬТИМЕДИЙНЫЙ КУРС Методы ввода и обработки данных

Типы данных

Типы данных Один из этапов проектирования базы данных заключается в объявлении типа каждого поля, что позволяет процессору базы данных эффективно сохранять и извлекать данные. В 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 могут быть логически организованы в таблицы.? Только небольшое число

Типы данных

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

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

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

ТИПЫ ДАННЫХ В ЯЗЫКЕ СИ

ТИПЫ ДАННЫХ В ЯЗЫКЕ СИ Давайте теперь рассмотрим некоторые специфические особенности основных типов данных, используемых в языке Си. Для каждого типа мы покажем, как описать переменную, как представить константу и как лучше всего использовать данные этого типа. В

Типы данных

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

Borland delphi 4 0 для начинающих типы данных указательные типы

От Delphi 4 к Delphi 5

Во многих задачах используются переменные, которые создаются и уничтожаются во время выполнения программы. С этой целью в Object Pascal организована поддержка указателей, для которых введен специальный тип Pointer.

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

Указатели объявляются точно так же, как обычные переменные:

P: Pointer; <объявление переменной указателя >

K: Integer; <объявление переменной целого типа >

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

P := Addr(К); <инициализация переменной с помощью функции Addr>

Инициализацию можно провести вторым способом:

P^ :=@K; <инициализация с помощью оператора @>

Обычно используется более краткий и удобный второй способ. Таким образом, если некоторая переменная Р содержит адрес другой переменной К, то говорят, что Р указывает на К (рисунок 1) . Вы можете изменить значение переменной К, не прибегая к идентификатору K.

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

Если вы запишете:

то это будет ошибкой.

Из-за сильной типизации языка Object Pascal перед присваиванием, необходимо преобразовать выражение P^ к целому типу Integer. Объявим указатель P следующим образом:

Такая запись говорит о том, что переменная P по-прежнему является указателем, но теперь ей можно присваивать адреса только целых переменных.

В данном случае указатель P называют типизированным , в отличие от переменных типа Pointer, которые называют не типизированными указателями.

При использовании типизированных указателей лучше предварительно вводить соответствующий указательный тип, а переменные указатели просто объявлять с этим типом.

Модифицируем предыдущий пример (рисунок 2):

Значение PInteger — указательный тип данных. Чтобы отличить указательные типы от других, лучше назначать им идентификаторы, начинающиеся с буквы P.

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

Рассмотрим объявление типа для указателя на некоторую запись:

Переменная Р типа PScreen является указателем и может содержать адрес любой переменной типа TScreen.

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

После объявления в секции var указатель содержит неопределенное значение. Переменные-указатели, как и обычные переменные, перед использованием нужно инициализировать. Использование неинициализированных переменных приводит к неправильным результатам, а использование неинициализированных указателей приводит к ошибке Acces violation (доступ к неверному адресу памяти) и принудительному завершению приложения.

Один из способов инициализации указателя состоит в присваивании ему адреса некоторой переменной соответствующего типа, этот способ рассмотрен выше.

Второй способ состоит в динамическом выделении участка памяти под переменную соответствующего типа и присваивании указателю его адреса. Основное назначение указателей — работа с динамическими переменными.

Размещение динамических переменных производится в специальной области памяти, которая называется Heap (куча). Размер кучи равен размеру свободной памяти компьютера (рис 2.)

Для размещения динамической переменной (рисунок 3) вызывается стандартная процедура:

New(var P: Pointer);

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

List, P: PListEntry;

P^.Text := ‘Hello world’;

Новая процедура создает новую динамическую переменную и устанавливает переменную указателя, чтобы указать на это. P является переменной любого типа указателя. Размер размещенного блока памяти соответствует размеру типа, на который P указывает. Вновь созданная переменная может ссылаться на P^. Если там недостаточно памяти пригодной для размещения динамической переменной, то генерируется исключение EOutOfMemory .

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

P^ := ‘Мой любимый язык Delphi. ‘;

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

создание динамической переменной;

выполнение с переменной необходимых действий;

разрушение динамической переменной.

Рассмотрим пример, показывающий работу указателей .

2 X, Y: Integer; // X и Y переменные целого типа

3 P: ^Integer; // P указатель на данные целого типа

5 X := 17; // присвоение значения 17 для X

6 P := @X; // определение адреса X в P

7 Y := P^; /разыменование Р; помещение результата в Y

Строка 2 объявляет X и Y как переменные целого типа. Строка 3 объявляет P как указатель данных целого типа; это означает, что P может указать на позицию X или Y. Строка 5 определяет величину X, и строка 6 назначает адрес X (обозначается @X) в P. Наконец, строка 7 извлекает величину в позиции, указанной на P (обозначается ^P), и присваивает это значение Y. После того, как выполнится программный код, X и Y будут иметь одну и ту же величину 17.

Если вы добавите на форму два компонента Edit1, Edit2 и напишете следующий код

то вы можете убедиться, что значения X и Y одинаковы и равны 17.

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

Символ ^ имеет две цели, которые иллюстрируются в рассмотренном примере. Когда символ устанавливается перед типом ^typeName, он обозначает тип, который представляет указатели в переменных типа typeName . Когда символ устанавливается после указателя pointer^, он разыменовывает этот указатель и возвращает величину, сохраненную по адресу памяти, содержащемуся в указателе.

Наш пример может показаться подобным тому, что мы окольным путем копировали целую величину одной переменной, присвоили это значение другой величине, в то время когда это можно произвести обычным оператором присваивания. Но указатели полезны по различным причинам. Вначале, поняв назначение указателя, вы можете лучше понимать язык программирования Object Pascal . Любой тип данных, который требует большие объемы, динамически распределяемой памяти, использует указатели. Кроме того, некоторые программы требуют обязательного использования указателей.

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

Конечно, реальные и целые загружаются в другие форматы. Этот пример просто копирует сырые двоичные данные из R на I, не преобразовывая их.

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

В Object Pascal имеется ряд предопределенных типов указателей. Это, прежде всего, типы указателей на строки: PAnsiChar и PWideChar , представляющие собой соответственно указатели на значения AnsiChar и WideCha r. Имеется также родовой тип PChar , определяющий указатель на Char (т.е. пока указывающий на AnsiChar ). Эти указатели используются при работе со строками с нулевым символом в конце.

PAnsiString, Pstring — типы переменной, на которую указывает указатель AnsiString.

PByteArray тип переменной, на которую указывает указатель ByteArray (объявлен в модуле SysUtils ). Используется для доступа к динамически размещаемым массивам.

PCurrency тип переменной, на которую указывает указатель Currency.

PExtended тип переменной, на которую указывает указатель Extended.

POleVariant тип переменной, на которую указывает указатель OleVariant.

PShortString тип переменной, на которую указывает указатель ShortString.

PTextBuf тип переменной, на которую указывает указатель TextBuf (объявлен в модуле SysUtils ). Внутренний тип буфера в записи файлов TTextRec .

PVarRec тип переменной, на которую указывает указатель TVarRec (объявлен в модуле System).

PVariant тип переменной, на которую указывает указатель Variant.

PWideString тип переменной, на которую указывает указатель WideString.

PWordArray т ип переменной, на которую указывает указатель TWordArray (объявлен в модуле SysUtils ). Используется для доступа к динамически размещаемым массивам 2-байтных величин.

Объявление своего типизированного указателя на любой тип имеет вид:

Имеется предопределенная константа nil , которая обычно присваивается указателям, в данный момент ни на что не указывающим.

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

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

Указатели PChar и PWideChar.

При работе со строками с нулевым символом в конце часто используют специальные типы указателей: PChar и PWideChar, которые являются указателями соответственно на массивы с элементами типов Char и WideChar с нулевым символом в конце.

Переменные этих типов часто требуется передавать в различные функции и процедуры в качестве параметров. К тому же, типы Char и WideChar существенно упрощают коды. Дело в том, что эти типы совместимы со строковыми константами. Например, объявление и использование переменной типа PChar может иметь вид

Это эквивалентно операторам

const SHello: array[0…7] of Char = ‘Привет!’#0;

согласитесь, первая запись гораздо короче.

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

Например, если некоторая процедура F требует параметр типа PChar, то обратиться к ней можно так:

Указатели типов PChar и PWideChar могут индексироваться точно так же, как строки и массивы символов. Например, P[0] — это первый символ строки, на которую указывает P.

В выражениях, операторах присваивания и при передаче параметров в функции и процедуры можно смешивать длинные строки (AnsiString) и строки с нулевым символом в конце типа PChar. Но иногда требуется явное приведение типа PChar к типу длинной строки. Например, операция склеивания (конкатенации) строк требует, чтобы хотя бы один ее операнд был типа строки.

Если же требуется склеить два объекта типа PChar, то это надо сделать с помощью приведения типа:

S := string(P1) + string(P2);

Когда вы объявляете константу указатель, вы должны проинициализировать эту величину. Есть три пути, чтобы сделать это: с @ оператором, с нулем и (если константа будет типом PChar) с литералом строки. Например, имеется глобальная переменная целого типа, вы можете объявить константу следующим образом:

const PI: ^Integer = @I;

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

const PF: Pointer = @MyFunction;

Поскольку литералы строки определены как глобальные константы, вы можете проинициализировать PChar константу с литералом строки:

const WarningStr: PChar = ‘Warning!’;

Процедуры GetMem и FreeMem.

GetMem(var P: Pointer [;Size: Integer]) — создает в динамической памяти новую динамическую переменную с заданным размером Size и присваивает ее адрес указателю P.

Переменная указателя P может указывать на данные любого типа.

FreeMem(var P: Pointer [; Size: Integer]) — освобождает динамическую переменную.

Если в программе используется этот способ распределения памяти, то вызовы GetMem и FreeMem должны соответствовать друг другу.

GetMem(P4, SizeOf(ShortString)); <выделить блок памяти для P4>

FreeMem(P4); <освободить блок памяти >

С помощью процедуры GetMem одной переменной-указателю можно выделить разное количество памяти в зависимости от потребностей, в этом состоит ее основное отличие от процедуры New.

В данном случае для указателя P4 выделяется меньше памяти, чем может уместиться в переменной типа ShortString, и программист сам должен предотвратить выход строки за пределы выделенного участка.

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

Для этого предназначена следующая процедура:

ReallocMem(var P: Pointer; Size: Integer) — освобождает блок памяти по значению указателя Р и выделяет для указателя новый блок памяти заданного размера Size.

Указатель P может иметь значение nil, а параметр Size — значение 0, что влияет на работу процедуры:

если P = nil и Size = 0, процедура ничего не делает;

если P = nil и Size <> 0, процедура выделяет новый блок памяти заданного размера, что соответствует вызову процедуры GetMem;

если P <> nil и Size = 0, процедура освобождает блок памяти, адресуемый указателем P, и устанавливает указатель в значение nil; это соответствует вызову процедуры FreeMem, с той лишь разницей, что FreeMem не очищает указатель;

если P <> nil и Size <> 0, процедура переопределяет память для указателя P; размер нового блока определяется значением Size. Данные из прежнего блока копируются в новый блок; если новый блок больше прежнего, то приращенный участок остается неинициализированным и содержит случайные данные.

Создадим приложение, в котором можно осуществлять поиск изображений и просматривать их. Для Delphi 4 необходимо проделать следующие действия.

    1. Запустите Delphi.
    2. Сохраните файл модуля под именем ImageView_pas, а файл проекта под именем ImageView. dpr.
    3. Поместите на форму компонент Image со страницы Additional палитры компонентов.
    4. Поместите на форму компонент OpenDialog со страницы Dialogs палитры компонентов.
    5. Поместите на форму компонент BitButton со страницы Additional палитры компонентов. Вы уже знаете, как придать данной кнопке более красивый вид, можете проделать это. Для обработчика события щелчка по кнопке OnClick напишите следующий программный код:

    procedure TForm1.BitBtn1Click(Sender: TObject);

    if OpenDialog1.Execute then

    Image1.Top:= Form1.ClientRect.Top + (Form1.ClientHeight — Image1.Height)

    Image1.Left:= Form1.ClientRect.Left + (Form1.ClientWidth — Image1.Width)

  1. Для того чтобы изображения разных размеров были в окне полностью видимы, необходимо установить для компонента Image1 свойство AutoSize в True. А приведенные выше операторы позволят размещать изображение по центру формы. В этом программном коде размеры клиентской области устанавливаются несколько больше размеров компонента Image1, которые в свою очередь адаптируются к размеру изображения благодаря свойству AutoSize.
  2. Для того чтобы просматривать только необходимые вам изображения, используя свойство Filter компонента OpenDialog, определите следующие значения. Например, запишите в разделе Filter Mame *.bmp;*.ico;*.wmf, в разделе Filter запишите *.bmp;*.ico;*.wmf (рисунок 4). На рисунке 5 показана процедура поиска необходимого изображения. На рисунке 6 показан результат работы программы ImageView.

Если у вас установлена версия Delphi 5, то на странице палитры компонентов Dialogs имеется компонент OpenPictureDialog, который вызывает окно открытия и предварительного просмотра изображений. Если вы посмотрите свойство Filter этого компонента (рисунок 7), то вы увидите, что за вас поработали и определили, какие файлы вы можете просматривать. Добавьте на форму компонент Image и Button и напишите следующий программный код:

procedure TForm1.Button1Click(Sender: TObject);

if OpenPictureDialog1.Execute then

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

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

procedure TForm1.Image1Progress(Sender: TObject; Stage: TProgressStage;

PercentDone: Byte; RedrawNow: Boolean; const R: TRect;

const Msg: String);

Параметр Stage содержит состояние процесса загрузки (psStarting — начало, psRunning — идет загрузка, psEnding — процесс завершен ). Параметр PercentDone приблизительно указывает процент выполненной работы.

С помощью параметра RedrawNow Windows сообщает, нужно ли сейчас выполнить прорисовку части изображения. Этот параметр имеет смысл, только если свойство IncrementalDisplay компонента содержит True. Параметр R – прямоугольник, нуждающийся в прорисовке. Параметр Msg содержит одно или более слов, уточняющих состояние процесса.

Обычно в обработчике события по сигналу psStarting создается индикатор процесса типа TProgressBar, по сигналам psRunning изменяется позиция индикатора, а в момент psEnding индикатор уничтожается.

Событие OnProgress создается только при загрузке некоторых типов изображений, например, подготовленных в формате JPEG (Joint Photographic Except Group — объединенная группа фотографических экспертов). Пример использования события OnProgress вы можете найти в папке Borland \ Delphi \ Help \ Examples \ JEPG. На рисунке 8 представлен результат демонстрационной работы программы Ipegproi.

  1. Марко Канту. Delphi 2 для Windows 95/NT. Москва. ООО «Малип». 1997г.
  2. Джон Матчо. Дэвид Р. Фолкнер. Delphi. Москва. БИНОМ. 1995г.
  3. Эндрю Возневич. Delphi. Освой самостоятельно. Москва. Восточная книжная компания. 1996г.
  4. К. Сурков, Д. Сурков, А. Вальвачев. Программирование в среде Delphi 2.0.

ООО «Попурри» 1997 г.

  • В.В.Фаронов. Delphi 5. Учебный курс. Москва. Издательство Нолидж. 2000г.
  • А. Я. Архангельский. Программирование в Delphi 5. Москва. ЗАО «Издательство Бином». 2000г.
  • Иллюстрированный самоучитель по Delphi 7 для начинающих

    Язык программирования Delphi. Типы данных.

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

    Каждая инструкция состоит из идентификаторов. Идентификатор может обозначать:

    • Инструкцию языка (:=, if, while, for);
    • переменную;
    • константу (целое или дробное число);
    • арифметическую (+, , *, /) или логическую (and, or, not) операцию;
    • подпрограмму (процедуру или функцию);
    • отмечать начало (procedure, function) или конец (end) подпрограммы или блока (begin, end).

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

    Целый тип

    Язык Delphi поддерживает семь целых типов данных: shortint, smailint, Longint, Int64, Byte, word и Longword, описание которых приведено в табл. 1.1.

    Таблица 1.1. Целые типы.

    Тип Диапазон Формат
    Shortint -128-127 8 битов
    Smallint -32 768-32 767 16 битов
    Longint -2 147 483 648-2 147 483 647 32 бита
    Int64 -2 63 -2 63 -1 64 бита
    Byte 0-255 8 битов, беззнаковый
    Word 0-65 535 16 битов, беззнаковый
    Longword 0-4 294 967 295 32 бита, беззнаковый

    Object Pascal поддерживает и наиболее универсальный целый тип – Integer, который Эквивалентен Longint.

    Типы данных Delphi и работа с ними

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

    Порядковые типы. Порядковыми (ordinal) типами называются те, в которых значения упорядочены, и для каждого из них можно указать предшествующее и последующее значения.

    Структурные типы. К структурным типам относятся множества, массивы, записи, файлы, классы, интерфейсы.

    Целые типы данных. В переменных целых типов информация представляется в виде целых чисел, т.е. чисел не имеющих дробной части.

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

    Минимальное значение порядкового типа Т

    Максимальное значение порядкового типа Т

    Порядковый номер значения выражения порядкового типа. Для целого выражения — просто его значение. Для остальных порядковых типов Ord возвращает физическое представление результата выражения, трактуемое как целое число. Возвращаемое значение всегда принадлежит одному из целых типов

    Предыдущее по порядку значение. Для целых выражений эквивалентно Х-1

    Следующее по порядку значение. Для целых выражений эквивалентно Х+1

    Уменьшает значение переменной на 1. Эквивалентно V := Pred(V)

    Увеличивает значение переменной на 1. Эквивалентно V := Succ(V)

    8 битов, беззнаковый

    16 битов, беззнаковый

    32 бита, беззнаковый

    Также существует такой тип, как Integer, который эквивалентен типу LongInt. Его диапазон от -2147483648 до 21474836478. Занимает 4 байта в пямяти. Основными являются Integer и Cardinal, так что в большинстве случаев желательно использовать эти типы.

    Над целыми данными выполняются все операции, определенные для порядковых типов. Операции над целыми типами:

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

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

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

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

    Действительные типы данных. В переменных действительных типов содержатся числа, состоящие из целой и дробной частей.

    Количество значащих цифр

    Основным, обеспечивающим максимальную производительность, является тип Real, который в настоящий момент эквивалентен типу Double.

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

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

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

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

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

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

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

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

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

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

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

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

    Однобайтовые символы, упорядоченные в соответствии с расширенным набором символов ANSI

    Символы объемом в слово, упорядоченные в соответствии с международным набором символов UNICODE. Первые 256 символов совпадают с символами ANSI

    Булевы типы данных. Переменные булевых типов данных представляют логические значения, например, true (истина) и false (ложь).

    Таблица 7 Размеры переменных булевых типов

    2 байт (объем Word)

    4 байт (объем Longint)

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

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

    Имя: [нижний_индекс..верхний_индекс] of тип

    где: имя — имя массива;

    array — зарезервированное слово языка Delphi, обозначающее, что объявляемое имя является именем массива;

    нижний_индекс и верхний_индекс — целые константы, определяющие диапазон изменения индекса элементов массива и, неявно, количество элементов (размер) массива;

    Введение. Назначение Delphi и его особенности

    СБОРНИК МетодическиХ указаниЙ

    ПО выполнению лабораторных работ

    ИНФОРМАТИКА

    Уровень профессионального образования: высшее образование – бакалавриат

    Направление подготовки:15.03.01 «Машиностроение»

    Профиль подготовки: «Оборудование и технология сварочного производства»

    Квалификация выпускника: Академический бакалавр

    Методические указания по выполнению лабораторных работ составлены доцентом А. В. Масленниковым и обсуждены на заседании кафедры СЛиТКМПолитехнического института

    Протокол № 1 от « 29 » августа 2014 г.

    Зав. кафедрой ______________________А.А. Протопопов

    Методические указания по выполнению лабораторных работ пересмотрены и утверждены на заседании кафедры СЛиТКМ Политехнического института

    протокол №___ от « » августа 20____ г.

    Зав. кафедрой ______________________А.А. Протопопов

    Министерство образования и науки Российской Федерации

    Федеральное государственное бюджетное образовательное учреждение

    высшего профессионального образования

    «Тульский государственный университет»

    Кафедра «Сварка, литье и технология конструкционных материалов»

    МетодическиЕ указаниЯ

    ПО выполнению лабораторнОЙ работЫ №1

    ИНФОРМАТИКА

    Основы работы в среде Borland Delphi

    Уровень профессионального образования: высшее образование – бакалавриат

    Направление подготовки:150700 «Машиностроение»

    Профиль подготовки: «Машины и технология литейного производства»

    Квалификация выпускника: 62, бакалавр

    1. ЦЕЛЬ И ЗАДАЧИ РАБОТЫ

    Изучить назначение и базовые возможности приложения Borland Delphi.

    2. ТЕОРЕТИЧЕСКИЕ ПОЛОЖЕНИЯ

    Введение. Назначение Delphi и его особенности

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

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

    Несколько лет назад рядовому программисту оставалось только мечтать о создании собственных программ, работающих в среде Windows, т. к. единственным средством разработки был Borland C++ for Windows, явно ориентированный на профессионалов, обладающих серьезными знаниями и опытом.

    Бурное развитие вычислительной техники, потребность в эффективных средствах разработки программного обеспечения привели к появлению систем программирования, ориентированных на так называемую «быструю разработку», среди которых можно выделить Borland Delphi и Microsoft Visual Basic. В основе систем быстрой разработки (RAD-систем, Rapid Application Development — среда быстрой разработки приложений) лежит технология визуального проектирования и событийного программирования, суть которой заключается в том, что среда разработки берет на себя большую часть рутинной работы, оставляя программисту работу по конструированию диалоговых окон и функций обработки событий. Производительность программиста при использовании RAD-систем -фантастическая!

    Delphi (произносится «Делфàй») – среда программирования для Windows, разработанная компанией Borland International. Название происходит от древнегреческого города Дельфы – того самого, где жил дельфийский оракул. Поэтому на значке системы Delphi изображена греческая колонна. Delphi соединяет в себе компилятор языка программирования Object Pascal, интегрированную среду разработки (IDE), библиотеку визуальных компонентов VCL, средства для работы с базами данных (BDE) и многое другое. При помощи Delphi можно решить практически любую программистскую задачу, включая работу с базами данных, написание приложений для Интернета, экранных заставок, системных утилит и пр.

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

    Язык Delphi — строго типизированный объектно-ориентированный язык, в основе которого лежит хорошо знакомый программистам Object Pascal. Delphi – близкий родственник обычного языка Pascal, что обеспечило ему широкую популярность. В настоящее время Delphi стал основным инструментом разработки программного обеспечения во всем мире. Существует и версия Builder, в которой можно совместно использовать процедуры, написанные на языках C и Pascal.

    Система Delphi постоянно развивается. По состоянию на 2003 г. наиболее стабильной и отработанной являлась версия 6.0. Версия 7.0 заявлена разработчиком как переходная к 8.0 и не рекомендуется для широкого использования. В то же время почти все рассматриваемые далее примеры будут работать практически в любой версии Delphi, начиная с 3.0. Содержательные различия между версиями 3.0 … 7.0 незначительны, и для самостоятельной работы можно использовать литературу, описывающую любую из этих версий.

    Borland Delphi 7 Studio позволяет создавать самые различные программы: от простейших однооконных приложений до программ управления распределенными базами. В состав пакета включены разнообразные утилиты, обеспечивающие работу с базами данных, XML-документами, создание справочной системы, решение других задач. Отличительной особенностью седьмой версии является поддержка технологии .NET.

    Borland Delphi 7 Studio может работать в среде операционных систем от Windows 98 до Windows XP и выше. Особых требований, по современным меркам, к ресурсам компьютера пакет не предъявляет: процессор должен быть типа Pentium или Celeron с тактовой частотой не ниже 166 МГц (рекомендуется Pentium II 400 МГц), оперативной памяти — 128 Мбайт (рекомендуется 256 Мбайт), достаточное количество свободного дискового пространства (для полной установки версии Enterprise необходимо приблизительно 475 Мбайт).

    Официально бесплатной версией Delphi является Lazarus, примерно соответствующий по своим возможностям Delphi 5.0.

    Русской версии Delphi не существует. Все так называемые «русские версии» – продукция криворуких пиратов, работающая нестабильно. Всегда устанавливайте только исходную английскую версию.

    Не нашли то, что искали? Воспользуйтесь поиском:

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