Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 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; просмотров: 467; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.198 (0.01 с.) |