Скачать презентацию Типы данных в языке PASCAL Руководитель Старший преподаватель Скачать презентацию Типы данных в языке PASCAL Руководитель Старший преподаватель

Типы данных в языке PASCAL.ppt

  • Количество слайдов: 65

Типы данных в языке PASCAL Руководитель: Старший преподаватель Леонов Ю. А. Выполнила: студентка Пигарева Типы данных в языке PASCAL Руководитель: Старший преподаватель Леонов Ю. А. Выполнила: студентка Пигарева О. В. , гр. 09 САПР

Содержание 1. Представление данных в ЭВМ. 2. Типы данных. 3. Классификация типов данных. 4. Содержание 1. Представление данных в ЭВМ. 2. Типы данных. 3. Классификация типов данных. 4. Стандартные типы данных. 4. 1. Целочисленные типы данных: § § Представление целых чисел в ЭВМ; Пример программы с использованием целочисленных типов данных. . 4. 2. Вещественные типы данных: § § § Представление вещественных чисел в ЭВМ; Кодирование вещественного числа; Пример программы с использованием вещественных типов данных. 4. 3. Символьный тип данных: § § Специальные символы; Пример программы с использованием символьного типа данных. 4. 4. Строковые типы данных: § § § Объявление строкового типа; Процедуры и функции использующиеся для работы со строковыми; типами данных; Пример программы с использованием строкового типа данных.

Содержание 4. 5. Логические типы данных: § § § Условие; Операторы сравнения; Пример программы Содержание 4. 5. Логические типы данных: § § § Условие; Операторы сравнения; Пример программы с использованием логических типов данных. 4. 6. Указательный тип данных: § § § Типизированные; Нетипизированные; Пример программы с использованием указательного типа данных. 4. 7. Текстовый(файловый) тип данных: § § 5. Объявление текстового типа; Операторы чтения и записи для текстовых файлов; Процедуры и функции использующиеся для работы с текстовым типом данных; Пример программы с использованием текстового типа. Пользовательские типы данных. 5. 1. Массивы: § § Объявление массива; Графическое представление одномерного массива; Доступ к элементам массива; Пример программы с использованием типа данных массив. 5. 2. Записи: § § Объявление записи; Доступ к полям записи; представление типа запись в ЭВМ; пример программы с использованием типа запись.

Содержание 5. 3. Множества: § Физическая структура множества; § Операции, применяемые к множествам; § Содержание 5. 3. Множества: § Физическая структура множества; § Операции, применяемые к множествам; § Пример программы с исипользованием типа данных множество. 5. 4. Файлы: § Объявление файла; § Процедуры и функции для работы с файлами; § Пример программы с исипользованием типа данных файл. 5. 5. Перечисляемый тип данных. 5. 7. Интервальный (диапазонный) тип данных. Дополнительно. Список используемой литературы.

Представление данных в ЭВМ Информация, хранящаяся в памяти ЭВМ, и доступная для обработки, состоит Представление данных в ЭВМ Информация, хранящаяся в памяти ЭВМ, и доступная для обработки, состоит из данных. Данные разделяются по смысловому содержанию. Множество типов данных на языке Pascal можно разделить на: § стандартные (предопределенные типы) § пользовательские (типы, определяемые пользователем).

Типы данных Стандартные Имена таких типов являются предопределенными идентификаторами и доступны в любой точке Типы данных Стандартные Имена таких типов являются предопределенными идентификаторами и доступны в любой точке программы (объявлены в модуле System) Пользовательские Дополнительные абстрактные типы, характеристики которых можно определять самому. Использование таких типов позволяет точнее и яснее описывать поставленную задачу

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

Стандартные типы данных Стандартные типы данных

Целочисленные типы данных В языке Pascal определены пять целочисленных типов: shortint, integer, longint, byte Целочисленные типы данных В языке Pascal определены пять целочисленных типов: shortint, integer, longint, byte и word. Тип Диапазон возможных значений Размер памяти для хранения данных (в байтах) Тип целочисленного типа shortint -128. . 127 1 знаковый integer -32768. . 32767 2 знаковый longint -2147483648. . 2147483647 4 знаковый byte 0. . 255 1 беззнаковый word 0. . 65535 2 беззнаковый

