
- •Тема 2.2. Основные понятия языка программирования высокого уровня Free Pascal
- •Системы программирования
- •Интегрированная среда разработки FreePascal
- •Введение в язык Паскаль Характеристика языка программирования Паскаль
- •Основные понятия технологии программирования
- •Алфавит языка Паскаль
- •Структура программы на Паскале
- •Типы данных
- •Стандартные типы данных
- •Структуры данных
- •Строковый тип
- •Структурированные переменные
- •Представление основных структур программирования на языке Паскаль Операции и выражения
- •Арифметические операции и выражения
- •Логические операции
- •Оператор присваивания
- •Составной оператор
- •Условный оператор
- •Процедура write
- •Процедура ввода
- •Оператор выбора
- •Операторы повторений
- •Оператор цикла с предусловием
- •Оператор цикла с постусловием
- •Оператор цикла с параметром
- •Метки и операторы перехода
- •Работа с массивами
- •Операции над строками
- •Функция Length
- •Функция Upcase
- •Функция Сopy
- •Функция Pos
- •Процедуры Insert и Delete
- •Процедура Str
- •Процедура val
- •Практические примеры работы со строковыми данными
- •Оператор присоединения with
- •Процедуры и функции Паскаля
- •Формальные и фактические параметры
- •Типизированные константы
- •Interface
- •Implementation
- •Interface
- •Interface
- •Implementation
- •Файловый тип данных Типизированные файлы
- •Текстовые файлы
Структуры данных
При описании алгоритма важно однозначно определить не только свойства, но и структурные особенности используемых в алгоритме объектов, над которыми выполняются преобразования в ходе решения задачи. До сих пор рассматривались скалярные данные: константы и переменные. Переменные, имеющие в качестве текущего значения только одну величину, называются скалярными переменными.
Массивы
Разновидностью переменной может быть и переменная «с индексом», которая является элементом массива. Для ее обозначения используют имя массива и перечень (список) индексов:
A [1], G [1,5], RAD [K, L], S [3, 4, 5].
При обработке данных широкое распространение имеет и более общее понятие, такое, как структурированная переменная, т. е. переменная, состоящая из нескольких элементов или компонент, на которую тем не менее можно ссылаться как на единый объект. Например, устройство календаря позволяет указывать конкретный день, но при этом существует и способ ссылки на месяц и год. В описание типа структурированной переменной должно входить число составляющих его элементов и характеристики их типов.
Если все элементы объекта относятся к одному и тому же типу, то такая структурированная переменная является однородной и может быть представлена в виде некоторого массива.
Массив – это регулярная структура с так называемым случайным доступом, что означает: все компоненты массива однородны, могут выбираться произвольно и являются одинаково доступными.
Для обозначения отдельного элемента массива, как уже упоминалось, к имени массива добавляется список индексов, позволяющий осуществлять доступ к конкретному элементу.
Список индексов– это упорядоченное множество целых чисел или переменных целого типа, однозначно определяющее местоположение отдельного элемента массива. Каждый индекс имеет свой диапазон изменений, называемый обычно граничной парой.
Так, массив A целого типа, упорядоченный по двум измерениям, можно представить как матрицу из n строк и m столбцов:
В этом примере n = 4, m = 8.
Доступ к элементу массива задается списком из двух индексов:
а24или А(2,4) – определяет элемент 2-й строки 4-го столбца;
аijили А(i,j) – определяет элементi-й строкиj-го столбца.
Индекс i имеет диапазон изменений от 1 до 4, а индекс j – соответственно от 1 до 8.
При работе с массивами, особенно большого размера, обычно выборочно изменяют отдельные компоненты. При этом переменная массив рассматривается как совокупность составляющих ее переменных «с индексами» и допускается присваивание значений каждому из компонентов.
Хотя при выборочном присваивании меняется значение отдельного компонента, с точки зрения концепции структурированной переменной следует считать, что меняется все составное значение.
Строковый тип
Данные строкового типа – это последовательность символов переменной длины. Такой тип еще называют типом string. Он во многом похож на одномерный массив символов, однако, в отличие от последнего, количество символов в строке–переменной может меняться от 0 до N, где N – максимальное количество символов в строке.
Описание строкового типа состоит из ключевого слова string, после которого в квадратных скобках указано максимальное количество символов строки данного типа. Это количество может выражаться с помощью целой константы или имени целой константы. Если максимальный размер строки не указан, то он автоматически принимается равным 255 – максимально возможная длина строки. (Существуют еще ASCIIZ-строки, длина которых может достигать 65536 символов, но для работы с такими строками нужна особая директива компилятору). Длина переменной такого типа может динамически изменяться между 1 и значением константы. Символы в строке следует воспринимать как пронумерованные в интервале от 1 до значения константы.
Пример:
type
cities = string [20];
names = string [12].
Переменные типа cities – строкового типа, то есть строки символов, состоящие максимально из 20 символов. Переменные типа names максимально могут состоять из 12 символов. Переменные можно объявить следующим образом:
var
cities: array [1..20] of char;
names:array[1..12]ofchar.
В этом случае говорят, что citiesи names – символьные векторы. Символьные векторы можно рассматривать как строковые переменные, представляющие последовательности постоянной длины. Благодаря такой интерпретации имена символьных векторов и имена их элементов могут использоваться в строковых выражениях там, где могут использоваться имена строковых переменных.
Каждая величина строкового типа занимает в памяти на один байт больше, чем максимальное количество символов в строке данного типа. В дополнительном байте хранится информация о текущей длине строки. Если n – текущая длина строки, то в компоненте 0 помещается номер n последнего символа относительно начала строки.
Тип данных string предназначен для обработки строк. С данными типа string связан целый набор операций. Строки могут выводиться на экран монитора посредством стандартных процедур Write и Writeln и вводиться с помощью стандартных процедур Read и Readln. Следующая программа демонстрирует считывание строки.
program string_test;
var s: string[10];
begin
writeln(‘Задайте несколько символов’);
readln (s);
writeln(s,’ длина:’ , ord(s[0]):5);
end.
В этом примере при вводе можно записать сколько угодно символов, но с помощью readln(s) можно считать максимум 10 символов, так как по описанию переменная s может содержать максимум 10 символов. Прочие символы игнорируются. Считываемых символов может быть и меньше 10.