Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры [4747 вопросов].doc
Скачиваний:
83
Добавлен:
15.06.2014
Размер:
407.04 Кб
Скачать

29 Имена, связывание, проверка типов.

Элементы языков программирования.

Имена (идентификаторы). Атрибуты:Длина имени.Зависимость от регистра.Алфавит символов. Также влияет порядок символов в имени.Виды имен

Имена связаны с понятием меток, подпрограмм, формальных параметров и дру­гими программными конструкциями. Синонимом термина имя часто является термин идентификатор.

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

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

Предопределённые имена.

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

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

Зарезервированное слово (reserved word) не может использоваться в качестве име­ни. При разработке языка лучше использовать зарезервированные слова, поскольку воз­можность переопределения ключевых слов может ухудшить читабельность.

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

Атрибуты:Имя переменной.

Имена переменных — самые распространенные имена в программах. Большинство переменных имеют имена. Часто вместо слова "имя" используется слово "идентификатор".

Адрес переменной — это ячейка памяти, с которой связана переменная.

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

Тип (type) переменной определяет диапазон значений, которые может иметь пере­менная, и набор операций, предусмотренных для переменных этого типа.

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

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

Концепции связывания.- статическое связывание - динамическое связывание

Связывание типов (статическое)

Связывается имя переменной с типом переменной. явное объявление, неявное объявление

Динамическое связывание типов (во время выполнения программы)

При динамическом связывании в операторе объявления тип не указывается. Вместо этого переменная связывается с типом при присвоении ей значения оператором присваи­вания.

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

Связывание имени с ячейкой памяти

Время жизни определяется с того момента, когда создаётся ячейка памяти, и заканчивается, когда она удаляется ()

Три типа переменных (по времени жизни)

- автоматические (связывание происходит во время декларирования типа)

- статические (связывание происходит до выполнения программы, а разыменование не происходит)

- явно динамические(связываем имя ‘a’ с ячейкой памяти, разрыв с ячейкой осуществляется оператором delete).

Проверка типов.

Различают языки со строгой типизацией (связывание имён переменных статическое) с нестрогой типизацией (можно связывать статические и динамические).

Расширяющее приведение int -> long

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