Типизация и организация данных

End function

End sub

вызов процедуры:

call Имя_Процедуры(список значений параметров)

или

Имя_Процедуры(список значений параметров)

Рис. 1.2. Описание и вызов процедуры

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

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

 

описание функции:

function Имя_Функции(список аргументов)

< Команды функции (тело функции)>

Имя_функции = значение(т.е. число, строка или вычисляемое выражение)

вызов функции

Имя_данного = Имя_функции(список значений аргументов)

или

Команда Имя_Функции(список значений аргументов)

Рис. 1.3. Описание и вызов функции

Совершенно очевидно, что для различных данных существуют свои алгоритмы их обработки. Например, сумма чисел 123 и 345 равна 468, а сумма (результат слияния) строк “123” и “345” получает значение “123345”. Следовательно, желательно каким-то образом указывать способ обработки данных. Для данных необходимо указывать и их длину. Это позволит системе выделить соответствующее место (количество байтов) в ОЗУ, отводимых для хранения данных. Например, для данных, имеющих два альтернативных значения, вполне достаточно одного бита, для целых чисел в пределах -32767 … +32768 – двух байтов и т.д.

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

 

Таблица 1.2

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

Тип Название Длина, байт Диапазон
Boolean Логические False – True
Integer Простые целые -32768 … +32767
Long Длинные целые -2147483648 … +2147483647
Single (real) Числа с плавающей точкой одинарной точности -3402823х1038…-1401298х10-45 и +1401298х10-45…+3402823х10-45
Double Числа с плавающей точкой двойной точности -179769313486232х10308… -4940656458412478х10-324 и +4940656458412478х10-324… +179769313486232х10308
String Строковые данные постоянной или переменной длины 1 байт на символ  
Date Дата и время   Даты с 01.01.100 по 31.129.9999 Время с 00:00:00 по 23:59:59

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

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

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

Следует уяснить разницу между данными с именами, включающими цифры (например, А1, А2, … А100) и похожими на них элементами массива (А[1], А[2], … А[100]). Первые данные никак не связаны между собой, поэтому невозможно определить адрес данного с именем А2 по адресу данного с именем А1. И, наоборот, зная адрес элемента массива А[1], легко можно определить адрес элемента массива с любым номером.

 

1.4.4. Глобальные и локальные данные.
Статические и динамические данные

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

sub ABC(…) … x=5 end sub . . . x=10 call ABC(…) печатай х   Рис. 1.4. Двусмысленность данных
Не знаю!Если данные с именем "х", использующиеся внутри процедуры, хранятся по тому же адресу, что и данные с именем "х" в тексте основной программы, то х=5, если нет, то х=10.

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

 
 
Локальными называются данные, доступные только внутри именованной блочной структуры – процедуры, функции, модуля Глобальными называются данные, описанные вне блочной структуры и доступные как вне, так и внутри этой структуры

 

 


.

 

Существует соглашение, согласно которому описание данных как локальных внутри блочной структуры отменяет внутри нее описание одноименных глобальных данных. Таким образом, если мы вне процедуры опишем х как глобальные данные, а внутри процедуры не укажем, что х – локальные данные, то результат будет х=5, если внутри процедуры опишем данные х как локальные, то результат будет х=10, а значение х=5 будет утеряно.

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

 
 
Статические данные хранятся в сегменте данных, отведенная для них область ОЗУ не может быть освобождена до окончания работы программы Динамические данные хранятся в специальной области ОЗУ, выделенной для хранения динамических данных, причем эта область может быть освобождена самой программой до окончания ее работы  

 

 


1.4.5. Объектно-ориентированное
программирование

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

Например, наиболее распространенным элементом интерфейса пользователя является окно. Его можно рассматривать как объект, характеризующийся полями:

x,y - координаты левого верхнего угла окна на экране,

l,h - размеры (ширина и высота),

simvol, fon - цвета текста и фона окна.

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

Окно = объект

x,y : <указание типа данных>

l,h : <указание типа данных>

simvol, fon : <указание типа данных>