- •1. Структурная схема микропроцессора (на примере i8086). Назначение регистров.
- •3. Организация основной памяти.
- •3. Структура и характеристики оперативной памяти
- •4. Модель osi
- •5. Стек протоколов tcp/ip
- •6. Классификация компьютерных сетей
- •7. Данные и модели данных
- •8. Модель данных «сущность-связь»
- •Ограничения целостности
- •9. Реляционная модель данных
- •10. Основные направления исследования в области ии
- •11. Метод резолюции в лппп.
- •12. Продукционная модель
- •13. Основные парадигмы языков программирования.
- •14. Основные понятия ооп: инкапсуляция, наследование, полиморфизм
- •1. Инкапсуляция
- •2. Полиморфизм
- •3. Наследование
- •15. Понятие алгоритма.
- •16. Понятие о временной и емкостной сложности алгоритма
- •17. Машина Тьюринга: детерминированная и недетерминированная
- •18. Понятие формального языка и формальной грамматики
- •19. Основные понятия теории графов.
- •20. Понятие количества информации и энтропии. Теорема Шеннона.
- •21. Деревья в теории графов.
- •22. Модели линейного программирования (постановка задачи, математическая модель, решение графическим методом).
- •23. Двойственность в задачах линейного программирования.
- •25. Элементы теории игр.
- •2. Подпрограммы. Процедуры и функции
- •3. Массивы
- •4. Записи
- •5. Работа с Динамическими данными
- •6. Динамические структуры данных. Линейные списки.
- •7. Динамические структуры данных: двоичные деревья
- •8. Работа с файлами
- •9.Операции целочисленной арифметики
- •10. Системы счисления. Перевод чисел из одной системы счисления в другую
- •11. Язык sql. Назначение и основные команды.
- •Манипулирование данными
- •Простые запросы
- •12. Алгоритмы внутренней сортировки.
- •13. Алгоритмы внешней сортировки
- •14. Нахождение кратчайших путей в графе
- •15. Поиск в ширину
- •16. Поиск остова и минимального остова.
- •17. Линейная модель работы информационно-поисковой системы.
- •18. Хеширование
- •Основные достоинства в-дерева
- •20. Логические вопросно-ответные системы:выполнение запросов различных типов.
- •21. Поиск в семантической сети.
- •22. Принципы динамического программирования. Иллюстрация на примере.
- •23. Адресация в Интернете
- •Доменные имена
- •Общий вид формата url-адреса
- •Как работает dns-сервер
- •24. Основные сервисы в сети Интернет.
- •Word Wide Web (www) - "Всемирная паутина"
- •Поиск информации в сети
- •VoIp сервис
- •Мессенджеры
- •25. Использование html. Структура Web(html) страницы.
8. Работа с файлами
Введение файлового типа в язык ПАСКАЛЬ вызвано необходимостью обеспечить возможность работы с периферийными (внешними) устройствами ЭВМ, предназначенными для ввода, вывода и хранения данных. Файловый тип данных или файл определяет упорядоченную совокупность произвольного числа однотипных компонент.
Общее свойство массива, множества и записи заключается в том, что количество их компонент определено на этапе написания программы, тогда как количество компонент файла в тексте программы не определяется и может быть произвольным.
Понятие файла достаточно широко. Это может быть обычный файл на диске, коммуникационный порт ЭВМ, устройство печати, клавиатура или другие устройства.
При работе с файлами выполняются операции ввода - вывода. Операция ввода означает перепись данных с внешнего устройства (из входного файла) в основную память ЭВМ, операция вывода - это пересылка данных из основной памяти на внешнее устройство (в выходной файл).
Файлы на внешних устройствах часто называют физическими файлами. Их имена определяются операционной системой. В программах на языке Паскаль имена файлов задаются с помощью строк. Например, имя файла на диске может иметь вид:
'A:LAB1.DAT'
'c:\ABC150\pr.pas'
'lab3.pas'.
В Паскале имеются три класса файлов:
текстовый файл;
типизированный файл;
нетипизированный файл.
Начнем с текстовых файлов.
Текстовые файлы
Текстовый файл содержит последовательность символов, организованных в строки, причем каждая строка заканчивается специальным символом возврата карет ки CR = #13 и перевода строки LF = #10.
В Паскале имеется стандартный файловый тип text. Прежде чем приступить к операциям над текстовыми файлами, необходимо ввести переменные (одну или несколько) типа text:
var
in_f11e: text;
Переменная in_file сопоставляется внешнему файлу на диске или какому-либо устройству процедурой Assign:
Assign(in__file. 'C:\user\Newton\my_file'):
Assign(my_text, 'prn'};
Процедура Assign связывает имя внешнего файла (это именно тот файл, с которым мы собираемся работать) с файловой переменной. Внешний файл может быть обычным файлом, расположенным на жестком диске компьютера, а может быть файлом, связанным с каким-либо устройством, например дисплеем или принтером. Файловая переменная далее используется в программе в качестве параметра процедyp работы с файлами.
Следующий шаг заключается в том, что внешний файл надо открыть для записи или чтения. При открытии файла выполняются необходимые системные операции, подготавливающие файл к записи или считыванию информации. Текстовый файл my_fi1e открывается процедурой Reset(my_file) только для чтения и процедурой Rewrite(my_file) — только для записи.
По завершении обработки файла программой он должен закрываться. После выполнения этой операции внешний файл обновляется. Затем файловая переменная может быть связана с другим внешним файлом. Закрывается файл с помощью процедуры Close(my_f11e).
После того как текстовый файл открыт, с ним можно выполнять определенные действия. Это, прежде всего, запись в файл и чтение из файла. Доступ к текстовому файлу организуется последовательно; это означает, что программа не может в любой момент времени считать из него произвольную порцию информации или произвести запись в произвольное место файла. Любой файл представляет собой
линейную последовательность элементов, каждый из которых имеет свой номер. Можно считать, что имеется указатель, который при считывании очередного элемента файла перемещается к следующему элементу (то есть становится ближе к концу файла).
Для чтения из текстового файла или записи в текстовый файл можно использовать процедуры Write, WriteLn, Read и ReаdLn. В качестве первого параметра в этих процедурах должна быть указана файловая переменная:
Read (in_file, a, x);
WriteLn (out_file, ‘Urgent message!’);
Первая процедура присваивает а и х значения очередных двух элементов из файла in_file.
Следует отметить, что несмотря на то, что текстовый файл является набором символов, он может использоваться (и часто используется) для хранения численных значений. При считывании значений или их записи в файл происходит автоматическое преобразование из числового формата в символьный и наоборот.
Оператор вывода допускает описание формата вывода. Если а является выражением целого, булевого или строкового типа, то
WriteLn(a:n);
означает запись а в правые позиции поля размером в n позиций. Если указанна длина поля n меньше, чем длина значения а, то заданная длина игнорируется. Например:
WriteLn(‘12345’:3);
приведет к выводу всего символьного значения '12345'. Значение n может быть и отрицательным, в этом случае значение записывается в левые n позиций.
В том случае, когда а имеет вещественный тип, должны быть описаны два поля формата:
Write(a:10:3);
Такое обращение к процедуре вывода означает запись а в форме с фиксированной точкой, с тремя десятичными разрядами и выравниванием по правой границе поля размером 10 позиций.
Напомню, что в Паскале имеются две стандартные файловые переменные текстового типа: Input и Output. Стандартная файловая переменная Input представлю" собой доступный только для чтения файл, связанный со стандартным файлом ввода операционной системы (клавиатурой). Вторая стандартная файловая перемен:-. Output — это доступный только для записи файл, связанный со стандартным файлом вывода (дисплеем).
Процедура file_output(параметры) открывает текстовый файл для записи.
Типизированные файлы
Описание типизированного файла имеет вид:
var
a: file of type_ID;
где type_ID может быть любым типом, за исключением файлового. Элементами типизированного файла являются значения указанного типа.
При работе с типизированными файлами можно использовать уже знакомые нам процедуры Assign, Reset и Rewrite. Следует заметить, что текстовый файл, открытый процедурой Reset, доступен только для чтения, а типизированный — еще и для записи. Процедуры Read и Write здесь используются по-другому. Отличие заключается в том, что каждый из параметров в рассматриваемом случае должен быть
переменной типа type_ID, а выражения и константы недопустимы. Процедуры ReadLn и Writeln применяются только к текстовым файлам.
Нетипизированные файлы
Для более эффективного выполнения операций ввода-вывода из внешних файле: в Паскале имеются нетипизированные файлы. При работе с ними можно использовать быстрые дисковые операции низкого уровня. Нетипизированные файл! дают возможность прямого доступа к любому файлу на диске, независимо от его типа и структуры. Описание нетипизированной файловой переменной имеет вид:
Var
A: file;
Такая файловая переменная связывается с внешним файлом обычным образом. В числе параметров процедур Reset и Rewrite для нетипизированных файлов, кроме файловой переменной, имеется необязательный второй параметр типа Word:
Reset(a, n):
Rewrite(a, n):
Дополнительный параметр n описывает размер индивидуальной записи в файле (в байтах). Если параметр n отсутствует, его значение по умолчанию принимается равным 128, однако рекомендуется явно указывать значение 1. Это связано с тем, что при любом другом значении величины записи в файле могут присутствовать неполные записи, а это не всегда удобно.