2 основные базовые и структурированные типы данных. Базовые конструкции алгоритмов. Типы данных: простые и структурированные. Цикл с предусловием

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

Простые типы.

Простые типы делятся на ПОРЯДКОВЫЕ и ВЕЩЕСТВЕННЫЕ.

1. ПОРЯДКОВЫЕ ТИПЫ , в свою очередь, бывают:

а) целые

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

Название типа

Длина (в байтах)

Диапазон значений

32 768...+32 767

2 147 483 648...+2 147 483 647

б) логический

Название этого типа BOOLEAN. Значениями логического типа может быть одна из логических констант: TRUE (истина) или FALSE (ложь).

в) символьный

Название этого типа CHAR - занимает 1 байт. Значением символьного типа является множество всех символов ПК. Каждому символу присваивается целое число в диапозоне 0…255. Это число служит кодом внутреннего представления символа.

2. ВЕЩЕСТВЕННЫЕ ТИПЫ .

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

Длина числового типа данных, байт

Название числового типа данных

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

Диапазон десятичного порядка числового типа данных

2*1063 +1..+2*1063 -1

СТРЕКТУРИРОВАННЫЕ ТИПЫ

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

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

Существует несколько методов структурирования. По способу организации и типу компонентов в сложных типах данных выделяют следующие разновидности: регулярный тип (массивы); комбинированный тип (записи); файловый тип (файлы); множественный тип (множества); строковый тип (строки); в языке Турбо Паскаль версии 6.0 и старше введен объектный тип (объекты).

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

1. Массивы

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

Описание массива задаётся следующим образом:

<имя типа> = array [<сп.инд.типов>] of <тип>

Здесь <имя типа> - правильный идентификатор;

Array, of – зарезервированные слова (массив, из);

<сп.инд.типов> - список из одного или нескольких индексных типов, разделённых запятыми; квадратные скобки, обрамляющие список, - требование синтаксиса;

<тип> - любой тип Турбо Паскаля.

В качестве индексных типов в Турбо Паскале можно использовать любые порядковые типы, кроме LongInt и типов-диапазонов с базовым типом LongInt.

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

2. Записи

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

Структура объявления типа записи такова:

< имя типа > = RECORD < сп . полей > END

Здесь <имя типа> - правильный идентификатор;

RECORD, END – зарезервированные слова (запись, конец);

<сп.полей> - список полей; представляет собой последовательность разделов записи, между которыми ставится точка с запятой.

3. Множества

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

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

Описание типа множества имеет вид:

< имя типа > = SET OF < баз . тип >

Здесь <имя типа> - правильный индификатор;

SET, OF – зарезервированные слова (множество, из);

<баз.тип> - базовый тип элементов множества, в качестве которого может использоваться любой порядковый тип, кроме WORD, INTEGER и LONGINT.

Для задания множества используется так называемый конструктор множества: список спецификаций элементов множества, отделяемых друг от друга запятыми; список обрамляется квадратными скобками. Спецификациями элементов могут быть константы или выражения базового типа, а также – тип-диапазон того же базового типа.

4. Файлы

Под файлом понимается либо именованная область внешней памяти ПК, либо логическое устройство – потенциальный источник или приёмник информации.

Любой файл имеет три характерные особенности

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

    он содержит компоненты одного типа. Типом компонентов может быть любой тип Турбо Паскаля, кроме файлов. Иными словами, нельзя создать «файл файлов».

    длина вновь создаваемого файла никак не оговаривается при его объявлении и ограничивается только ёмкостью устройств внешней памяти.

Файловый тип или переменную файлового типа можно задать одним из трёх способов:

< имя >= FILE OF < тип >;

< имя >=TEXT;

<имя> = FILE;

Здесь <имя> - имя файлового типа (правильный индификатор);

FILE, OF – зарезервированные слова (файл, из);

TEXT – имя стандартного типа текстовых файлов;

<тип> - любой тип Турбо Паскаля, кроме файлов.

В зависимости от способа объявления можно выделить три вида файлов:

· типизированные файлы (задаются предложением FILE OF…);

· текстовые файлы (определяются типом TEXT);

· нетипизированные файлы (определяются типом FILE).

О преобразовании числовых типов данных Паскаля

В Паскале почти невозможны неявные (автоматические) преобразования числовых типов данных. Исключение сделано только для типа integer, который разрешается использовать в выражениях типа real. Например, если переменные описаны следующим образом:

Var X: integer; Y: real;

то оператор

