Кроме того, часто допускается также операция сцепления строк, записываемая с помощью символа «+». Например:
"абв " + "abc " + " эюя" — получится "абв abc эюя"
Тип «строка»
Бейсик | Паскаль | Си++ |
STRING | string | Базового типа «строка» нет |
Указатели
Некоторые языки программирования допускают в явном виде работу с указателями — адресами физической памяти. При этом в них имеется специальная операция получения адреса конкретной переменной, что позволяет работать с памятью напрямую, примерно так, как это происходит в языках ассемблера. Такая возможность позволяет добиваться высокой эффективности работы программы, но часто приводит к ошибкам, если указатель вдруг получает неверное значение и при его использовании начинает портиться область памяти, предназначенная совсем для других целей.
Сложные данные
Структуры. До сих пор рассматривались базовые типы данных: числа, строки, логические величины — и операции над базовыми данными. Однако для повышения производительности труда программистов и повышения качества их работы необходимо, чтобы язык программирования имел средства, позволяющие описывать данные в виде, максимально приближенном к их реальным аналогам. Например,
Глава 20. Основы программирования
чтобы организовать обработку данных по студентам, в программе удобно не просто описать десяток различных переменных, а объединить их в структуру (или запись) «студент», состоящую из полей разного типа «имя», «пол», «год рождения», «группа» и т. д.
Современные языки программирования позволяют применять такие сложные типы данных, составляющиеся из базовых и определенных ранее сложных типов. В результате удается организовывать структуры данных произвольной сложности: списки, деревья и т. п. При этом структура объединяет группу разных данных под одним названием.
Синтаксис описания структуры
20.3. Алгоритмическое (модульное) программирование
Доступ к содержимому структуры:
Синтаксис описания массива
Вот примеры описания массивов.
Бейсик:
Доступ к элементу массива осуществляется по его номеру. Этот номер указывается в круглых (Бейсик) или квадратных (Паскаль, Си++) скобках сразу за именем массива (такое действие называется индексированием):
IntArray( 12 )
Массивы, границы которых явно заданы в команде описания, называются статическими. Их размер известен заранее и не меняется на всем протяжении работы программы.
Глава 20. Основы программирования
зуя компиляторы, сложно. Приходится выполнять множество проверок, связанных с расходованием памяти компьютера, что понижает общую эффективность приложения. Динамические массивы в Паскале начали поддерживаться совсем недавно, с активным распространением новых мощных ПК, а в интерпретируемых языках типа Бейсика это было сделано довольно давно.
Во многих языках программирования строки рассматриваются как массивы символов. Их допускается индексировать как обычные массивы.
Отличие базовых типов от сложных в том, что в базовых типах нельзя выделить составные части. При этом поле структуры или элемент массива считаются обычными переменными, и их использование в любых операторах ничем не отличается от использования переменных базовых типов.
Массив а состоит из структур, в описании которых есть поле Items, являющееся тоже структурой, имеющей поле Strings, которое, в свою очередь, представляет собой массив структур, имеющих поле value.
значение.
Синтаксис команд описания данных
Бейсик | Паскаль | Си++ |
DIM имя AS тип | var имя: тип; | тип имя; |
Вот примеры описания переменных. Бейсик:
DIM X AS DOUBLE Паскаль:
var x: real; var Str: record
20.3. Алгоритмическое (модульное) программирование
При описании переменных одного типа в Паскале и Си++ их можно указывать через запятую.
Новые типы данных
Чтобы избежать этой проблемы и позволить программистам активно применять нужные структуры данных, в современных языках программирования разрешено определять собственные типы данных, которые допускается использовать в командах описания наравне с базовыми типами.
Синтаксис описания нового типа
Бейсик | Паскаль | Си++ |
Аналогичен описанию структуры, которое уже является описанием нового типа | type имя = описание; | |
Название нового типа можно использовать во всех последующих командах описания переменных.