Представление целых чисел в ЭВМ Множество целых чисел, представленных в памяти ЭВМ, ограничено. Диапазон Представление целых чисел в ЭВМ Множество целых чисел, представленных в памяти ЭВМ, ограничено. Диапазон значений зависит от размера ячеек памяти, используемых для их хранения. Для целых чисел существуют два представления: беззнаковое Диапазон значений целых беззнаковых чисел (только положительные): от 0 до 2 к 1 для 16 разрядной ячейки от 0 до 65535 для 8 разрядной ячейки от 0 до 255 со знаком Диапазон значений целых чисел со знаком (и отрицательные, и положительные в равном количестве): от 2 к 1 до 2 к 1 1 для 16 разрядной ячейки от 32768 до 32767 для 8 разрядной ячейки от 128 до 127

Пример программы с использованием целочисленных типов данных Program Primer; Var A, B, C: Integer; Пример программы с использованием целочисленных типов данных Program Primer; Var A, B, C: Integer; {переменные А, B, C целого типа integer} Begin A: =5; B: =8; C: =A+B; {присваиваем А значение 5, В-8, а С равна сумме А и В} Writeln ( A+B= , С); {выводим на экран значение переменной С} End. {закрываем программу}

Вещественные типы данных Определяют данные, которые реализуются подмножеством действительных чисел, допустимых в данной ЭВМ. Вещественные типы данных Определяют данные, которые реализуются подмножеством действительных чисел, допустимых в данной ЭВМ. В языке Pascal определены следующие типы: Тип Диапазон значений Значащее количество цифр мантиссы Real 2. 9*10 -39… 1. 7*1038 11 -12 6 Single 1. 5*10 -45… 3. 4*1038 7 -8 4 Double 5. 0*10 -324… 1. 7*10308 15 -16 8 Comp -9. 2*1018… 9. 2*1018 19 -20 8 Extended 3. 4*104932… 1. 1*104932 19 -20 10 Требуемая память (байт)

Представление вещественных чисел в ЭВМ Большинство современных математических сопроцессоров для представления вещественных чисел используют Представление вещественных чисел в ЭВМ Большинство современных математических сопроцессоров для представления вещественных чисел используют стандарт IEEE 754 -85. Согласно ему вещественное число R представляется в виде произведения мантиссы M на основание системы счисления P в некоторой целой степени E которую называют порядком или экспонентой: R=( 1)S*PE*M, где s – знаковый бит числа. Например, числа 178, 625. Чтобы представить это число его нужно нормализовать: 1, 78625 E 102 = 1, 0110010101 E 2111 В формате вещественного числа одинарной точности оно будет представлено так: 3 1 3 0 2 9 2 8 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 9 8 7 6 5 4 3 2 1 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 з н а к Смещенная экспонента 111+01111111 Дробная часть мантиссы 1, 0110010101

Основные способы кодирования вещественных чисел Стандарт IEEE 754 определяет три основных способа кодирования вещественных Основные способы кодирования вещественных чисел Стандарт IEEE 754 определяет три основных способа кодирования вещественных чисел: Тип одинарной точности (single precision) - 32 бит двойной точности (double precision) 64 бит расширенной точности (extended precision) 80 бит Двоичное представление Диапазон значений 31 1, 18· 10 -38. . 3, 40· 1038 S 22 E 0 M E-8 бит, М-23 бита 63 2, 23· 10 -308. . 1, 79· 10308 S 51 E 0 M E-11 бит, М-52 бита 79 3, 37· 10 -4932. . 1, 18· 104392 S 63 E 0 M E-15 бит, М-64 бита