будет синтаксически правильным, хотя справа от знака присваивания стоит целочисленное выражение, а слева – вещественная переменная, компилятор сделает преобразование числовых типов данных автоматически. Обратное же преобразование автоматически типа real в тип integer в Паскале невозможно. Вспомним, какое количество байт выделяется под переменные типа integer и real: под целочисленный тип данных integer выделяется 2 байта памяти, а под real – 6 байта. Для преобразования real в integer имеются две встроенные функции: round(x) округляет вещественное x до ближайшего целого, trunc(x) усекает вещественное число путем отбрасывания дробной части.

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

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

Определение 1

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

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

Определение 2

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

Ветвления бывают двух типов: неполное (если-то ) и полное (если-то-иначе ). С помощью полного ветвления можно организовать 2 ветви в алгоритме (то или иначе ), каждая из которых приведет к общей точке их слияния, алгоритм будет выполняться независимо от того, по какому пути пошло решение. При наличии неполного ветвления предполагаются некоторые действия алгоритма лишь на одной ветви (то ), поскольку вторая отсутствует, для одного из результатов проверки действия производить нет необходимости, управление сразу перейдет к точке слияния. Различают 4 базовые варианта структуры ветвления:

  1. Неполное ветвление типа «если – то », при котором все действия будут выполняться истинности условия.
  2. Полное ветвление типа «если – то – иначе» , при котором будут выполняться 2 действия в зависимости от истинности условия.
  3. Ветвление с выбором типа «то» , при котором действие 1 будет выполняться при условии 1, действие 2 при условии 2 и т.д.
  4. Ветвление с выбором типа «иначе» , при котором при условии 1 будет выполняться действие 1, при условии 2 действие 2 и т.д., а иначе будут выполняться все другие действия.

Ниже приведены блок-схемы разветвляющихся алгоритмов.

Определение 3

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

Определение 4

Такую группу повторяющихся действий на каждом шагу цикла называют телом цикла .

В любой циклической конструкции содержатся элементы ветвящейся конструкции алгоритма.

Различают 3 типа циклических алгоритмов:

  • цикл с параметром (арифметический цикл);
  • цикл с предусловием;
  • цикл с постусловием (последние два называют итерационными).

Арифметический цикл

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

Цикл с предусловием

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

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

Цикл с постусловием

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

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

Ниже приведены блок-схемы циклических алгоритмов.

Типы данных: простые и структурированные

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

Определение 5

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

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

Типом переменной задается:

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

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

Определение 6

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

Определение 7

Переменные, которые создаются и уничтожаются на разных этапах выполнения про¬граммы, называются динамическими .Определение 10

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

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

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

Определение 11

Количество элементов массива называется размерностью .

У одномерного массива его размерность записывают рядом с именем в круглых скобках.

Элементы одномерного массива вводятся поэлемен¬тно, в порядке, необходимом для решения конкретной задачи. При необходимости ввода всего массива элементы вводятся в порядке возрастания индексов.

алгоритм дискретный программирование

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

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

  • * используемый способ записи информации в ячейки памяти;
  • * необходимый объем памяти для ее хранения.

Объем памяти для каждого типа определяется таким образом, чтобы в него можно было поместить любое значение из допустимого диапазона значений данного типа. Например, тип «байт» может принимать значения от 0 до 255, что в двоичном коде (255 = = 11111111 2) соответствует ячейке памяти длиной в 8 бит (или 1 байт).

В описанных выше алгоритмах все данные хранятся в виде переменных. Например, инструкция «Ввод двух чисел а, означает введение пользователем значений двух переменных, а инструкция «К=К+1» означает увеличение значения переменной К на единицу.

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

Все остальные данные в программе, значения которых не изменяются на протяжении ее работы, называют константами или постоянными. Константы, как и переменные, имеют тип. Их можно указывать явно, например, в инструкции «К = К + 1» 1 есть константа, или для удобства обозначать идентификаторами: pi = 3,1415926536. Только значение pi нельзя изменить, так как это константа, а не переменная.

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

Массивом называется упорядоченная совокупность однотипных величин, имеющих общее имя, элементы которой адресуются (различаются) порядковыми номерами (индексами). В качестве иллюстрации можно представить шкаф, содержащий множество пронумерованных ящиков (совокупность - «Ящик №1», «Ящик №2», «Ящик №3» и т.д.; «Ящик» - общее имя всех ее элементов). Доступ к содержимому конкретного ящика (элементу массива) осуществляется после выбора ящика по его номеру (индексу). Элементы массива в памяти компьютера хранятся по соседству, одиночные элементы простого типа такого расположения данных в памяти не предполагают. Массивы различаются количеством индексов, определяющих их элементы.

