-указание типа данных, определяющего множество значений, которые могут приниматься объектами этого типа, и множество операций, которые могут применяться к объектам данного типа.
Константы и идентификаторы
Идентификаторы используются в ЯП как имена для различных встречающихся элементов. Они служат, кроме всего прочего, для обозначения промежуточных результатов, как держатели мест («параметры») в выражениях, и для обозначений функций.
Идентификаторы в Турбо Паскале – это имена констант, переменных, меток, типов, объектов, процедур, функций, модулей, программ и полей в записях. Идентификаторы могут иметь произвольную длину, но значащими являются только первые 63 символа.
Наряду с идентификаторами часто используются определенные символы и последовательности символов с постоянной, от конкретизации не зависящей интерпретацией. В этом случае говорят о константах.
Переменные
Переменная – это программный объект, способный принимать значение. Это значение переменная принимает уже в процессе выполнения программы, обычно в результате выполнения оператора присваивания.
Типы данных
Язык программирования кроме высокой надежности должен обеспечить множество типов данных, адекватное области применения. Современные языки имеют множество предопределенных типов данных и один или более механизмов спецификации типов, определяемых пользователем. Обычно имеются предопределенные целые (integer), действительные (real), символьные (character) и логические (boolean) типы. Символьный и логический типы определяются перечислением возможных значений – это перечислимые типы. Кроме предопределенных перечислимых типов современные языки программирования позволяют определять пользователю новые перечислимые типы путем явного указания их значений.
Все упомянутые выше типы являются простыми. У объектов простого типа нет внутренней структуры. В языках программирования есть также структурированные типы.
Выражения и операторы
При разработке языков главным обоснованием для выбора вводимых в него средств описания данных является необходимость спецификации данных на различных уровнях, чтобы данные можно было разрабатывать сверху вниз, уточняя их на каждом уровне. Такие же соображения применимы и к средствам описания действий. Язык должен обеспечить конструкции для предоставления всех обычно встречающихся типов программных структур.
Выражение – это формула для вычисления значения некоторого типа. Тип выражения определяется типом операндов.
Операнды – первичные составляющие выражения. В общем случае выражение представляет собой один или несколько операндов, разделенных знаками операций. Каждый операнд может быть объектом данных или выражением, заключенным в скобки. Выражение записывается по определенным синтаксическим правилам. Для обозначения операций используются специальные символы. Часть из них имеет общеизвестный смысл, другая – объясняется в описании языка. Вычисление выражения состоит в вычислении операндов и применении указанных операций в порядке, в основном совпадающим с принятым в математике.
Оператор – ведущее понятие. Любой оператор – это законченная фраза языка, которая определяет некоторый вполне законченный этап обработки информации.
Оператор – это способ задания некоторого действия для его исполнения. Действие представляет собой выбор и использование значения, установление отношений между значениями и переменными, которые их представляют, управление последовательностью выполнения заданной совокупности действий.
Операторы можно разделить на
- простые, т. е. те, которые в своем составе не содержат других операторов: оператор присваивания, перехода, остановки программы, оператор процедуры, пустой оператор;
- производные, т. е. те, в состав которых входят другие операторы: составной оператор, оператор выбора, операторы цикла, оператор присоединения, оператор развилки.
Блоки и подпрограммы
Используя перечисленные выше средства, уже можно составлять реальные программы. Однако программы решения практических задач обычно довольно велики, простые языковые средства неадекватно их отражают.
Программа – это совокупность логически самостоятельных этапов решения задачи, каждый из этапов реализует отдельную функциональную часть алгоритма. Каждой части ставится в соответствие совокупность операторов.
Отношение между отдельными частями программы выражает ее структуру. Различные языки программирования располагают разными средствами установления отношений между частями программы.
Блочный принцип заключается в том, что программа представляет собой совокупность иерархически расположенных блоков, каждый из которых является законченной системой вложенных процедурных блоков.
Блок – это программная единица, состоящая из двух частей:
Процедуры являются важнейшим элементом любого языка программирования. Первоначально они были введены только для исключения многократного дублирования одинаковых последовательностей команд. В настоящее время им придается большее значение в качестве средства структурирования программы.
Чтобы упростить запись подобных программ, механизм процедур расширяется введением специальной конструкции – функции.
Функция – это специальная форма процедуры, предназначенная для вычисления одного значения. Для вызова функции, в отличие от процедуры, ее имя нужно записать в виде операнда выражения. Вычисленное функцией значение связывается с именем самой функции, что позволяет обходиться без промежуточных переменных.
Абстрактные типы данных
Чтобы метод последовательного уточнения программ был применим к разработке как структур данных, так и программных структур, для выражения этих структур выбираются соответствующие формы языковых конструкций. Например, компоненты записи могут быть произвольного типа, что позволяет уточнять сложные структуры данных на различных уровнях. Процедуры можно определять в терминах других вложенных процедур, что тоже позволяет уточнять сложные действия на нескольких уровнях. Такие средства структурирования данных, как записи, массивы, объединения, являются в некоторой степени средствами абстрагирования при описании данных, а процедуры, функции – средствами абстрагирования при описании действий.
При разработке программного обеспечения усиливается тенденция унифицировать, объединить эти два пути последовательного уточнения программ – уточнение данных и уточнение действий – с помощью проектирования программ с использованием абстрактных типов данных. Абстрактный тип данных представляет собой множество значений и набор операций, с помощью которых (и только с их помощью) можно обрабатывать эти значения. В этом случае проектирование программ, по существу, сводится к спецификации проекта программы на некотором уровне уточнения в терминах множества абстрактных типов данных и связанных с ними операций.
Билет №2
СРЕДСТВА ОПИСАНИЯ ДАННЫХ
Классификация структур данных
Используемые в программировании данные можно разделить на две большие группы:
![]() |
Данные статической структуры – это данные, взаиморасположение и взаимосвязи элементов которых всегда остаются постоянными.
Данные динамической структуры – это данные, внутреннее строение которых формируется по какому-либо закону, но количество элементов, их взаиморасположение и взаимосвязи могут динамически изменяться во время выполнения программы, согласно закону формирования.
Данные статической структуры могут быть простыми (скалярными) и составными (агрегативными), которые формируются из простых структур по какому-либо закону.
Простым данным в языках программирования соответствуют стандартные (предопределенные) типы данных, к которым, как правило относят арифметические (натуральный, целый, вещественный, комплексный) типы данных, символьный, логический, указательный (ссылочный) типы. В Turbo Pascal включены натуральные типы Byte, Word, целые типы Integer, Shortint, Longint, вещественные Real, Single, Double, Extended, Comp, булевские типы Boolean, ByteBool, WordBool, LongBool, символьный тип Char и указательный тип Pointer. Вещественный тип в Turbo Pascal может быть представлен как с фиксированной, так и с плавающей точкой. Стандартные типы для представления комплексных чисел в Turbo Pascal отсутствуют.
Данные составной структуры бывают однородными, т. е. такими, у которых все элементы одинакового типа, и неоднородными (комбинированными), которые объединяют в единое целое разнотипные элементы. К данным однородной структуры относятся массивы, строки и множества, а к комбинированным – простые записи, вариантные записи, объединения и объекты.
Определение типа
До недавнего времени тип определялся, как множество значений, которые могут принимать объекты данных этого типа. Такое определение недостаточно точно. Например, следует ли считать различными типы:
array [1..10] of integer и array [1..11] of integer?
В языке Паскаль эти типы различны.
Определяя типы просто как множества значений, мы не имеем критерия для предпочтения какой-нибудь конкретной интерпретации пространства значений, допустимых в языке. Поэтому пришлось отойти от такого определения и сосредоточиться на поведении объектов данных относительно некоторых операций, понимая под типом множество значений и набор операций, выполняемых над этими значениями и обладающих некоторыми свойствами. Однако при таком подходе проблема однозначности тоже не решается полностью.
Эквивалентность типов
Понятие соответствия типов интуитивно кажется ясным, но на самом деле требует пояснения.
Различают два основных способа определения эквивалентности типов: по структуре и по имени. Эквивалентность типов по структуре означает, что совпадают описания типов, т. е. типы совпадают как множество значений; а эквивалентность типов по имени, что типы, которым в программе даны разные имена, считаются различными независимо от того, какова их структура, множество значений и т. п.
Например,
Type
Tabl1=array[1..10] of integer;
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 |



