Основы Object Pascal, страница 4

2015-11-14СтудИзба

Описание файла

Файл "Основы Object Pascal" внутри архива находится в папке "Основы Object Pascal". Документ из архива "Основы Object Pascal", который расположен в категории "". Всё это находится в предмете "информатика" из 2 семестр, которые можно найти в файловом архиве МАИ. Не смотря на прямую связь этого архива с МАИ, его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "информатика" в общих файлах.

Онлайн просмотр документа "Основы Object Pascal"

Текст 4 страницы из документа "Основы Object Pascal"

Обратите внимание на операции and, or, xor и not. Например, ключевое слово and можно применить и как знак логической операции «И», так и как знак поразрядной операции над битами (двоичными цифрами) машинного кода.

Логические операции участвуют в выражениях, результатом вычисления которых является либо true (истинно), либо false (ложно). Результаты логических вычислений либо присваиваются переменным булевого типа (boolean), либо принимают участие в управлении программой if. . . then . . . ; while . . . do ; until …; Например

if Assigned(MyObject) and (MyObject.Age >=10)

then MyObject.Run;

Битовые операции выполняются над битами целых чисел. При этом операция применяется к значению 0 или 1, так, как если бы это были false или true. Область применения битовых операций – формирование признаков ветвления программы, работа с цветом, масками закраски фона и т.п.

Следующая таблица обобщает логические операции

Операция

Результат

not a

true становится false и наоборот

a and b

true только когда оба операнда true

a or b

true когда один из операндов true

a xor b

true когда оба операнда имеют противоположную истинность, т.е. любое из двух true-false или false-true, но не true-true или false-false

Константы

Как было сказано выше, константа есть идентификатор, который обозначает постоянную величину. В процессе выполнения программы значение константы изменить невозможно. Термины «переменная» и «константа» выбраны неслучайно. Так, значения переменных могут изменяться в процессе работы программы, а значения констант – нет. Для объявления константы используется ключевое слово const. Чтобы объявить константы просто перечислите их имена и значения, например

const

DefaultWidth = 400;

DefaultHeight = 200;

Description = Динамическая модель атмосферы;

Обратите внимание на то, что объявление константы содержит знак «равно» (=), а не «присвоить» (:=). Кроме того, нет спецификации типа константы. Компилятор сам определяет тип константы по виду числового значения справа от знака (=). Имена констант в программе следует использовать вместо явного написания чисел или литералов.

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

Массивы

Массивы относятся к структурированным типам данных.

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

Одномерные массивы

В одномерном массиве каждый элемент однозначно идентифицируется его порядковым номером в структуре. Такое понятие как «вектор» в программе представляют одномерным массивом.

Следующий пример показывает как объявить в программе одномерный массив с пятью элементами целого типа:

var

MyArray : array[0..4] of integer;

Для придания значений элементам массива надо использовать операцию «индекс» ([]):

MyArray[0] := -200;

MyArray[1] := -100;

MyArray[2] := 0;

MyArray[3] := 100;

MyArray[4] := 200;

Далее в программе можно обращаться к элементу одномерного массива по его индексу:

X := MyArray[3] + MyArray[4]; { результат Х = 300 }

Многомерные массивы

Массивы могут быть многомерными.

Рассмотрим пример объявления двумерного массива значений целого типа:

var

M2Array : array[0..2, 0..4] of Integer;

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

X := M2Array[1][1] + M2Array[2][1];

X := M2Array[1, 1] + M2Array[2, 1];

Порядок размещения элементов двумерного массива показан на рис 1.5. Здесь индекс по вертикали – первый, а по горизонтали – второй.

[0]

[1]

[2]

[3]

[4]

[0]

1

2

3

4

5

[1]

6

7

8

9

10

[2]

11

12

13

14

15

Рис.1.5. Размещение элементов двумерного массива в памяти

При включенной опции компилятора «Range checking» осуществляется автоматический контроль принадлежности индексов диапазонам, указанным при объявлении массива. Например, при компиляции следующего фрагмента кода

var