Одномерный массив (шкаф ящиков в один ряд) предполагает наличие у каждого элемента только одного индекса. Примерами одномерных массивов служат арифметическая и геометрическая последовательности, определяющие конечные ряды чисел. Количество элементов массива называют размерностью. При определении одномерного массива его размерность записывается в круглых скобках, рядом с его именем. Например, если сказано: «задан массив А(10)», это означает, что даны элементы: а р а 2 ,…, a ig . Рассмотрим алгоритмы обработки элементов одномерных массивов.

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

3.2.1 Простые и структурированные типы данных. Структуры данных - записи, массивы, списки.

Переменные

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

Простые типы

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

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

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

Массивы

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

Массивы могут быть одномерными (ряд, строка), двумерными(таблица, матрица), трёхмерными(куб) и т.д.

Пример (С#, Java)

int mass = newint; //создаётся массив для хранения десяти целых чисел

mass=1; //по индексу 0 записывается значение 1

Дополнительное чтение: http://enos.itcollege.ee/~jpoial/java/i200loeng4.html

Записи

Для хранения данных разных типов, которые вместе образуют некий связанный набор, используются записи. Например, запись человека формируется из следующих данных: имя(текст), фамилия(текст), пол(логическое значение, 0 - женщина, 1 - мужчина), вес(дробное число). Эти данные образуют одно целое при описании одного человека, однако, сами по себе очень разных типов.

Пример (C#)

structinimene {

publicstring eesnimi;

publicstring perenimi;

publicbool sex;

publicfloat weight;

С помощью этой записи мы можем создать переменную kasutaja(пользователь) и присвоить пользователю значения имени, фамилии, пола и веса:

inimene kasutaja;

kasutaja.eesnimi = "Jaan";

kasutaja.perenimi = "Mets";

kasutaja.sex = 1;

kasutaja.weight = 80.0;

Списки и деревья

В настоящее время часто для хранения данных используются списки (англ. List). Если каждый элемент списка указывает на следующий за ним элемент, то это связанный список, конец такого списка обозначается пустым элементом (null). Связанный список, где каждый элемент указывает только на следующий за ним, называется однонаправленным списком. Связанный список, где каждый элемент указывает на следующий и предыдущий элементы, называется двунаправленным. Связанный список, где отсутствуют первый и последний элементы, и каждый элемент указывает на следующий, называется кольцевым списком. Длина связанного списка определяется количеством его элементов. Первый элемент списка это голова (англ. Head) и остальные элементы - хвост (англ. Tail).

Стек (англ. Stack) это связанный список, в котором элемент добавленный последним - читается первым(англ. LIFO - Last In First Out (последним вошёл первым вышел)).

Очередь (англ. Queue) это связанный список, в котором элемент, добавленный первым - читается первым (англ. FIFO - First In First Out(первым вошёл, первым вышел)).

Дополнительное чтение: http://www.cs.tlu.ee/~inga/alg_andm/linked_list_C_2011.pdf

Дерево - это стрктура данных, в которой данные размещаются в виде дерева, состоит из вершин (англ. Node) и дуг (англ. Edges), которые соединяют вершины (указатели). Вершины, которые соединены дугами с вершиной расположенной выше называются детьми (англ. Childs), а расположенная выше вершина в этом случае является родителем (англ. Parent). Самая верхняя вершина - это корень (англ. Root). Вершину, у которой нет детей, называют листом (англ. Leaf).

Двигаясь от вершины к родителю, а оттуда к следующему родителю и т.д. достигаем корня. Предками называются все вершины находящиеся на пути от рассматриваемой вершины до корня. Высота дерева (англ. tree height) определяется самым длинным путём от листа к корню.

В случае упорядоченного дерева, корень и соединённые непосредственно с ним вершины определены, как вершины первого уровня (англ. First level nodes)(дети корня), а вершины соединённые напрямую с вершинами первого уровня - это вершины второго уровня (дети вершин первого уровня) и т.д.; также важным считается порядок детей слева на право.

Дополнительное чтение: http://www.cs.tlu.ee/~inga/alg_andm/tree_gen_2011.pdf

Двоичное дерево - это такое дерево, в котором у каждого родителя может быть один ребёнок, два ребёнка или совсем не быть детей и порядок детей важен.

Двоичное дерево поиска (англ. Binary search tree) - это двоичное дерево, которое упорядочено. Слева от вершины всегда находиться число меньшего размера и справа всегда большего.

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

Б-дерево (англ. B tree) это дерево поиска, в котором количество детей у каждой вершины находится в промежутке от (t-1) до (2t-1), где t - это любая константа.

Б*-дерево - это Б-дерево, в котором вершины заполняются на 2/3, вначале заполняя две дочерние вершины путём перераспределения ключей и разбивая их после этого на 3 вершины.

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

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

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

Общий вид определения массива:

Type A = array [тип индекса массива] of [тип компонент массива]

Например, М1=array of real;

Строки – это массив символов, но количество символов в строке может меняться. Строка трактуется как цепочка символов произвольной длины. Максимальное количество символов не более 255. Каждый символ в строке имеет свой индекс (номер).

Запись – это структура данных, состоящая из фиксированного числа компонентов, называемых полями записи. В отличие от массива, компоненты записи (поля) могут быть различного типа. Записи позволяют объединять значения различных типов.

Month: (Jan, Feb, Mar, Apr, May, Jun, July, Aug, Sept, Oct, Nov, Dec);

Year: 2000..2050;

Множества – это наборы однотипных, логически связанных друг с другом объектов. Количество элементов, входящих в множество может меняться от 0 до 256. Именно непостоянством своих элементов множества отличаются от массивов и записей.

Digits = Set of 1..5;

Файл – именованная область внешней памяти. Файл содержит компоненты одного типа, кроме файлов (т.е. нельзя создать «файл файлов»). Длина файла не оговаривается и ограничивается только ёмкостью устройств внешней памяти.

F: File of Integer;

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

      1. Указатель (ссылочный тип)

Cодержит адрес байта памяти, в котором находится значение данных определённого типа. Этот тип называют также ссылочным. Для описания используется символ ^ и идентификатор типа. Например, P=^integer;

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

    1. Константы

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

    Числовые константы служат для записи чисел. Различают следующие их виды:

Целые числа: записываются со знаком + или -, или без знака, по обычным арифметическим правилам: -10 +5 5

Вещественные числа могут записываться в одной из двух форм:

обычная запись : 2.5 -3.14 2. - обратите внимание, что целая часть отделяется от дробной символом точки;

экспоненциальная форма: в этой записи вещественное число представляется в виде m*10 p , где m – мантисса или основание числа, 0.1≤|m|≤1, p – порядок числа, это целочисленная константа. Действительно, любое вещественное число можно представить в экспоненциальной форме:

153.5 -0.1535*10 3

99.005 0.99005*10 2

Во всех IBM-совместимых компьютерах вещественные числа хранятся как совокупность мантиссы и порядка, что позволяет упростить операции над ними, используя специальную арифметику, отдельно обрабатывающую мантиссу и порядок. Для программной записи числа в экспоненциальной форме вместо "умножить на 10 в степени" используется обозначение E или e (латинская):

153.5 -0.1535*10 3 -0.1535E3 или -1.535E02

99.005 0.99005*10 2 0.99005E+2 или 9.9005e+01

Без принятия специальных мер программа на Паскале будет выводить на экран и принтер вещественные числа именно в такой форме. Кроме того, такая форма удобна для записи очень маленьких и очень больших чисел:

Поскольку размер памяти, отводимой под мантиссу и порядок, ограничен, то вещественные числа всегда представляются в памяти компьютера с некоторой погрешностью . Например, простейшая вещественная дробь 2/3 дает в десятичном представлении 0,666666... и, независимо от размера памяти, выделяемой для хранения числа, невозможно хранить все его знаки в дробной части. Одной из типичных проблем программирования является учет возможных погрешностей при работе с вещественными числами.

Шестнадцатеричные числа состоит из шестнадцатеричных цифр, которым предшествует знак $. Диапазон шестнадцатеричных чисел – от $00000000 до $FFFFFFFF.

Кроме числовых констант существуют и другие их виды:

    Логические константы.

Служат для проверки истинности или ложности некоторых условий в программе и могут принимать только одно из двух значений : служебное слово true обозначает истину, а false – ложь;

    Символьные константы.

Могут принимать значение любого печатаемого символа и записываются как символ, заключенный в апострофы ("одинарные кавычки"):

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

К символьным также относятся константы вида #X, где X – числовое значение от 0 до 255 включительно, представляющее собой десятичный ASCII -код символа. Таблицы ASCII-кодов, используемых операционными системами DOS и Windows, приведены в Приложении 1. Например, значение #65 будет соответствовать коду символа "A" латинской.

    Строковые константы.

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

"Введите значение X:"

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

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

const Имя1=Значение1;

Имя2=Значение2;

ИмяN=ЗначениеN;

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

const e=2.7182818285;

lang="Turbo Pascal 7.1";

Здесь описана числовая константа e со значением основания натурального логарифма и строковая константа с именем lang, содержащая строку "Turbo Pascal 7.1".

Каждое даваемое программистом имя должно быть уникальным в пределах одной программы. Если мы включим этот раздел в свою программу, мы уже не сможем создать в ней других объектов с именами e и lang.

  • Сергей Савенков

    какой то “куцый” обзор… как будто спешили куда то