Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Запись Паскаля – структурированный комбинированный тип данных, состоящий из фиксированного числа компонент (полей) разного типа.
Например, анкетные данные о студенте вуза могут быть представлены в виде информационной структуры Такая структура называется двухуровневым деревом. В Паскале эта информация может храниться в одной переменной типа record (запись). Задать тип можно следующим образом: type < имя _ типа >=record где record – служебное слово, а <имя_типа> и <имя_поля> - правильные идентификаторы языка Паскаль. Описание анкеты студента в Паскале будет выглядеть так: Пример фрагмента программы описания записи Паскаля Type anketa=record Такая запись Паскаля, так же как и соответствующее ей дерево, называется двухуровневой. Поля записи Паскаля могут иметь любой тип, в частности сами могут быть записями. Такая возможность используется в том случае, когда требуется представить многоуровневое дерево (более 2 уровней). Например, те же сведения о студентах можно отобразить трехуровневым деревом. Такая организация данных позволит, например, делать выборки по году рождения или по городу, где живут студенты. В этом случае описание соответствующей записи в Паскале будет выглядеть так: Пример фрагмента программы описания записи Паскаля Type anketa1=record Поля После того, как определен тип записи Паскаля, можно определять переменную этого типа. Переменная определяется путем задания ее идентификатора и указания типа. var Теперь нам нужно узнать, как правильно получать доступ к элементам записи Паскаля. Элементы записи называются полями, а обращение к ним производится через использование их имен – идентификаторов полей. Практически, поля записи обрабатываются точно так же, как и любые другие переменные. Но в отличие от обычной переменной имена полей должны предваряться ссылкой на идентификатор записи Паскаля и отделяться от него точкой. Такая запись называется уточняющий идентификатор: <имя_записи>.<имя_поля> Например, чтобы обратиться к полю curs переменной student, необходимо указать следующее составное имя:
student.curs:=3; Для того чтобы обратиться к полю god в записи student 1, необходимо записать уточняющий идентификатор, состоящий из трех имен: student1.dat_r.god:=1982; Использование полей записи Паскаля в выражениях и условиях идентично использованию обычных переменных. Операции над записями Паскаля (это важно!) Единственная операция, которую можно произвести над однотипными записями Паскаля – это присваивание. Все другие операции производятся над отдельными полями записи. Пример решения задачи с использованием записей Паскаля Рассмотрим для начала простейший пример заполнения записи Паскаля и вывода ее на экран. Пусть нам необходимо заполнить сведения о студенте (Ф.И.О., дата рождения, адрес, курс и группа), а затем вывести эти сведения на экран. Пример программы c записью Паскаля program primer1; А теперь слегка усложним задачу. Пусть нам необходимо иметь сведения о многих студентах, например, нашего факультета. Следовательно, необходимо организовать массив записей Паскаля. А затем из общего списка вывести фамилии студентов 2-го курса. Пример программы c записью Паскаля program primer 2;
Оператор присоединения или как избавиться от префикса Префикс – обязательная предшествующая часть составного идентификатора для имен полей в структуре типа запись Паскаля. Очень часто у программиста возникает желание не указывать префикс в имени полей, например, когда идет постоянное использование одних и тех же записей. В языке Паскаль предусмотрена такая возможность, реализуемая при помощи оператора присоединения, который в общем виде выглядит так: with <имя_записи> do <действие с полем записи>; Следует обратить внимание на то, что после служебного слова do может стоять только один оператор, но он может быть составным (любая последовательность операторов, заключенная в операторные скобки begin end). Например, фрагмент из предыдущей программы с использованием оператора присоединения будет выглядеть так: Пример фрагмента программы c записью и префиксом Паскаля for I:=1 to 100 do
ТИП ДАННЫХ МНОЖЕСТВО.ОПИСАНИЕ.ОПЕРАЦИИ, ИСПОЛЬЗУЕМЫЕ ДЛЯ РАБОТЫ СО МНОЖЕСТВАМИ В ЯЗЫКЕ ПАСКАЛЬ. Множественный тип данных Паскаля напоминает перечислимый тип данных. Вместе с тем множественный тип данных – набор элементов не организованных в порядке следования. В математике множественный тип данных – любая совокупность элементов произвольной природы. Операции, которые производятся над множествами, по существу заключаются во включении и исключении элементов из множества. Понятие множества в языке программирования значительно уже математического понятия. В Паскале под множественным типом понимается конечная совокупность элементов, принадлежащих некоторому базовому типу данных. В качестве базовых типов могут использоваться: · перечислимые типы;
· символьный;
· байтовый;
· диапазонные на основе вышеперечисленных. Такие ограничения связаны с формой представления множественного типа данных в Паскале и могут быть сведены к тому, чтобы функция ord() для используемого базового типа лежала в пределах от 0 до 255. После того, как базовый тип задан, совокупность значений соответствующего множественного типа данных определяется автоматически. В нее входят все возможные множества, являющиеся произвольными комбинациями значений базового типа. Все эти множества являются отдельными значениями определенного множественного типа данных. Описание множественного типа данных Паскаля Type <имя_типа>= set of <базовый_тип> Пример множественного типа данных Паскаля Type symbol= set of char; {описан множественный тип symol из букв} Для того чтобы придать переменной множественного типа значение, используют конструктор множества – перечисление элементов множества через запятую в квадратных скобках. Например,
sign:= [‘+’, ‘-‘]; Конструктор множества может содержать диапазон значений базового типа. Тогда во множества включаются все элементы диапазона. Например, digits:= [‘0’.. ‘9’]; Обе формы конструирования множеств могут сочетаться. Например, letter:= [‘a’.. ‘z’, ‘A’.. ‘Z’]; Конструктор вида [] обозначает пустые множества. В программе можно использовать множественны тип как константы, в этом случае их определяют следующим способом: Const YesOrNo= [‘Y’, ‘y’, ‘N’, ‘n’]; Можно множественный тип определить как типизированную константу: Const digits: set of char= [‘0’.. ‘9’]; При описании множественного тип как констант допускается использование знака “+” (слияние множеств). Например, Const Yes= [‘Y’, ‘y’]; No= [‘N’, ‘n’]; Операции над множественными типами Паскаля С множественными типами Паскаля можно выполнять действия объединения, исключения и пересечения. Объединение множественных типов содержит элементы, которые принадлежат хотя бы одному множеству, при этом каждый элемент входит в объединение только один раз. Операция объединения множеств обозначается знаком ‘+’. Пример множественных типов Паскаля Type symbol= set of char; Возможно объединять множественные типы и отдельные элементы. Например, small:= [‘c’.. ‘z’]; Исключение определяется как разность множественных типов, в котором из уменьшаемого исключаются элементы, входящие в вычитаемое. Если в вычитаемом есть элементы, отсутствующие в уменьшаемом, то они никак не влияют на результат. Операция исключения обозначается знаком ‘-‘. Пример исключения множественных типов Паскаля letter:= [‘a’.. ‘z’]; {множества букв латинского алфавита} Пресечение множественных типов – множества, содержащие элементы, одновременно входящие в оба множества. Операция пересечения множеств обозначается знаком ‘*’. Пример пересечения множественных типов Type chisla= set of byte; Операции отношения множественных типов Паскаля
Наряду с рассмотренными выше операциями, над значениями множественного типа определены и некоторые операции отношения. Операндами операций над множественными значениями в общем случае являются множественные выражения. Среди операций отношения над значениями множественного типа особое место занимает специальная операция проверки вхождения элемента во множества, обозначаемая служебным словом in. В отличие от остальных операций отношения, в которых значения обоих операндов относятся к одному и тому же множественному типу значений, в операции in первый операнд должен принадлежать базовому типу, а второй – множественному типу значений, построенному на основе этого базового типа. Результатом операции отношения, как обычно, является логическое значение (true или false). ‘a’ in glasn значение операции true; Операция сравнения на равенство множественных типов Паскаля. Множества считаются равными (эквивалентными), если все элементы одного множества присутствуют в другом и наоборот. Для операции сравнения на равенство или неравенство используются символы ‘=’ и ‘<>’. A:= [2,1,3]; Тогда операция A=D имеет значение true, а операция A<>D имеет значение false. Проверка включения. Одно множество считается включенным в другое (одно множество является подмножеством другого), если все его элементы содержатся во втором множестве. Обратное утверждение может быть и несправедливым. Операции проверки включения обозначаются ‘<=’ и ‘>=’. letter >= glasn; Следует отметить, что применение операций < и > над операндами множественного типа недопустимо.
ТИП ДАННЫХ ФАЙЛ.ОПИСАНИЕ РАЗЛИЧНЫХ КАТЕГОРИЙ ФАЙЛОВ.ПРОЦЕДУРЫ И ФУНКЦИИ, ИСПОЛЬЗУЕМЫЕ ДЛЯ РАБОТЫ С ФАЙЛАМИ В ЯЗЫКЕ ПАСКАЛЬ. Файлы Pascal-Паскаль Существенной особенностью всех рассмотренных до сих пор значений производных типов является наличие в них конечного, наперед заданного числа компонент. Так, в значении многомерного массива это число можно определить, зная количество компонент по каждому измерению, а в значении записи это число определяется количеством и типом полей. Таким образом, заранее, еще до выполнения программы, по этому описанию можно выделить необходимый объем памяти машины для хранения значений переменных этих типов. Но существует определенный класс задач и определенные ситуации, когда количество компонент (пусть даже одного и того же из известных уже типов) заранее определить невозможно, оно выясняется только в процессе решения задачи. Поэтому возникает необходимость в специальном типе значений, которые представляют собой произвольные последовательности элементов одного и того же типа, причем длина этих последовательностей заранее не определяется, а конкретизируется в процессе выполнения программы. Этот тип значений получил название файлового типа. Условно файл в Паскале можно изобразить как некоторую ленту, у которой есть начало, а конец не фиксируется. Элементы файла записываются на эту ленту последовательно друг за другом:
где F – имя файла, а F1, F2, F3, F4 – его элементы. Файл во многом напоминает магнитную ленту, начало которой заполнено записями, а конец пока свободен. В программировании существует несколько разновидностей файлов, отличающихся методом доступа к его компонентам: файлы последовательного доступа и файлы произвольного доступа. Простейший метод доступа состоит в том, что по файлу можно двигаться только последовательно, начиная с первого его элемента, и, кроме этого, всегда существует возможность начать просмотр файла с его начала. Таким образом, чтобы добраться до пятого элемента файла, необходимо, начав с первого элемента, пройти через предыдущие четыре. Такие файлы называют файлами последовательного доступа. У последовательного файла доступен всегда лишь очередной элемент. Если в процессе решения задачи необходим какой-либо из предыдущих элементов, то необходимо вернуться в начало файла и последовательно пройти все его элементы до нужного. Файлы произвольного доступа Паскаля позволяют вызывать компоненты в любом порядке по их номеру. Важной особенностью файлов является то, что данные, содержащиеся в файле, переносятся на внешние носители. Файловый тип Паскаля – это единственный тип значений, посредством которого данные, обрабатываемые программой, могут быть получены извне, а результаты могут быть переданы во внешний мир. Это единственный тип значений, который связывает программу с внешними устройствами ЭВМ. Работа с файлами в Паскале Любой файл имеет три характерные особенности. Во-первых, у него есть имя, что дает возможность программе работать одновременно с несколькими файлами. Во-вторых, он содержит компоненты одного типа. Типом компонентов может быть любой тип Паскаля, кроме файлов. Иными словами, нельзя создать «файл файлов». В-третьих, длина вновь создаваемого файла никак не оговаривается при его объявлении и ограничивается только емкостью устройств внешней памяти. Файловый тип или переменную файлового типа в Паскале можно задать одним из трех способов: Type <имя_ф_типа>=file of<тип_элементов>; Здесь <имя_ф_типа> – имя файлового типа (правильный идентификатор); File, of – зарезервированные слова (файл, из); <тип_элементов> – любой тип Паскаля, кроме файлов. Пример описания файлового типа в Паскале Type В зависимости от способа объявления можно выделить три вида файлов Паскаля: · типизированные файлы Паскаля(задаются предложением file of..);
· текстовые файлы Паскаля(определяются типом text);
· нетипизированные файлы Паскаля(определяются типом file). Следует помнить, что физические файлы на магнитных дисках и переменные файлового типа в программе на Паскале – объекты различные. Переменные файлового типа в Паскале могут соответствовать не только физическим файлам, но и логическим устройствам, связанным с вводом/выводом информации. Например, клавиатуре и экрану соответствуют файлы со стандартными именами Input, Output. Как известно, каждый тип данных в Паскале, вообще говоря, определяет множество значений и множество операций над значениями этого типа. Однако над значениями файлового типа Паскаля не определены какие-либо операции, в том числе операции отношения и присваивания, так что даже такое простое действие, как присваивание значения одной файловой переменной другой файловой переменной, имеющей тот же самый тип, запрещено. Все операции могут производиться лишь с элементами (компонентами) файлов. Естественно, что множество операций над компонентами файла определяется типом компонент. Переменные файлового типа используются в программе только в качестве параметров собственных и стандартных процедур и функций. Основные процедуры и функции для работы с файлами 1.До начала работы с файлами в Паскале необходимо установить связь между файловой переменной и именем физического дискового файла: Assign(<файловая_переменная>, <имя_дискового_файла>) Следует помнить, что имя дискового файла при необходимости должно содержать путь доступа к этому файлу, включая имя дисковода. При этом имя дискового файла – строковая величина, т.е. должна быть заключена в апострофы. Например: Пример процедуры Assign в Паскале Assign (chf, 'G:\Home\ Student\ Lang\ Pascal\ primer.dat'); Если путь не указан, то программа будет искать файл в своем рабочем каталоге и по указанным путям в autoexec.bat. Вместо имени дискового файла можно указать имя логического устройства, каждое из которых имеет стандартное имя: CON – консоль, т.е. клавиатура-дисплей; PRN – принтер. Если к компьютеру подключено несколько принтеров, доступ к ним осуществляется по именам LPT1, LPT2, LPT3. Не разрешается связывать с одним физическим файлом более одной файловой переменной.
|
|||||||||
Последнее изменение этой страницы: 2017-02-07; просмотров: 323; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.216.239.46 (0.066 с.) |