MyArray : array[0..4] of Integer;

X : Integer;

begin

X := MyArray[3] + MyArray[5]; { Ошибка! 5 вне диапазона. }

end;

будет выдано сообщение об ошибке :

Constant expression violates subrange bounds.

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

var

MyArray : array[10..20] of Integer;

Теперь для доступа к элементам массива мы должны использовать индексы с 10 (первый элемент) по 20 (последний элемент).

Можно объявить массив констант и одновременной инициализировать его:

const

myArray:array[0..4] of Integer = (-200,-100, 0, 100, 200 );

При объявлении массива можно использовать имена ограниченных типов данных (отрезки, перечисления) при условии что эти типы уже где–то объявлены. Например:

type

WorkDays = (Monday,Tuesday,Wednesday,Thurthday,Friday);

WorkHours = 9..18;

WorkTime = array[WorkDays,WorkHours] of integer;

Здесь объявление типа массива WorkTime равносильно следующему

WorkTime = array[0..4,9..18] of integer;

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

var

Days : WorkTime;

// Далее. . .

Days[Monday,10] := 56;

Days[Friday,17] := 100;

Функции Low и High

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

var

X, I, Lower, Upper : Integer;

MyArray : array[10..20] of Integer;

begin

{ Code to initialize MyArray here. }

Lower := Low(MyArray); { Lower содержит 10 }

Upper := High(MyArray); { Upper содержит 20 }

X := 0;

for I := Lower to Upper do

X := X + MyArray[I];

{ продолжение кода . . . }

end;

Применение функций Low и High для работы с массивами – хороший способ избежать ошибок, связанных с выходом индекса за допустимые пределы.

Динамические массивы

При объявлении динамического массива достаточно указать только тип его элементов. Память для размещения его элементов на этом этапе не выделяется. Фактически массив создается только во время выполнения программы. Для этого используется функция SetLength. Как только необходимость в массиве отпадает, следует освободить память вызовом процедуры Finalize. Рассмотрим пример:

var

BigArray : array of Integer; {размер массива не указан }

X : Integer;

begin

X := GetArraySize; { Функция вычисляет размер массива }

SetLength(BigArray, X); { Динамическое размещение массива }

{ Теперь массив можно использовать}

. . . . . . . .

{ Массив больше не нужен }

Finalize(BigArray);

end;

Новый термин. Динамический массив размещается в оперативной памяти во время выполнения программы.

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

По окончании использования его следует уничтожить.

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

Для изменения размеров массива используют функцию Copy. Рассмотрим такой пример. Пусть динамический массив BigArray содержит 100 элементов. Нам необходимо увеличить его размер до 200 элементов. Для этого обращаемся к функции Copy:

Copy(BigArray, 200);

Предыдущее содержимое (значения элементов) массива остается неизменным, а его размер увеличен до 200 элементов.

Двумерные динамические массивы создаются аналогично. Объявление двумерного динамического массива имеет вид:

var

BigArray : array of array of Integer;

begin

SetLength(BigArray, 20, 20);

BigArray[0][0] := 200;

{ . . . . . . . . . . . . }

Finalize(BigArray);

end;

Строки

Строки в программах используются весьма интенсивно. Object Pascal дает нам три различных строковых типа: длинная строка, короткая строка и расширенная строка. Кроме того, есть строки с терминальным нулем.

Короткая строка

Короткая строка – это строка фиксированной длины с числом символов не более 255. Имеются два способа объявления строк фиксированной длины. В первом случае используется предопределенный тип ShortString, который объявляет строку длиной 255 байт. Во втором случае – ключевое слово string со спецификацией длины:

var

S1 : ShortString; { строка длиной 255 символов }

S2 : string[20]; { строка длиной 20 символов }

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

var

S:ShortString; { строка длины 255 символов }

Len:Integer;

begin

S := 'Hello';

Len:= Ord(S[0]); {Значение Len теперь равно длине S,т.е. 5}

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5231
Авторов
на СтудИзбе
424
Средний доход
с одного платного файла
Обучение Подробнее