Пример программы с использованием вещественных типов данных Program Primer; Var A: integer; {переменная А Пример программы с использованием вещественных типов данных Program Primer; Var A: integer; {переменная А целого типа} B: integer; C: real; {переменная С вещественного типа} Begin A: =24; B: =13; C: =A/B; { А присваиваем значение 24, В – 13, С – А делить на В} Writeln ( ‘Частное от деления А на В равно’, С); { выводим на экран} End.

Символьный тип данных Описание: идентификатор Char; Объявление функции char: Function Chr ( Код. Символа: Символьный тип данных Описание: идентификатор Char; Объявление функции char: Function Chr ( Код. Символа: byte): char; {возвращает символ с указанным кодом} Диапазон значений: значением переменной этого типа может быть любой символ. Каждому символу алфавита соответствует индивидуальный числовой код от 0 до 255. Код от 0 до 255 в памяти компьютера задает один из 256 возможных символов таблицы ASCII. Например: символ "1" имеет ASCII код 49, следовательно машинное представление будет выглядеть следующим образом: 00110001

Специальные символы Символы с кодами от 7 до 10 и 13 являются специальными и Специальные символы Символы с кодами от 7 до 10 и 13 являются специальными и поэтому при выводе они заменены на пробелы. Код Символ Действие 7 Bell (“Звонок”) Звук из динамика 8 Backspace (“Забой”) Удаляет символ, который находиться перед курсором 9 TAB (“Табуляция”) Переводит курсор в след. позицию строки, номер которой кратен восьми 10 LF (“Перевод строки”) Переводит курсор в след. строку 13 CR (“Возврат каретки”) Переводит курсор в начало строки

Пример программы с использованием символьного типа данных Program Primer; Var S 1, S 2, Пример программы с использованием символьного типа данных Program Primer; Var S 1, S 2, S 3, S 4, S 5, S 6: char; { переменные символьного типа} Begin S 1: =‘P’; { переменной S 1 присваиваем значение Р} S 2: =‘A’; S 3: =‘S’; S 4: =‘C’; S 5: =‘A’; S 6: =‘L’; Writeln(S 1+S 2+S 3+S 4+S 5+S 6); Readln; End. По окончании на экране появится надпись: «PASCAL»

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

Объявление строкового типа Строку можно объявить двумя способами p. char string Имя: string; Имя: Объявление строкового типа Строку можно объявить двумя способами p. char string Имя: string; Имя: string [длина]; Если в объявлении длина строки не указана, то по умолчанию длина строки устанавливается равной 255 символам, т. е. объявления: Stroka: string [255]; Stroka: string ; эквивалентны.

Процедуры и функции использующиеся для работы со строковыми типами данных • Concat { возвращает Процедуры и функции использующиеся для работы со строковыми типами данных • Concat { возвращает строку, являющуюся объединением строк, указанных при вызове функции} Синтаксис: Function Concat (Строка 1 [ , Cтрока 2, … , Строка. N] : string) : string; • Copy { возвращает подстроку; параметр “строка” задает строку, параметры Номер. Символа и длина – начало и длину подстроки} Синтаксис: Function Copy (Строка: string; Hомер. Символа : integer; длина: integer : string;

Процедуры и функции использующиеся для работы со строковыми типами данных • Length { возвращает Процедуры и функции использующиеся для работы со строковыми типами данных • Length { возвращает значение, равное количеству символов строки} Синтаксис: Function Length (Строка: string) : integer; • Pos { возвращает позицию (номер символа) подстроки в строке} Синтаксис: Function Pos (Строка: string; подстрока: string) : byte; • Delete { удаляет из строки подстроку; параметр Строка задает строку, параметры Номер. Символа и длина – начало и длину удаляемой строки } Синтаксис: Function Delete ( var Строка: string; Hомер. Символа : integer; длина: integer);

Пример программы с использованием строкового типа данных Program Primer; Var a: string; b: char; Пример программы с использованием строкового типа данных Program Primer; Var a: string; b: char; Begin b: = ‘L’; a: = ‘PASCA’; a: = a + b; Writeln ( a ); End. { переменная а строкового типа } {переменная b символьного типа } { b присваиваем значение “L” } { а присваиваем значение “PASCA”} { a равно сумме a и b } { выводим на экран значение а } { при завершении программы на экране появиться надпись «PASCAL» }

Логические типы данных К логическим типам данным относятся: • Bytebool; • Boolean; • Wordbool; Логические типы данных К логическим типам данным относятся: • Bytebool; • Boolean; • Wordbool; • Longbool; Значениями логического типа может быть одна из предварительно объявленных констант: • false (ложь); или • true (истина); Над логическими типами возможны операции булевой алгебры: • not (отрицание); • or (логическое ИЛИ); • and (логическое И); • xor (исключающее ИЛИ);

Условие – это выражение логического типа (Boolean). Различают простое и сложное условия. В общем Условие – это выражение логического типа (Boolean). Различают простое и сложное условия. В общем виде простое условие записывается в виде: Оп 1 Операция Оп 2, Оп 1, Оп 2 – операнды условия (переменная, константа, выражение или функция), Операция – операция отношения. Из простых условий (выражений логического типа) при помощи логических операций and, or и not, можно строить сложные условия. Например, применение логических операций and и or к операндам логического типа a и b: a b a and b a or b FALSE TRUE FALSE TRUE TRUE

Операторы сравнения Операция Условие = Равно TRUE, если Оп 1 равен Оп 2, иначе Операторы сравнения Операция Условие = Равно TRUE, если Оп 1 равен Оп 2, иначе FALSE <> Не равно TRUE, если Оп 1 не равен Оп 2, иначе FALSE > Больше TRUE, если Оп 1 больше Оп 2, иначе FALSE < Меньше TRUE, если Оп 1 меньше Оп 2, иначе FALSE >= Больше либо равно TRUE, если Оп 1 больше или равен Оп 2, иначе FALSE <= Меньше либо равно TRUE, если Оп 1 меньше или равен Оп 2, иначе FALSE где Оп 1 и Оп 2 – операнды условия (переменная, константа, выражение или функция), TRUE (“истина”) и FALSE (“ ложь”) – значения.

Пример программы с использованием логических типов данных Program Primer; Var B 1, B 2, Пример программы с использованием логических типов данных Program Primer; Var B 1, B 2, B 3: boolean; { переменные B 1, B 2, B 3 логического типа данных} Begin B 1: =true; { переменной В 1 присваиваем значение True} B 2: =false; {переменной В 2 присваиваем значение False} Writeln ( B 1= , B 1, B 2= , B 2); { выводим на экран значение В 1 и В 2} B 3: =B 1 and B 2; { В 3 присваиваем В 1 и В 2} Writeln ( B 1 and B 2 =, B 3); {выводим на экран В 1 и В 2} B 3: =B 1 or B 2; { В 3 присваиваем значение В 1 или В 2} Writeln ( B 1 or B 2 =, B 3); {выводим на экран В 1 и В 2} Writeln ( Press enter to continue); Readln; End.

Указательный тип данных. Тип указателя представляет собой адрес ячейки памяти. Физическое представление адреса существенно Указательный тип данных. Тип указателя представляет собой адрес ячейки памяти. Физическое представление адреса существенно зависит от аппаратной архитектуры вычислительной системы. 1) 2) 3) Полный физический адрес получается следующим образом: сегментная часть адреса сдвигается на 4 разряда влево; освободившиеся слева разряды заполняются нулями; к полученному таким образом коду прибавляется смещение.

Типизированные указатели Типизированными называются указатели, содержащие адрес области памяти, в которой хранится значение заранее Типизированные указатели Типизированными называются указатели, содержащие адрес области памяти, в которой хранится значение заранее определенного типа. Для объявления типизированного указателя используется знак “^", расположенный перед соответствующим типом. Можно привести следующие примеры объявления типизированных указателей: type p. Int = ^integer; { указательный тип данных на целочисленные значения} p. Real = ^геаl; {указательный тип данных на вещественные значения} var PI, Р 2: p. Int; РЗ: p. Real; Р 4: ^byte; {указательный тип данных на значение типа byte}

Нетипизированные указатели В языке Pascal можно объявлять указатели, не связанные с конкретным типом данных. Нетипизированные указатели В языке Pascal можно объявлять указатели, не связанные с конкретным типом данных. Для этого служит стандартный тип pointer. С помощью нетипизированных указателей удобно динамически размещать данные, у которых меняется структура и тип в процессе выполнения программы. Переменные типа pointer не могут быть разыменованы. Если после имени нетипизированного указателя ввести символ “^", то при компиляции программы будет выдано сообщение об ошибке.

Пример программы с использованием указательного типа данных Program Primer; Var a: char; { переменная Пример программы с использованием указательного типа данных Program Primer; Var a: char; { переменная а символьного типа } B: pointer; { переменная В типа указатель } Begin B: =addr(a); If (B=$a) then { если В равно $a } Writeln ( ‘равно’ ) { выводим на экран “равно” } Else writeln ( ‘не равно’ ); { в противном случае “ не равно”}

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

Объявление файлового типа типизированный файл нетипизированный файл текстовый файл Var F: file of тип Объявление файлового типа типизированный файл нетипизированный файл текстовый файл Var F: file of тип данных Var F: file; Var F: text; Тип данных может быть любым кроме файлового или опирающегося на файл. Максимальная свобода при работе с файлами осуществляется при данном виде файла. Данный вид файла значит упрощенную работу с текстовой информацией. Содержит символы, строки, признаки конца строк. После того как описана файловая переменная необходимо выполнить связь логического файла с физическим: Assign (файловая переменная, полное имя физического файла); Далее обязательным является открытие файла: • Reset(F) – открывает существующий файл для чтения и записи информации. • Rewrite(F) – открывает файл для записи информации. • Append(F) – открывает файл для добавления текстовой информации (только для текстового файла) После открытия и совершения требуемых операций с файлами, его необходимо закрыть с помощью оператора close.

Операторы чтения и записи для текстовых файлов • Read(F , V 1 [, V Операторы чтения и записи для текстовых файлов • Read(F , V 1 [, V 2, . . . , Vn]) или для текстовых файлов Read([ var F: Text; ]V 1 [, V 2, . . . , Vn]); считывает одно или более значений из файла в одну или более переменных. • Readln([ var F: Text; ]V 1 [, V 2, . . . , Vn]); определена только для текстовых файлов; делает то же, что и read, и выполняет пропуск до начала следующей строки текстового файла. • Write(F, V 1 [, V 2, . . . , Vn]) или для текстовых файлов Write([ var F: Text; ] P 1[, P 2, . . . , Pn]); записывает в файл одно или более значе ний. • Writeln([ var F: Text; ] P 1[, P 2, . . . , Pn]); определена только для текстовых файлов; делает то же, что write, но затем записывает в текстовый файл символ конца строки.

Процедуры и функции использующиеся для работы с текстовым типом данных • EOLn(имя_файловой_переменной) {возвращает значение Процедуры и функции использующиеся для работы с текстовым типом данных • EOLn(имя_файловой_переменной) {возвращает значение true, если достигнут конец строки, и значение false, если конец строки не достигнут. Данная функция применяется, если файл читается посимвольно и необходимо проверить достижение конца строки} • Append(имя_файловой_переменной) {служит для специального открытия текстовых файлов. Она применима к уже существующим физическим файлам и открывает их для добавления информации в конец файла. } • File. Pos(имя_файловой_переменной) {возвращает номер текущей записи файла в диапазоне от нуля до n 1, где n – количество компонентов, записанных в файле. } • File. Size(имя_файловой_переменной) {возвращает число, равное реальному количеству записей в файле (оно на единицу больше номера последней записи). } • Seek(имя_файловой_переменной, номер_позиции) {Перемемещает указатель на запись с определённым номером } • Truncate(имя_файловой_переменной) {позволяет удалить из файла все записи, начиная с текущей и заканчивая последней }

Пример программы с использованием текстового типа Program Primer; Var F: file of integer; { Пример программы с использованием текстового типа Program Primer; Var F: file of integer; { описание файловой переменной} Dig: integer; Begin Assign(F, ‘C: Documents and Settingsfile. txt’); {связь логического файла с физическим} Rewrite(F); { открытие файла для записи информации} Dig: =5; Write(F, Dig); Seek(F, 0) { перемещение указателя в файле в начало} Reаd(F, Dig); Writeln(‘C: Documents and Settingsfile. txt’, Dig ); Close(F); { закрытие файла} End.

Пользовательские типы данных Пользовательские типы данных

Массивы Массив такая структура данных, которая характеризуется: • фиксированным набором элементов одного и того Массивы Массив такая структура данных, которая характеризуется: • фиксированным набором элементов одного и того же типа; • каждый элемент имеет уникальный набор значений индексов; Определяется именем (идентификатором) и количеством размерностей (координат), необходимых для указания местонахождения требуемого элемента массива. Имя массива является единым для всех его элементов; • индексы массива порядкового типа данных; • элементы массива могут быть любого типа данных;

Объявление массива Массив должен быть объявлен в разделе описания переменных. Объявление одномерного массива: <Имя>: Объявление массива Массив должен быть объявлен в разделе описания переменных. Объявление одномерного массива: <Имя>: array [<начальный_индекс>. . <конечный_индекс>] of <тип>; <Имя> – имя массива; Array – ключевое слово, обозначающее, что объявляемая переменная является массивом; <Начальный_индекс> и <конечный_индекс> – данные, порядкового типа, определяющие диапазон изменения индексов (номеров) элементов массива; <Тип> – тип элементов массива. Объявление двумерного массива: Имя: array [начальный_индекс1. . конечный_индекс1, начальный_индекс2. . конечный_индекс2 ] of тип.

Графическое представление одномерного массива а Номер(индекс) элемента Имя массива 1 2 3 4 5 Графическое представление одномерного массива а Номер(индекс) элемента Имя массива 1 2 3 4 5 Элемент массива 6 7 Массив

Доступ к элементам массива Чтобы получить доступ к элементу массива, надо указать имя массива Доступ к элементам массива Чтобы получить доступ к элементу массива, надо указать имя массива и индекс элемента, заключив его в квадратные скобки. Например: 1. одномерный массив A: array [1. . 2] of integer; { объявление массива целых чисел } A [1]: =5; { в массив А в ячейку с индексом 1 записано число 5 } B: array [‘a’. . ’z’] of byte; {объявление массива целых чисел} B [‘k’]: =7; { в массив В в ячейку с индексом k записано число 7 } 2. двумерный массив C: array [‘s’. . ’x’, true. . false] of char; { объявление массива символьного типа } C [‘t’, true]: =‘q’; { в массив в ячейку с индексом ‘t’, true записан символ ‘q’ } A [2, 1] 1 1 2 3

Пример программы с использованием типа данных массив Program Primer; Var A: array [1. . Пример программы с использованием типа данных массив Program Primer; Var A: array [1. . 2] of integer; { массив с элементами целого типа} i: integer; Begin A[1]: =24; A[2]: =13; For i: =1 to 2 do Write (A[i]; 4); End.

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

Объявление записи В общем виде объявление типа «запись» выглядит так: Имя = record Поле_1: Объявление записи В общем виде объявление типа «запись» выглядит так: Имя = record Поле_1: Тип_1; Поле_2: Тип_2; … Поле_k: Тип_k; где • Имя – имя типа; • Record – слово языка Pascal, означающее, что далее следует объявление компонентов (полей) записи; • Поле_i: Тип_i – имя и тип i го компонента (поля) записи. После объявления типа записи можно объявить запись (переменную запись), например: Student: TStudent; Book: TBook.

Доступ к полям записи Чтобы программе получить доступ к полю записи, надо указать запись Доступ к полям записи Чтобы программе получить доступ к полю записи, надо указать запись (имя переменной записи) и имя поля, отделив имя поля от имени переменной записи точкой. Например, инструкции: • Writeln (book. Author); • Writeln (book. Title); • Writeln (book. Price: 6: 2); выводят на экран значения полей Author, Title и Price записи book.

Представление типа запись в ЭВМ Запись в памяти ЭВМ может быть представлена: а) в Представление типа запись в ЭВМ Запись в памяти ЭВМ может быть представлена: а) в виде последовательности полей, занимающих непрерывную область памяти. При такой организации достаточно иметь один указатель на начало области и смещение относительно начала. Это дает экономию памяти, но лишнюю трату времени на вычисление адресов полей записи. Начало области +0 +1 +29 +37 +38 +39 24. 05 Иванов В. В. АП 54 4 5 5

Представление типа запись в ЭВМ б) в виде связного списка с указателями на значения Представление типа запись в ЭВМ б) в виде связного списка с указателями на значения полей записи. При такой организации имеет место быстрое обращение к элементам, но очень неэкономичный расход памяти для хранения. Дескриптор записи Rec Student Byte 1 Num String 20 Name String 8 Fac String 8 Group Byte 1 Math Byte 1 Comp Byte 1 Lang 7 Указатели значений полей записи

Пример программы с использованием типа запись Program Primer; Var rec: record; Num: byte; {личный Пример программы с использованием типа запись Program Primer; Var rec: record; Num: byte; {личный номер студента} Name: string [20] { Ф. И. О. } Fac, group: string [7]; {факультет, группа} Math, comp, lang: byte; {оценки по математике, вычислительной технике, английскому языку} End.

Множества Множество такая структура, которая представляет собой набор неповторяющихся данных одного и того же Множества Множество такая структура, которая представляет собой набор неповторяющихся данных одного и того же типа. Множество может принимать все значения базового типа. Базовый тип не должен превышать 256 возможных значений. Поэтому базовым типом множества могут быть byte, char и производные от них типы. Объявление множества: Имя : set of тип данных; Например: Letters: set of char; { множество символов}

Физическая структура множества Множество в памяти хранится как массив битов, в котором каждый бит Физическая структура множества Множество в памяти хранится как массив битов, в котором каждый бит указывает является ли элемент принадлежащим объявленному множеству или нет. Число байтов, выделяемых для данных типа множество, вычисляется по формуле: Byte. Size = (max div 8) (min div 8) + 1, где max и min верхняя и нижняя границы базового типа данного множества. Номер байта для конкретного элемента Е вычисляется по формуле: Byte. Number = (E div 8) (min div 8), Номер бита внутри этого байта по формуле: Bit. Number = E mod 8

Операции, применяемые к множествам «=» Равно. Два множества считаются равными, если они не отличаются Операции, применяемые к множествам «=» Равно. Два множества считаются равными, если они не отличаются ни количеством символов, ни элементов. [1, 2, 3]=[1, 2, 3] «<>» Не равно. Два множества считаются неравными, если отличаются хотя бы одним элементом или их количеством. [1, 2, 3]<>[1, 2, 4, ] «>=» Больше или равно. Если все элементы множества Б содержатся в множестве А, тогда результатом выражения А>=Б будет True. [1, 2, 3, 4, 5] >=[1, 2, 4, ] True

Операции, применяемые к множествам «<=» Меньше или равно. Если все элементы множества А содержатся Операции, применяемые к множествам «<=» Меньше или равно. Если все элементы множества А содержатся в множестве В, тогда результатом выражения А<=В будет True. [1, 2, 3] >=[1, 2, 3, 4, ] True «+» Объединением двух множеств является третье множество, содержащее элементы обоих множеств: А Б [1, 2, 3]+[4, 5]=[1, 2, 3, 4, 5] «*» Пересечением двух множеств является третье множество, содержащее элементы, входящие в оба множества одновременно: [1, 2, 3]*[3, 4]=[3]. А Б

Операции, применяемые к множествам «-» Разностью двух множеств является третье множество, которое содер жит Операции, применяемые к множествам «-» Разностью двух множеств является третье множество, которое содер жит элементы первого множества, не входящие во второе множество. А Б [1, 2, 3] -[3, 4, 5] = [1, 2] «in» Используется для проверки принадлежности какого нибудь значения указанному множеству. Оператор in часто позволяет значительно упростить сложные условные выражения. Например, следующий оператор if if ('(i = 0) or (i = 1) or (i = 2)) and ((j= 3) or (j = 4) or (j = 5 ) ). then. . . можно переписать в виде if (i in [0. . 2]) and (j in [3. . 5]) then. . .

Пример программы с использованием типа данных множество Program Primer; Var S 1, S 2: Пример программы с использованием типа данных множество Program Primer; Var S 1, S 2: string; i: byte; Letters 1, Letters 2: set of char; { множество символов} Begin Write (‘введите первую строку: ’); Readln (s 1); Write (‘введите вторую строку: ’); Readln (s 2); For i: =1 to Lenght (S 1) do Letters 1: = Letters 1+[S 1 [i] ]; For i: =1 to Ord (S 2[0]) do Letters 2: = Letters 2+[S 2 [i] ]; Writeln (‘символы, входящие в обе строки: ’); Letters 1: =Letters 1*Letters 2; For i=0 to 255 do If Chr (i) in Letters 1 then write (Chr(i): 2); End.

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

Объявление файловой переменной В общем виде объявление файла выглядит так: Имя: file of Тип. Объявление файловой переменной В общем виде объявление файла выглядит так: Имя: file of Тип. Элементов; { в объявлении файла указывается тип элементов файла }. Примеры объявления файлов: • f: file of char; • f: file of real; • f: file of integer; { файл символов } { файл вещественных чисел } { файл целых чисел } Файл, компонентами которого являются символы ( сhar), называется текстовым. Описание file of char можно заменить на text, то есть объявление f: text ; эквивалентны. f: file of char ;

Процедуры и функции для работы с файлами • Append Procedure Append ( var F: Процедуры и функции для работы с файлами • Append Procedure Append ( var F: text); { открывает существующий файл, связанный с файловой переменной F, в режиме добавления в конец файла (применяется только для текстового файла) }. • Reset Procedure Reset ( var F [ : file; Размер. Записи: word]); { открывает существующий файл }. • Rewrite Function Rewrite( var F [ : file; Размер. Записи: word]); { создает и открывает файл с именем, связанным с файловой переменной F }. • Assign Procedure Assign ( var F; Имя. Файла: string); { связывает файловую переменную А с конкретным файлом}.

Процедуры и функции для работы с файлами • Erase Procedure Erase ( var F); Процедуры и функции для работы с файлами • Erase Procedure Erase ( var F); { уничтожает файл, имя которого связано с файловой переменной F}. • IOResult Function IOResult: string ; { возвращает код результата последней выполненной операции файлового ввода/вывода}. • Close Procedure Close ( var F); { закрывает файл, связанный с переменной F}. • EOF Function EOF ( var F): boolean; { проверяет, не достигнут ли конец файла (end of file) при чтении из файла, связанного с файловой переменной F }.

Пример программы с использованием типа данных множество Program Primer; Var F: file of integer; Пример программы с использованием типа данных множество Program Primer; Var F: file of integer; {объявление файла целых чисел} k: integer; {объявление переменной целого типа} a: integer; Begin a: =56; Assign( F, ’C: Temp/1. hpo’); {связь переменной F c файлом C: Temp/1. hpo} Reset (F); {открытие файла F} Write (F, a); Close (F); {закрытие файла FI} Reset (F); {открытие файла F} Read (F, k); Writeln(‘Содержимое файла: ’, k); {выводим на экран содержимое файла F} End.

Перечисляемый тип данных Перечисляемый тип задается перечислением тех значений, которые он может получать. Каждое Перечисляемый тип данных Перечисляемый тип задается перечислением тех значений, которые он может получать. Каждое значение именуется некоторым идентификатором и располагается в списке, обрамленном круглыми скобками, например: type colors = (red, white, blue); Соответствие между значениями перечисляемого типа и порядковыми номерами этих значений устанавливается порядком перечисления: первое значение в списке получает порядковый номер 0, второе 1 и т. д. Перечисляемый тип задает некоторое подмножество целого типа word.

Интервальный (диапазонный) тип данных Тип диапазон есть подмножество своего базового типа, в качестве которого Интервальный (диапазонный) тип данных Тип диапазон есть подмножество своего базового типа, в качестве которого может выступать любой порядковый тип, кроме типа диапазона. Тип-диапазон задается границами своих значений внутри базового типа: <мин. знач. >. . <макс. знач. > Здесь <мин. знач. > минимальное значение типа диапазона; <макс. знач. > максимальное его значение. Тип диапазон не обязательно описывать в разделе type, а можно указывать непосредственно при объявлении переменной.

Интервальный (диапазонный) тип данных При определении типа-диапазона нужно руководствоваться следующими правилами: • два символа Интервальный (диапазонный) тип данных При определении типа-диапазона нужно руководствоваться следующими правилами: • два символа “. . ” рассматриваются как один символ, поэтому между ними недопустимы пробелы; левая граница диапазона не должна превышать его правую границу. • Тип диапазон наследует все свойства своего базового типа, но с ограничениями, связанными с его меньшей мощностью. В частности, если определена переменная. • В стандартную библиотеку Pascal включены две функции, поддерживающие работу с типами диапазонами: High(х) возвращает максимальное значение типа диапазона, к которому принадлежит переменная х; Low (х) возвращает минимальное значение типа диапазона.

Вопросы для закрепления материала 1. Как объявляются одномерные массивы? 2. Какой вид имеет структура Вопросы для закрепления материала 1. Как объявляются одномерные массивы? 2. Какой вид имеет структура описания процедура и функция? 3. Что называют файлом? 4. В чем разница между физическим и логическим файлом? 5. Назовите подпрограммы для работы со строками длиной до 255 символов. 6. Какого порядка действий необходимо придерживаться при работе с файлами? 7. Как прочитать всю информацию из текстового файла? 8. Как добавить информацию в текстовый файл? 9. Какие типы данных вы знаете? 10. Чем пользовательский тип данных отличается от стандартного?

Вопросы для закрепления материала 11. Какие существуют функции для работы с файлами? 12. Какие Вопросы для закрепления материала 11. Какие существуют функции для работы с файлами? 12. Какие существуют процедуры для работы с файлами? 13. Какие операции сравнения вы знаете? 14. Какие существуют специальные символы? 15. Указатели – это… (определение). 16. В чем заключается действие функции Concat ? 17. Как объявляются двумерные массивы? 18. Какого типа данных могут быть элементы массива? 19. Какого типа данных индексы массива? 20. Как объявляется строковый тип данных? 21. Как выполняется доступ к элементам массива?

Список используемой литературы 1. Немнюгин, С. А. Turbo Pascal: программирование на языке высокого уровня Список используемой литературы 1. Немнюгин, С. А. Turbo Pascal: программирование на языке высокого уровня / С. А. Немнюгин. – 2 е изд. – СПб. : Питер, 2006. – 544 с. 2. Немнюгин, С. А. Turbo Pascal: практикум / С. А. Немнюгин. – 2 е изд. – СПб. : Питер, 2006. – 272 с. 3. Фаронов, В. В. Turbo Pascal: учебное пособие / В. В. Фаронов. – М. : Изд. : ОМД Групп, 2007. – 368 с. 4. Марченко, А. И. Программирование в среде Turbo Pascal 7. 0. / А. И. Марченко, Л. А. Марченко. – М. : Бином Универсал, К. : ЮНИОР, 2007. – 496 с. 5. Культин, Н. Б. Turbo Pascal в задачах и примерах / Н. Б. Культин. – СПб. : БХВ Петербург, 2007. – 256 с. 6. Коффман, Э. М. Turbo Pascal / Э. М. Коффман. – 5 е изд. – М. : Вильямс, 2005. – 896 с.