Выделение и освобождение динамической памяти




ПРОЦЕДУРЫдля работы с файлами в Паскале

Процедура Назначение Пример вызова Тип файла
assign(file, имя) назначить файл для файловой переменной assign(f, ’a: text’) assign(f, path) Все файлы
close(file) закрыть файл close(f) Все файлы
reset(file [,длина-з.]) открыть файл reset(f) Все файлы
rewrite(file [,длина-з.]) создать файл rewrite(f, 1) Все файлы
append(file) открыть для добавления append(f) Text
read(file, данные) ввод данных read(f, mydata) Все файлы
readln(file, данные) ввод данных, пропуск конца строки readln(f, a, b, c) Text
write(file, данные) вывод данных write(f, mydata) Все файлы
writeln(file, данные) вывод данных, вывод конца строки writeln(f, a:10:2) Text
blockread(f, данные, n, результат) ввод блока из n записей, результат = сколько передано blockread(f, a, 50,p) File
blockwrite(f, данные, n, результат) вывод блока из n записей результат = сколько передано blockwrite(f, a,50,p) File
seek(file, номер позиции) установить номер позиции для обмена [0;n], n = число записей    

маркер конца строки EOLn, конца файл EOF

Различают следующие состояния файла:

  • закрыт для чтения и записи;
  • открыт для записи, закрыт для чтения;
  • открыт для чтения закрыт для записи компонент;
  • открыт для чтения, открыт для записи компонент.

Доступ к компонентам файла осуществляется через указатель файла (буферную переменную). При чтении или записи этот указатель перемешается к следующему компоненту и делает его доступным для обработки. Буферная переменная имеет отличие от всех других переменных: она не может участвовать в выражения и операторах присваивания.

VAR F: file of <тип компонент>;

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

 

3.15) Множественный тип данных. Конструктор множеств. Основы алгебры множеств. Понятие без знаний.

Множественный тип данных Паскаля напоминает перечислимый тип данных. Вместе с тем множественный тип данных – набор элементов не организованных в порядке следования.В математике множественный тип данных – любая совокупность элементов произвольной природы. Операции, которые производятся над множествами, по существу заключаются во включении и исключении элементов из множества. Понятие множества в языке программирования значительно уже математического понятия. В Паскале под множественным типом понимается конечная совокупность элементов, принадлежащих некоторому базовому типу данных. В качестве базовых типов могут использоваться: · перечислимые типы; символьный;· байтовый;· диапазонные на основе вышеперечисленных.

Type <имя_типа>= set of <базовый_тип> Для того чтобы придать переменной множественного типа значение, используют конструктор множества – перечисление элементов множества через запятую в квадратных скобках. Например,

sign:= ['+', '-'];

Конструктор множества может содержать диапазон значений базового типа. Тогда во множества включаются все элементы диапазона. Например,

digits:= ['0'.. '9'];
letter:= ['a'.. 'z'];

Конструктор вида [] обозначает пустые множества.

 

3.16) Динамические данные. Указатели и ссылки. Связанные списки. Дважды связанные списки и цепи.

Динамические структуры данных

Объект данных обладает динамической структурой, если его размер изменяется в процессе выполнения программы или он потенциально бесконечен.

Указатели

Для работы с динамическими программными объектами в Паскале предусмотрен ссылочный тип или тип указателей. В переменной ссылочного типа хранится ссылка на программный объект (адрес объекта).

Указатель – это переменная, которая в качестве своего значения содержит адрес байта памяти.

Объявление указателей

Указатель, связанный с некоторым определенным типом данных, называют типизированным указателем. Его описание имеет вид:

Имя_переменной: ^ базовый-тип;

Выделение и освобождение динамической памяти

Вся ДП рассматривается как сплошной массив байтов, который называется кучей.

Расположение кучи в памяти ПК.

Выделение памяти под динамическую переменную осуществляется процедурой:

New (переменная_типа_указатель)

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

Dispose (переменная_типа_указатель) - Освобождение динамической памяти осуществляется процедурой

 

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

Существуют так называемые динамические типы данных. Для переменных этого типа резервирование и очистка памяти производится во время работы программы.

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

Ссылочный тип - это неограниченный набор переменных одного типа. Переменные ссылочного типа можно описать двумя способами:

Например:

TYPE m= array [1..100] of real;

m1:^m; {указатель - m1}

Var A:^integer; {А - ссылка на переменную}

B:^real;

mas:m1;

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

Результатом ссылки является ячейка. Существует пустая ссылка - NIL -, в которой ничего нет, она возможна для указателя любого типа данных. Пустая ссылка обычно указывает конец переменных ссыльного типа.

Линейные списки (однонаправленные цепочки).

Списком называется структура данных, каждый элемент которой посредством указателя связывается со следующим элементом.

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

Лишь на самый первый элемент списка (голову) имеется отдельный указатель. Последний элемент списка никуда не указывает.

В двунаправленном списке у каждого элемента(кроме 1 и последнего) содержатся ссылки на предыдущий и последующий элементы.

В цепях у последнего элемента содержится ссылка на первый элемент.

3.17) Базы данных и базы знаний. СУБД. Способы организации данных и области применения.

База Данных (БД) — информационная модель, позволяющая в упорядоченном виде хранить данные о группе объектов с одинаковым набором свойств или поименованную совокупность структурированных данных. (Поименованная совокупность структурированных данных предметной области).

База знаний, БЗ (англ. Knowledge base, KB) — это особого рода база данных, разработанная для управления знаниями (метаданными), то есть сбором, хранением, поиском и выдачей знаний. Раздел искусственного интеллекта, изучающий базы знаний и методы работы со знаниями, называется инженерией знаний.

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

Наиболее важный параметр БЗ — качество содержащихся знаний. Лучшие БЗ включают самую релевантную, достоверную и свежую информацию, имеют совершенные системы поиска информации и тщательно продуманную структуру и формат знаний.

Систе́ма управле́ния ба́зами да́нных (СУБД) — специализированная программа (чаще комплекс программ), предназначенная для организации и ведения базы данных. Для создания и управления информационной системой СУБД необходима в той же степени, как для разработки программы на алгоритмическом языке необходим транслятор.

Основные функции СУБД:

- управление данными во внешней памяти (на дисках);

- управление данными в оперативной памяти с использованием дискового кэша;

- журнализация изменений, резервное копирование и восстановление базы данных после сбоев;

- поддержка языков БД (язык определения данных, язык манипулирования данными).

Обычно современная СУБД содержит следующие компоненты:

- ядро, которое отвечает за управление данными во внешней и оперативной памяти и журнализацию,

- процессор языка базы данных, обеспечивающий оптимизацию запросов на извлечение и изменение данных и создание, как правило, машинно-независимого исполняемого внутреннего кода,

- подсистему поддержки времени исполнения, которая интерпретирует программы манипуляции данными, создающие пользовательский интерфейс с СУБД

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

 

Реляционные БД используют табличную модель данных.

 

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-06-11 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: