
- •Часть 1
- •Предмет и задачи информатики
- •История эвм
- •Состав вычислительной системы
- •Аппаратное обеспечение
- •Программное обеспечение
- •Операционная система
- •Кодирование Двоичный код
- •Кодирование чисел
- •Кодирование текстовых данных
- •Кодирование графических данных
- •Представление цвета в машинной графике
- •Кодирование звуковой информации
- •Прикладное программное обеспечение Системы обработки текстов
- •Интегрированный пакет Microsoft Office
- •Текстовый процессорWord
- •Создание в документе листа Microsoft Excel
- •О рисунках и других графических объектах
- •Закрепление областей листа
- •Скрытие и отображение столбцов и строк
- •Выделение фрагментов документа
- •Ввод данных с клавиатуры
- •Ввод текста
- •Ввод чисел
- •Ввод формул с клавиатуры
- •Установка границ ячеек
- •Работа с диаграммами
- •Работа с базами данных Основные понятия
- •Объекты базы данных
- •Запросы
- •Страницы
- •Макросы и модули
- •Безопасность баз данных
- •Технологии программирования
- •Алгоритм, программа
- •Интегрированная среда разработки приложений в Delphi
- •Стандарт и диалекты языка
- •Основы Паскаля
- •Основные понятия языка Алфавит
- •Имена и идентификаторы
- •Программные элементы
- •Описания
- •Раздел констант
- •Типизированные константы
- •Переменные
- •Функции и процедуры
- •Правила записи текста программы
- •Концепция данных
- •Основные типы данных Целые типы
- •Битовые операции
- •Вещественные типы
- •Тип дата-время
- •Символьные типы
- •Логические типы
- •Выражения
- •Оператор присваивания
- •Составной оператор
- •Раздел меток
- •Оператор перехода
- •Пустой оператор
- •Раздел типов
- •Условный оператор
- •Перечислимые типы (перечни)
- •Оператор варианта
- •Ограниченные типы
- •Операторы цикла
- •Операторы цикла с параметром
- •Оператор цикла с постусловием
- •Оператор цикла с предусловием
- •Регулярные типы (массивы)
- •Многомерные массивы
- •Комбинированные типы (записи)
- •Оператор присоединения
- •Подпрограммы
- •Подпрограммы-процедуры
- •Подпрограммы-функции
- •Формальные и фактические параметры
- •Параметры-значения
- •Параметры-переменные
- •Параметры-константы
- •ПроцедураExit
- •Процедурные типы
- •Множественные типы
- •Оглавление
- •Часть 1
Многомерные массивы
В Паскале требуется, чтобы все компоненты массива были одного и того же типа. В частности, компонентами массива могут быть массивы. Если компоненты-массивы состоят из скалярных значений, то мы получаем матрицу.
Возможный вид задания двумерного массива:
A: array [1..10] of array [1..20] of real ,а A[i][j] – элемент массива.
Допускается и другая форма задания:
A: array [1..10,1..20] of real и A[i,j].
Синтаксис задания регулярного типа:
<задание регулярного типа>::=
array[<тип индекса>{,<тип индекса>}]of<тип компонент>
<тип индекса>::=char|boolean| <огранич. тип>|<перечисл. тип>
<ограниченный тип>::=<имя типа>|<задание ограниченного типа>
<перечислимый тип>::=<имя типа>|<задание перечисл. типа>
<тип компонент>::=<имя типа>|<задание типа>
В качестве <тип компонент> можно задать любой тип Паскаля кроме файлового, а в качестве <тип индекса> – только такой, значения которого образуют ограниченное перенумерованное множество.
<перем. с индексами>::= <перем.-массив>[<индекс> {,<индекс>}]
<индекс>::=<выражение>
<переменная-массив>::=<имя>
Строки
Особое место занимают в Паскале строки – одномерные массивы, состоящие из элементов символьного типа
В Delphi определены 5 типов строк:
ShortString – короткая строка;
AnsiString– длинная строка;
WideString– длинная строка в кодировке UNICODE;
String– универсальная строка;
PChar– строка, оканчивающаяся нулевым кодом (#0), введена для совместимости с другими языками программирования (такие строки используются в C++ и Windows).
Переменная PChar– это ссылка на строку. Строки типаPCharразмещаются в динамической памяти. Динамическая память – это свободная память, которая остается после загрузки программ и данных. Программный элемент получает ее в процессе выполнения программы, а не на этапе компиляции (статическая память). ПеременнаяPCharсодержит адрес строки. По этому адресу записываются необходимые данные. Компилятор выделяет под переменнуюPChar4 байта, а сама строка, которая размещается по адресу, записанному в эти 4 байта, может быть любой длины. Если строки не существует, а переменнаяPCharобъявлена, то в эту переменную необходимо записатьnil(пустой адрес).
Переменные типа AnsiStringсодержат динамические строки (до 231символов) в ANSI-кодировке. Переменные типаWideStringсодержат динамические строки (до 230символов) в кодировке UNICODE. Термин «динамические» означает, что переменные указанных типов, как и типPChar, являются адресами, т.е. ссылками на память с соответствующим типом данных.
ShortString– это фактически массивarray [0..255] of char. При этом выделяется 256 байт, а строка размещается динамически, т.е. через адрес. Символы строки содержатся в байтах с первого по 255. В байте с номером 0 содержится символ, порядковый номер которого равен числу фактически имеющихся в строке символов. ТипShortStringвведен для совместимости с более ранними версиями языка Паскаль.
Строка Stringв зависимости от директивы компилятора{$H}может совпадать сAnsiString({$H+}, установлено по умолчанию) илиShortString({$H-}).
Для строки Stringможно задать максимальное количество символов с помощью объявленияvar st:String[25];
В этом случае строка st может содержать не более 25 символов и в памяти она занимает 26 байт. При задании строки максимальной длины используется только слово String.
Доступ к строке может осуществляться посимвольно (как для массивов). В строке PCharсимволы нумеруются, начиная с 0, а в остальных строковых типах, начиная с 1.
Обладая свойствами массивов, строки имеют ряд особенностей.
Существуют строковые константы. Строка-константа – последовательность литер, заключенная в одиночные апострофы.
Со строками определены операции конкатенации (сложения) и сравнения.
Складывают строки, используя знак '+', например: s:=s+s1. При этом в конец строкиsдобавляется содержимое строкиs1. Следует отметить, что в случае присваивания строковой переменной выражения с длиной, большей, чем максимально допустимая для данной переменной, происходит усечение строки до максимальной длины. Эта ситуация не считается ошибочной и не приводит к прерыванию выполнения программы.
При сравнении строк сравнивают ANSI коды символов слева направо. Если строки разной длины, то короткая строка дополняется справа, причем код, который участвует в дополнении строки, меньше кода любого символа, участвующего в ANSI-кодировке.
Если в операциях участвуют строки разного типа, то необходимо явное преобразование типов.
Присваивание значений элементам строки не влияетна ее текущую длину. Значение текущей длины устанавливается или меняется, если строке как целому присваивается новое значение.
Для выполнения различных операций над строками существует ряд встроенных подпрограмм:
Операция |
Описание |
Copy(S,pos,len) |
Возвращает подстроку длиной len символов из строки S, начиная с символа номер pos |
Length(S) |
Возвращает фактическую динамическую длину строки S |
Pos(substr,S) |
Возвращает позицию первого вхождения подстроки substrв строкуS |
Set Length(S,newlen) |
Задает новую длину newlenстроке S |
StringOfChar(Ch,Count) |
Возвращает строку, заполненную символом Chв количествеCount |
Trim(S) |
Возвращает строку без начальных и конечных пробелов |
UpperCase(S) |
Возвращает строку с прописными (латинскими) буквами |