Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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

Поиск

 

Объявление символьных переменных в Объектном Паскале:

Var a:char; b: widechar;

 

Символьный тип – порядковый:

• Все значения упорядочены, так как имеют номер (код) в таблице кодирования.

• К символьным данным (как к данным любого порядкового типа) применимы встроенные функции:
ORD(сh) – возвращает код символа сh;
CHR(x)
– возвращает символ с кодом x; SUCC(сh) – определение следующего за сh символа по кодовой таблице;
PRED(сh) –определение предшествующего символа).

 

Строковые типы Объектного Паскаля:

• Тип ShortString эквивалентен типу string Турбо Паскаля.

• Данные типа AnsiString (могут содержать до 231 символов типа char.

• Тип WideString соответствует строкам максимальной длины до 230 символов типа widechar.

• Тип String: при {$H+} - AnsiString (по умолчанию), при {$H+} – ShortString.

• Типы AnsiString и WideString - ссылочные, динамические, типы; они имеют 8 служебных байтов (вместо одного нулевого у ShortString): служебные байты содержат длину строки и ссылку на строку в динамической памяти (куче).

• Объектный Паскаль разрешает для определения длины строки использовать только функцию LENGTH, а для установления нового значения длины только процедуру
SetLength(строка, новая_длина_строки)

• Если для обработки строк используются встроенные подпрограммы, то длина строки отслеживается автоматически, иначе программист должен использовать SetLength.

 

Функции, работающие со строками:

CONCAT(S1,S2,...,SN)- функция типа STRING; возвращает строку, представляющую собой сцепление (конкатенацию) строк-параметров S1,S2,...,SN. Конкатенацию строк можно также получить с помощью операции +.

COPY(ST,INDEX,COUNT)- функция типа STRING; копирует из строки ST COUNT символов, начиная с символа с номером INDEX.

LENGTH(ST)- функция типа INTEGER; возвращает длину строки ST.

• P OS(SUBST,ST)- функция типа INTEGER; отыскивает в строке ST первое вхождение подстроки SUBST и возвращает номер позиции, с которой она начинается; если подстрока не найдена, возвращает нуль.

 

Процедуры, работающие со строками:

DELETE(ST,INDEX,COUNT)-удаление COUNT символов из строки ST, начиная с символа с номером INDEX.

INSERT(SUBST, ST, INDEX) - вставка подстроки SUBST в строку ST, начиная с символа с номером INDEX.

STR(X[:WIDTH[:DECIMALS]],ST) -преобразование значения типа REAL или INTEGER в строку символов ST так, как это делает процедура WRITELN перед выводом; параметры WIDTH и DECIMALS, если они присутствуют, задают формат преобразования (WIDTH - длину числа, DECIMALS - длину дробной части; параметр DECIMAL имеет смысл указывать только для вещественных чисел).

VAL(ST, X, CODE) - преобразование строки ST во внутреннее представление целого или вещественного числа Х; параметр CODE содержит нуль, если преобразование прошло успешно, в противном случае он содержит номер символа в строке ST, где обнаружен ошибочный символ; пробелы перед числом в строке ST должны отсутствовать.

 

Шаги обработки строки таблицы:

• выделение смысловых полей -подстрок (с помощью функции COPY);

• преобразование некоторых полей из символьного представления в числовое (с помощью процедуры VAL);

• анализ символьных полей с помощью функции POS;

• подготовка строки выходных данных с помощью STR и CONCAT.

 

 

Билет 28

Переменные сложной структуры. Тип Запись.

 

Тип Запись:

Запись - это переменная, состоящая из фиксированного числа компонент, вообще говоря, разного типа, причем каждая компонента имеет свое имя.

• Компоненты записи также называются полями записи.

• Записи используются для работы с данными, содержащими в себе информацию разного типа (числовую, символьную и т. д.); примеры таких документов: пла­тежные ведомости (фамилии и имена - символьная информация, де­нежные суммы - числовая), карточки больных в поликлинике, библио­течная информация.

Сравнение двух типов: массив и запись:

• Компоненты массива имеют одинаковый тип; компоненты записи могут иметь разный тип (хотя могут быть и однотипны).

• Для обращения к элементу массива надо указать его номер (индекс), при обращении к полю записи указывается его имя.

 

Описание типа запись:

TYPE имя_типа = RECORD

список_1_имен_полей: тип_1;

список_2_имен_полей: тип_2;

...

список_N_имен_полей: тип_N;

END;

Память, занимаемая записью, равна сумме объемов памяти полей (если исключить из рассмотрения особенности, связанные с выравниванием). В любом случае для определения размера памяти записи можно использовать функцию sizeof(переменная_или_тип).

 

Обращение к полю записи:

Имя_записи. Имя_поля

Пример.

VAR C:COMPLEX; D,D1:DATE; B:BOOK;

BEGIN... C.Re:=5; D.Month:=January; B.Author:='Smith';

{*} D1.Day:=6; D1.Month:=June; D1.Year:=1799;{*}..

 

 

Билет 29

Задача обработки данных, предоставленных в табличной форме. Два варианта решения с использованием строк и записей. Сравнение этих вариантов.

 

• Программа, использующая запись, алгоритмически проще, чем программа со строками.

• Платой за упрощение является разрушение структуры таблицы при вводе: строка таблицы распределяется по нескольким строкам экрана монитора компьютера.

 

Вариант 30

 

Файлы в программировании:

Файл - это последовательность однотипных компонент. Число компонент файла не ограничено. После последней компоненты файла стоит специальный код, называемый признаком конца файла; этот код обычно ставится автоматически, без участия программиста.

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

Программное и физическое имена файлов:

• Программное имя - это имя переменной файлового типа.

• Физическое имя - это имя устройства или файла на диске.

• Существуют специальные операторы, устанавливающие соответствие (связывающие) программное и физическое имена файла.

 

Текстовые и двоичные файлы:

Текстовые файлы хранят информацию во внешнем представлении. Они имеют два основных признака: во-первых, их компонентами являются строки символов; во-вторых, эта символьная информация интерпретируется в соответствии с типом вводимых или выводимых переменных. Эти файлы являются обобщением данных на устройстве CON (т.е. вводимых с клавиатуры или выводимых на экран компьютера). Умение работать с текстовыми файлами необходимо даже начинающим программистам, так как на устройстве CON данные существуют малый промежуток времени, а обычно имеется потребность в их длительном хранении.

Двоичный файл - это последовательность байтов; обмен информации между двоичным файлом и переменными программы происходит без преобразования. В Турбо Паскале рассматривается два вида двоичных файлов: типизированные и нетипизированные. В случае типизированных файлов байты файла разбиваются на ячейки в соответствии с типом компонент файла; например, для файла с базовым типом integer каждая пара байтов (для 32-разрядных компьютеров – четверка) рассматривается как целое значение; типизированные файлы хранят данные во внутреннем представлении. Для нетипизированных файлов представление информации безразлично, файл рассматривается как последовательность нулей и единиц.

 

Классический подход к работе с файлами – основные шаги:

1. Объявление файловой переменной – программного имени файла – различно для разных видов файлов

• Текстовый файл:

Var ИмяФайла: textfile; {ТП:text }

• Типизированный файл:

Var ИмяФайла: file of БазовыйТип;

• Нетипизированный файл:

Var ИмяФайла: file;

 

2. Связывание программного и физического имен файлов

AssignFile (ПрограммноеИмя, ФизическоеИмя);{в ТП Assign}

ПрограммноеИмя – переменная, описанная как файл;

ФизическоеИмя – имя файла на диске (полное) или имя устройства.

После оператора AssignFile в программе используется только программное имя файла.

Пример:

Var f: text;

Begin …

Assign(f, ‘d:\student\a.txt‘);

{Далее используется только f}

 

3. Открытие файла (для чтения или для записи)

Reset (ИмяФайла); {открытие файла для чтения}

Rewrite (ИмяФайла); {открытие файла для записи}

Пример:

Var f: text;

Begin …

Assign(f, ‘d:\student\a.txt‘);

Reset(f); {или для записи Rewrite(f)}…

 

4. Чтение из файла или запись в файл – различно для разных видов файлов

Пока для примера рассмотрим чтение/запись для текстовых файлов:

Read (ИмяФайла, СписокВвода);

Write (ИмяФайла, СписокВывода);

Пример: Read(n,a,b); Write(‘s=‘, s);{полная аналогия консольному вводу-выводу}

Также можно использовать Readln и Writeln.

 

Замечание. При работе с файлами используется функция EOF(ИмяФайла). EOF возвращает значение True, если считан признак конца файла, и значение False в противном случае.

EOF – сокр. от End Of File

 

Закрытие файла

CloseFile(ИмяФайла); {для ТП - Close }

Закрытие файла предполагает следующие действия:

1. Сохранение изменений в файле.

2. Перерегистрация файла в каталоге.

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

Открытие файла для чтения:

1. Поиск файла с заданным физическим именем; если не найден, то сообщение об ошибке.

2. Указатель файла устанавливается на первую компоненту.

3. Компонента, на которой стоит указатель, считывается в буфер.

4. Если считан признак конца файла, то функция EOF устанавливается в значение True, иначе – в значение False.

 

Открытие файла для записи:

1. Поиск файла с заданным физическим именем; если файл не найден, то создается новый файл

2. Содержимое файла очищается.

3. Указатель файла устанавливается на конец файла (после последней компоненты).

4. Функция EOF устанавливается в значение True.

 

Открытие файла для дополнения:

1. Поиск файла с заданным физическим именем; если не найден, то сообщение об ошибке.

2. Указатель файла устанавливается на конец файла (после последней компоненты).

3. Функция EOF устанавливается в значение True.

 

 

Билет 31

Динамические данные.

 

Динамические данные:

• описываются не данные, а их адреса (указатели);

• распределяются и уничтожаются в памяти на этапе выполнения программы по специальным командам;

• место в памяти – динамическая память (англ. куча – heap);

• время жизни и область действия указателей определяется как для обычных (локальных или глобальных) переменных

 

Описание динамического массива:

Var имя_массива: Array of Array of…Array of тип_элемента;

Ключевые слова Array of записываются в описании столько раз, сколько индексов у массива (т. е. какова его размерность).

По существу объявленное имя_массива является указателем на массив.

 



Поделиться:


Последнее изменение этой страницы: 2016-09-05; просмотров: 459; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.242.20 (0.007 с.)