Унарные операции
Абсолютное дополнение:
Мощность множества:
14.Работа с файлами. Различные типы файлов. Представление информации на внешних устройствах ПК. Файловые типы Turbo Pascal. Прямой и последовательный доступ к компонентам файлов.
Любой файл имеет три характерные особенности. Во-первых, у него есть имя, что дает возможность программе работать одновременно с несколькими файлами. Во-вторых, он содержит компоненты одного типа. Типом компонентов может быть любой тип Паскаля, кроме файлов. Иными словами, нельзя создать «файл файлов». В-третьих, длина вновь создаваемого файла никак не оговаривается при его объявлении и ограничивается только емкостью устройств внешней памяти.
strongФайловый тип или переменную файлового типа в Паскале можно задать одним из трех способов:
Type <имя_ф_типа>=file of<тип_элементов>;
<имя_ф_типа>=text;
<имя_ф_типа>=file;
Здесь <имя_ф_типа> – имя файлового типа (правильный идентификатор); File, of – зарезервированные слова (файл, из); <тип_элементов> – любой тип Паскаля, кроме файлов.
В зависимости от способа объявления можно выделить три вида файлов Паскаля:
типизированные файлы Паскаля(задаются предложением file of..); Типизированные файлы Паскаля. Длина любого компонента типизированного файла строго постоянна, т.к. тип компонент определяется при описании, а, следовательно, определяется объем памяти, отводимый под каждую компоненту. Это дает возможность организовать прямой доступ к каждой компоненте (т.е. доступ по порядковому номеру
текстовые файлы Паскаля(определяются типом text); Текстовые файлы Паскаля. Текстовые файлы предназначены для хранения текстовой информации. Именно в таких файлах хранятся, например, исходные тексты программ. Компоненты текстовых файлов могут иметь переменную длину, что существенно влияет на характер работы с ними. Доступ к каждой строке текстового файла Паскаля возможен лишь последовательно, начиная с первой. К текстовым файлам применимы процедуры assign, reset, rewrite, read, write и функция eof. Процедуры и функции seek, filepos, filesize к ним не применяются. При создании текстового файла в конце каждой записи (строки) ставится специальный признак EOLN(end of line – конец строки). Для определения достижения конца строки существует одноименная логическая функция EOLN(<имя_ф_переменной>), которая принимает значение true, если конец строки достигнут.
нетипизированные файлы Паскаля(определяются типом file). в типизированном файле числа 6, 65 и 165 как целые будут представлены одним и тем же числом байт. А в текстовых файлах, после преобразования в строку, они будут иметь разную длину. Это вызывает проблемы при расшифровке текстовых файлов. Пусть в текстовый файл пишутся подряд целые числа (типа byte): 2, 12, 2, 128. Тогда в файле образуется запись 2122128. При попытке прочитать из такого файла переменную типа byte программа прочитает всю строку и выдаст сообщение об ошибке, связанной с переполнением диапазона.
Введение файлового типа в язык Паскаль вызвано необходимостью обеспечить возможность работы с периферийными (внешними) устройствами ЭВМ, предназначенными для ввода, вывода и хранения данных.
Файловый тип данных или файл определяет упорядоченную совокупность произвольного числа однотипных компонент. Понятие файла достаточно широко. Это может быть обычный файл на диске, коммуникационный порт ЭВМ, устройство печати, клавиатура или другие устройства. При работе с файлами выполняются операции ввода - вывода. Операция ввода означает перепись данных с внешнего устройства (из входного файла) в основную память ЭВМ, операция вывода - это пересылка данных из основной памяти на внешнее устройство (в выходной файл).
Файлы на внешних устройствах часто называют физическими файлами. Их имена определяются операционной системой. В программах на языке Паскаль имена файлов задаются с помощью строк. Например, имя файла на диске может иметь вид:
'LAB1.DAT'
'c:\ABC150\pr.txt'
'my_files'
Файловый тип, являющийся составным типом, образуется из компонент одинакового типа, которые называются элементами. В отличие от массивового типа количество элементов файла в описании не установлено, оно зависит от выполнения программы и особенно от того, с каким набором данных файл будет связан. Описание файлового типа
Описание файлового типа состоит из ключевого слова file, за которым следует ключевое слово of, а за ним описание типа элементов файла. Элементами файла могут быть объекты любых простых типов, а также любые агрегаты, за исключением файлов
┌──────┐ ┌────┐ ┌─────┐
файловый тип ───>│ file ├──┬─>│ of ├───>│ тип ├─────>
└──────┘ │ └────┘ └─────┘ ^
└─────────────────────┘
Смысл последовательного доступа заключается в том, что в каждый момент времени доступна лишь одна компонента из всей последовательности. Для того, чтобы обратиться (получить доступ) к компоненте с номером К, необходимо просмотреть от начала файла К-1 предшествующую компоненту. После обращения к компоненте с номером К можно обращаться к компоненте с номером К+1. Отсюда следует, что процессы формирования (записи) компонент файла и просмотра (чтения) не могут произвольно чередоваться. Таким образом, файл вначале строится при помощи последовательного добавления компонент в конец, а затем может последовательно просматриваться от начала до конца.
TURBO PASCAL позволяет применять к компонентным и бестиповым файлам, записанным на диск, способ прямого доступа. Прямой доступ означает возможность заранее определить в файле блок, к которому будет применена операция ввода - вывода. В случае бестиповых файлов блок равен размеру буфера, для компонентных файлов блок - это одна компонента файла.
Прямой доступ предполагает, что файл представляет собой линейную последовательность блоков. Если файл содержит n блоков, то они нумеруются от 1 через 1 до n. Кроме того, вводится понятие условной границы между блоками, при этом условная граница с номером 0 расположена перед блоком с номером 1, граница с номером 1 расположена перед блоком с номером 2 и, наконец, условная граница с номером n находится после блока с номером n.
Реализация прямого доступа осуществляется с помощью функций и процедур FileSize, FilePos, Seek и Truncate.
15.Библиотека стандартных подпрограмм. Модуль Graph Правила организации библиотечных подпрограмм. Использование библиотеки подпрограмм для решения задач Разработка и отладка программ с использованием графики.
Библиотека(от англ.library) в программировании — сборник подпрограмм или объектов, используемых для разработки программного обеспечения n(ПО).
Термин «библиотека подпрограмм» по всей видимости одними из первых упомянули Уилкс М., Уиллер Д., Гилл С. в качестве одной из форм организации вычислений на компьютере Исходя из изложенного в их книге под библиотекой понимался набор «коротких, заранее заготовленных программ для отдельных, часто встречающихся (стандартных) вычислительных операций».
Библиотека стандартных подпрограмм -это совокупность подпрограмм, составленных на одном из языков программирования и удовлетворяющих определенным единым требованиям к структуре, организации их входов и выходов, описаниям подпрограмм и т.п. |
Стандартные подпрограммы имеют единую форму обращения, что обеспечивает простоту и удобство настройки параметров подпрограммы на решение конкретной задачи. В качестве примера можно привести библиотеку стандартных подпрограмм по численным математическим методам решения уравнений, вычисления интегралов, нахождения экстремумов и т.п.
Для управления экраном в графическом режиме с помощью программ в Turbo Pascal существуют специальные графические процедуры и функции. Описание этих процедур и функций содержится в специальном библиотечном модуле CRAPH. Запуск графической системы. Для запуска графической системы необходимо сделать следующее:
Подключить модуль CRAPH - библиотеку графических процедур: uses graph;
Установить графический режим с помощью двух переменных:
var DriverVar, ModeVar: integer;
begin
DriverVar:=Detect;
InitGraph(DriverVar, ModeVar,’\TP\GRAPH’);
При получении варианта Библиотеки на языке Паскаль было установлено следующее правило:версия подпрограммы на языке Паскаль имеет имя, совпадающее с именем этой подпрограммы на языке Фортран, а предоставляемый пользователю модуль (Unit) получает имя, которое состоит из имени версии этой подпрограммы на языке Фортран с добавлением в конце двух символов "_p". Это относится как к именам головных подпрограмм, так и к именам всех вызываемых из них подпрограмм.
В частности, имена библиотечных подпрограмм состоят из пяти символов.
Первые два символа идентифицируют главу или подглаву, к которой данная подпрограмма относится.
Вторые два символа идентифицируют подпрограмму внутри соответствующей главы (подглавы).
Пятый символ предназначен для идентификации различных версий подпрограммы. Для пятого символа выбрана следующая мнемоника:
R - |
вычисления проводятся с обычной точностью для вещественного случая; |
D - |
вычисления проводятся с удвоенной точностью для вещественного случая; |
E - |
вычисления проводятся с точностью типа Extended языка Паскаль для вещественного случая; |
C - |
вычисления проводятся с обычной точностью для комплексного случая; |
P - |
вычисления проводятся с удвоенной точностью для комплексного случая; |
Z - |
вычисления проводятся с точностью типа Extended языка Паскаль для комплексного случая; |
I |
вычисления определены для целочисленных данных; |
T - |
проверка (тестирование) правильности задания входной информации. Использование библиотеки подпрограмм для решения задач тусинбедим |
Для разработки и отладки программы можно использовать четыре тестовых файла, размером 100х100 пикселов, использующих 16-ти цветную палитру. 16BLUE.bmp - синего цвета, 16RED.bmp - красного цвета, 16WHITE.bmp - белого цвета, ZEBRA.bmp - красная, желтая, зеленая, голубая, синяя полосы с текстом на них. Имя файла необходимо указывать в качестве параметра командной строки для программы. Вывести на экран заданный графический файл. Вывести размеры изображения по горизонтали и вертикали, название файла.
16.Организация программ. Средства структурирования. Модули.
Структура модуля.
Многомодульная программа в языке Паскаль имеет четко выраженную иерархическую структуру, которую также можно трактовать как сеть без циклов. Вершины такой сети могут быть упорядочены и распределены по уровням. Основные виды объектов языков программирования (типы, константы, переменные, процедуры), их назначение и отношения между ними. Средства структурирования программ: модули, разделы, блоки, подпрограммы. Модуль Паскаля – это автономно компилируемая программная единица, включающая в себя различные компоненты раздела описаний (типы, константы, переменные, процедуры и функции) и, возможно, некоторые исполняемые операторы инициирующей части.
Основным принципом модульного программирования является принцип «разделяй и властвуй». Модульное программирование – это организация программы как совокупности небольших независимых блоков, называемых модулями, структура и поведение которых подчиняются определенным правилам. Использование модульного программирования позволяет упростить тестирование программы и обнаружение ошибок. Аппаратно-зависимые подзадачи могут быть строго отделены от других подзадач, что улучшает мобильность создаваемых программ.
Модули создаются, как правило, для обеспечения компактности кода, о чем приходиться заботиться крупным проектам. Стоит также отметить, что использование модулей в каком-то смысле снимает ограничение на сегментацию памяти, так как код каждого модуля располагается в отдельном сегменте.
Структура модуля выглядит так:
Unit <имя модуля>; Interface <интерфейсная часть> Implementation <исполняемая часть> Begin <инициализация> End.
<имя_модуля> - имя модуля (правильный идентификатор);
INTERFACE – зарезервированное слово (интерфейс); начинает интерфейсную часть модуля;
IMPLEMENTATION – зарезервированное слово (выполнение); начинает исполняемую часть модуля;
BEGIN – зарезервированное слово; начинает инициирующую часть модуля; причем конструкция begin <инициирующая часть> необязательна;
END – зарезервированное слово – признак конца модуля.
