Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Документ1.doc
Скачиваний:
4
Добавлен:
28.09.2019
Размер:
175.1 Кб
Скачать

1 матиматическая модель задачи(пример)

Математическая модель задачи: расчет объема производства, при котором средние постоянные издержки минимальны. Построение графика функции с помощью графического редактора MS Excel. Аналитическое исследование функции, зависящей от одной переменной.

goto оператор перехода по метке..

(метка, любое целое число без знака)

Goto <метка>

пример

Goto 10;

10: end;

метко обязательнно объявляется в специальном разделе объявления меток.

поиск минимального

program Frozen_Fire2;

var a: array [1..10] of byte;

var min,k,N,i:integer;

begin

min:=a[i];

k:=1;

N:=10;

for i:=1 to N do read (a[i]);

if a[i]<min then

begin

min:=a[i];

k:=i;

readln;

end;

writeln('min=', k);

end.

2 Алгоритм

Алгоритм-точное и понятное указание исполнителю совершить последовательность действий для решения определённой задачи.

Чтобы алгоритм можно было выполнить, он должен быть понятен исполнителю. Понятность алгоритма означает знание исполнителя о том, что надо делать для исполнения этого алгоритма.

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

Каждый шаг алгоритма должен быть выполнен точно и за конечное время. Алгоритм должен быть эффективным.

3 Типы алгоритмов

  1. арифметические (линейные)

  2. етвлящиеся (условные)

  3. циклические

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

  2. В зависимости от выполнения или невыполнения некоторых условий осуществляется та или иная последовательность вычислений. При разветвлении происходит однократный проход по одной из ветвей решения задачи.

  3. В них та или иная часть вычислений выполняеться много раз. Число повторений в цикле должно быть конечным.

4 Алфавит

·прописные и строчные буквы латинского алфавита: A.. Z; a ..z;

·десятичные цифры: 0, 1, 2,…9;

·специальные символы: + - * / > < = ; # , . : {} [] ( )

·комбинации специальных символов, которые нельзя разделять пробелами, если они используются как знаки операций: «:=», «..», «<>», «<=», «>=», «{}».

5 Арифметические ввырожения в паскале

Понятие об арифметическом выражении.

Арифметические выражения состоят из операндов (чисел и переменных), операторов (+,-,*,/,div,mod) и скобок.

VP использует инфиксную нотацию, которая означает, что оператор располагается между операндами (X+4), а не предшествует им (+(X,4)).

Символы в правой части от знака равенства (который является предикатом =) составляют арифметическое выражение.

Пример.

A = 1 = 6 / (11 + 3) * Z

Значение выражения может быть вычислено, только если все переменные в момент вычисления определены. При этом вычисления производятся в порядке, определяемом приоритетом операции. Операции с высшим приоритетом выполняются первыми.

1.2. Порядок вычислений.

1) если выражение содержит подвыражение в скобках, то это подвыражение вычисляется первым;

2) если выражение содержит операции умножения (*) или деления (/б div, mod), то эти операции выполняются слева направо;

3) если выражение содержит операции сложения (+) и вычитания (-), они выполняются также слева направо.

Приоритет операций: +,- 1

*,/ mod, div 2

-, + (унарные) 3.

6 Типы данных

Вещественный

Целочисленные переменные.

Shortint - короткие целые числа (1 байт). (-128 127)

Longint - удвоенные целые числа (4 байта). (-231 231-1)

Integer - обычные целые числа (2 байта). (-32768 32767)

Word - целые положительные числа (2 байта). (0 65535)

Byte - целые короткие положительные числа (1 байт). (0 255)

Логический тип.

Boolean - логические переменные (1 байт) могут принимать 2 значения:

True (истина)

False (ложь)

Строковый тип.

String - строковые переменные (255 байт).

Это строка символов заключенных в апострофах.

Вещественный тип.

Real - служит для хранения вещественных чисел (6 байт)

7 структура программного модуля

алфавит языка паскаль состоит из букв латинского алфавита a..z, A.Z

арабских цифр 0..9, знаков операций +,-,*,/, и оператора присваивания :=, ограничителей , . ;:[](),действительные числа изображаются в естественной и полулагорифмической форме наприменр 2Е+5=2*10 в 5 степени. допустимый диапазон изменения целых и действительных чисел зависит от конкретных реализации языка. Программана языке паскаль состоит из блоков и заканчивается точкой блок содержит раздел описаний и раздел операторов begin end.

раздел операторов представляет собой последо-ть операторов разделённых

var - раздел описания переменных.

read - служит для ввода инф.

write - служит для вывода инф.

8: Операторы присваивания

Оператор присваивания

Оператор присваивания (:=) предписывает выполнить выражение, заданное в его правой части, и присвоить результат переменной, идентификатор которой расположен в левой части. Переменная и выражения должны быть совместимы по типу.

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

11 Логические данные. операции отношений. логические операции.

Логические операции not, and, or.

Операция not (НЕ) имеет один операнд и образует его логическое отрицание. Результат операции not есть False, если операнд истинен, и True, если операнд имеет значение ложь. Так,

not True False (неправда есть ложь)

not False True (не ложь есть правда)

Результат операции and (И) есть истина, только если оба ее операнда истинны, и ложь во всех других случаях.

Результат операции or (ИЛИ) есть истина, если какой-либо из ее операндов истинен, и ложен только тогда, когда оба операнда ложны.

xor- исключающее или(выражение истенно если оба выражения различны, в противном случае ложно)

логические операции, операции отношений:

not

and, *, /, div, mod

or, +, -

операции отношения.

важно: Логическую операцию and еще называют логическим умножением, а логическую операцию or - логическим сложением.

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

A or B and not (A or B)

Сначала выполняется заключенная в скобки операция or, а затем операции not, and, or. Если подставить вместо переменных А и В значения True и False, то, используя уже рассмотренный порядок действий, получим значение всего выражения, равное True.

операции отношения =,<>, <,>,<=,>=

12 Таблицы истенности

not

x not x

false true

true false

end,or,xor

x y x and y x or y x xor y

false false false false false

false true false true true

true false false true true

true true true true false

13. Условный оператор. Формат записи, структурная схема.

Условные операторы

Условные операторы предназначены для выбора на исполнение одного из возможных действий в зависимости от некоторого условия.

Оператор условия If

Оператор условия If имеет полную и краткую формы.

Полная форма:

Краткая форма:

If <условие> then <оператор 1>

else <оператор 2>;

If <условие> then <оператор >;

В качестве условия указывается некоторое логическое выражение. Если условие оказывается истинным – выполняется оператор1, в противном случае выполняется оператор2 (в полной форме) или происходит переход к следующему оператору программы (в краткой форме).

14 Оператор выбора

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

Общий вид оператора Case:

Case селектор of

список1 значений селектора: оператор1;

список2 значений селектора: оператор2;

списокN значений селектора: операторN;

Else оператор;

End;

Ветвь Else оператора Case может отсутствовать.

Селектор может иметь только следующий тип данных: интервальный, перечисляемый, логический или символьный. Запрещены: действительный, строковый и целый типы.

Оператор Case работает следующим образом. Сначала вычисляется значение выражения-селектора, затем обеспечивается реализация того оператора, константа выбора которого равна текущему значению селектора. Если ни одна из констант не равна текущему значению селектора, выполняется оператор, стоящий за словом else. Если слово else отсутствует, то активизируется оператор, находящийся за словом end, т. е. первый оператор за границей case.

15 с предусловием

Оператор цикла while или оператор цикла с предусловием имеет следующую форму:

While <условие> do   <тело цикла>;

Условие – булевское выражение, тело цикла – простой или составной оператор. Перед каждым выполнением тела цикла вычисляется значение выражения условия. Если результат равен True, то тело цикла выполняется, и

снова вычисляется выражения условия. Если результат равен False, происходит выход из цикла и переход к первому после while оператору.

16 с постусловием

Общий вид оператора Repeat:

Repeat

<тело цикла>;

Until <условие>;

Оператор Repeat действует следующим образом: выполняются все операторы циклической части, записанные между операторами Repeat и Until. Затем проверяется логическое выражение и если оно ложно, то вновь выполняются все операторы цикла до тех пор, когда логическое выражение станет истинным. Если логическое выражение истинно с самого начала, то операторы циклической части выполняются один раз.

№17 Оператор цикла FOR

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

повторений цикла, а параметр цикла либо возрастает с шагом 1, либо убывает с шагом -1.

Общий вид оператора For:

For <параметр цикла> := <S1> to <S2> do <оператор>;

или

For <параметр цикла> := <S1> to <S2> downto <оператор>;

где S1 и S2 – выражения, определяющие соответственно начальное и конечное значения параметра цикла.

for…do – заголовок цикла;

<оператор> - тело цикла.

Для первой формы записи цикла с ключевым словом to параметр цикла меняется от начального значения до конечного значения, увеличиваясь, всякий раз на единицу, а для второй формы с ключевым словом downto - уменьшаясь на единицу. Для каждого значения переменной-параметра выполняется тело цикла. Значение параметра цикла после завершения цикла считается неопределенным. Если для цикла for ... to начальное значение переменной цикла больше конечного значения или для цикла  for ... downto начальное значение переменной цикла меньше конечного значения, то тело цикла не выполнится ни разу.

18 массивы

  • имя массива;

  • диапазон индексов его элементов;

  • тип элементов массива (базовый тип).

var a: array [1 .. 100] of real;

Здесь a - имя массива (выбирается программистом произвольно); array - служебное слово языка Паскаль, указывающее, что речь идет об описании именно массва; [1 .. 100] - диапазон индексов, т.е. элементы нумеруются целыми числами от 1 до 100; real - тип всех элементов массива (в упомянутой задаче в этом месте могло быть и integer).размерностьмассива может быть любой, компонентымассива могут быть любого, в том числе и структурированного типа.Индексы могут быть любого порядкового типа за исключением longint.Кроме того, массив можно объявить с использованием собственного типа:

Сумму элементов массива можно подсчитать по формуле S=S+A[I] первоначально задав S=0. Количество элементов массива можно подсчитать по формуле К=К+1, первоначально задав К=0. Произведение элементов массива можно подсчитать по формуле P = P * A[I], первоначально задав P = 1.

19 Двумерные массивы

Двумерный массив в Паскале трактуется как одномерный массив, тип элементов которого также является массивом (массив массивов). Положение элементов в двумерных массивах Паскаля описывается двумя индексами. Их можно представить в виде прямоугольной таблицы или матрицы.

Представление двумерного массива Паскаля в памяти

Элементы абстрактного массива в памяти машины физически располагаются последовательно, согласно описанию. При этом каждый элемент занимает в памяти количество байт, соответствующее его размеру. Например, если массив состоит из элементов типа integer , то каждый элемент будет занимать по два байта. А весь массив займет S^2 байта, где S – количество элементов в массиве.

А сколько места займет массив, состоящий из массивов, т.е. матрица? Очевидно: S i^S j , где S i - количество строк, а S j – количество элементов в каждой строке. Например, для массива типа

Matrix = array [1..3, 1..2] of integer ;

Для работы программы память выделяется сегментами по 64 Кбайт каждый, причем как минимум один из них определяется как сегмент данных. Вот в этом-то сегменте и располагаются те данные, которые будет обрабатывать программа. Ни одна переменная программы не может располагаться более чем в одном сегменте. Поэтому, даже если в сегменте находится только одна переменная, описанная как массив, то она не сможет получить более чем 65536 байт. Но почти наверняка, кроме массива в сегменте данных будут описаны еще некоторые переменные, поэтому реальный объем памяти, который может быть выделен под массив, находится по формуле: 65536- S , где S – объем памяти, уже выделенный под другие переменные.

20 21 процедуры и ф-и

синтаксис ф-и

function имя (список формальных параметров): тип ф-и;

раздел описания локальных переменных

begin

тело ф-и

имя ф-и присвоить результат;

end;

синтаксис пр-р

procedure(зар-е слово ) 376(имя аргумента): (тип;...;..; var (имя результата (тип);

var

begin

end.

Функция (в отличие от процедуры) всегда возвращает единственное значение.

Покажем, как изменится подпрограмма из примера, если ее записать в виде функции.

Function Nod(M, N : Integer) : Integer;

Begin

While M <> N Do

If M > N Then M := M - N Else N := N - M;

Nod := M

End;

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

Вызов функции будет следующим:

G := Nod(Abs(E), F);

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

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

22 модули, стандартныемодули.

8-мь стандартных модулей

SYSTEM, DOS, CRT, PRINTER, GRAPH, OVERLAY, TURBOS и GRAPH3.

Модули GRAPH, TURBOS и GRAPHS выделены в отдельные TPU-файлы, а остальные входят в состав библиотечного файла TURBO.TPL.

system не требует подключения, он подключён ко всем программом.

в него входят все процедуры и функции стандартного паскаля.

printer

выводтинф на печать на матричный принтер. в нем определчетсч программная переменная lst,типа текст,она связываетсяс логическими устройствами prm/

п:

Uses Printer;

begin

writeln (LST, 'Турбо Паскаль')

end.

Модуль CRT. В нем сосредоточены процедуры и функции, обеспечивающие управление текстовым режимом работы экрана.

Модуль GRAPH. Содержит обширный набор типов, констант, процедур и функций для управления графическим режимом работы экрана.

Модуль DOS. В модуле собраны процедуры и функции, открывающие доступ программам к средствам дисковой операционной системы MS- DOS.

Модуль OVERLAY. Он необходим при разработке громоздких программ с перекрытиями.

Два библиотечных модуля TURBO3 и GRAPHS введены для совместимости с ранней версией 3.0 системы Турбо Паскаль.

25 27 Строки. функции обработки

Строка - это значение переменной типа String.

Val - преобразовывает строку в числовое выражение; •Str, CStr - преобразовывает числовое выражение в строку; •StrReverse - изменяет порядок следования символов в строке на обратный; Space - возвращает строку, состоящую из указанного числа пробелов, Space (string); Len - возвращает число символов строки Len (string); LTrim - возвращает копию строки без пробелов в начале, LTrim (string); Rtrim - возвращает копию строки без пробелов в конце, RTrim (string);

Asc - возвращает ASCII - код символа, Asc (string); Chr - преобразовывает ASCII - код в символ, Chr (код);

Mid - возвращает подстроку строки, содержащую указанное число символов

26 стандартные процедуры и ф-и для обработки строк

Функция Length

Встроенная функция Length (длина) позволяет определить фактическую длину текстовой строки, хранящейся в указанной переменной.Пример.

Функция Upcase

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

Функция Copy

Функция Сopy позволяет копировать фрагмент некоторой строки из одной переменной в другую. Вызывая функцию copy, необходимо указывать следующие параметры: 1) имя строки, из которой должен извлекаться копируемый фрагмент; 2) позицию в строке, начиная с которой будет копироваться фрагмент; 3) число копируемых символов

Функция Pos

С помощью функции Pos осуществляется поиск определенного фрагмента в строке. Если заданный фрагмент в строке присутствует, то функция возвращает номер позиции в строке, с которой фрагмент начинается. Если в строке фрагмент не найден, то функция возвращает ноль.

Процедуры Insert и Delete

Процедура Insert вставляет в исходную строку какую-либо другую строку, начиная с указанной позиции. Оператор Insert (w1, ws, 4); вставит строку w1 в строку ws перед 4–ой позицией.

Процедура Delete удаляет в исходной строке фрагмент определенной длины, начинающийся с указанной позиции. Оператор Delete (ws, 2, 3); удаляет из строки ws фрагмент, состоящий из трех символов и начинающийся со второй позиции.

Процедура Str

Процедура Str (x [:width [:decimals]], st) преобразует число х любого вещественного или целого типов в строку символов st. Параметры width и decimals, если они присутствуют, задают формат преобразования. Width определяет общую ширину поля, выделенного под соответствующее символьное представление вещественного или целого числа х, а decimals – количество символов в дробной части (имеет смысл только в том случае, когда х – вещественное число).

Процедура Val

Процедура val (st, x, code) преобразует строку символов st во внутреннее представление целой или вещественной переменной х, которое определяется типом этой переменной. Параметр code содержит ноль, если преобразование прошло успешно, и тогда в х помещается результат преобразования, в противном случае он содержит номер позиции в строке st, где обнаружен ошибочный символ, и в этом случае содержимое х не меняется. Пробелы в строке st могут присутствовать лишь в начале.

29 рекурсия

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

например вычслениефакториала числа.

program fjg;

var N: integer; F:longint;

funktion a:(N:integer):longint;

begin

if =1 then

{описание ф-и, N - формальный параметр значение типа интежер, результат выполнения ф-и longing.}

30 модульcrt. основные процедуры и функции

16 процедур

4 функции

Его стандартное местонахождение – системная библиотека TURBO.TPL.

|Window ( X1, Y1, X2, Y2, : Byte ) |Задание текущего окна на экране

ClrScr |Очистка текущего окна на экране

TextMode (M: Word) |Установка текстового режима

GotoXY (X,Y :Byte) |Установка курсора в столбец Х, | | |строку Y

WhereX : Byte |Выдача номера текущего столбца

WhereY : Byte |Выдача номера текущей строки

ClrEOL |Стирание всех символов в строке, | | |начиная от текущего и до конца | | |строки

InsLine |Вставка пустой строки на место | | |текущей |

|DelLine |Удаление текущей строки

TextColor(C: Byte) |Выбор цвета символов на экране |

|TextBackGround (C: |Выбор цвета фона под символами | |Byte) |

Sound (Hz: Word) |Включение звука с частотой тона Hz в| | |герцах

NoSound |Выключение звука

AssignCRT(VAR f : | Связь текстового файла f с | |Text) |устройством CRT |

KeyPressed: Boolean |Логическая функция для анализа | | |нажатия клавиши |

|ReadKey : Char | Функция, возвращающая символ | | |нажатой клавиши | |

31 Процедуры и функции,dos

Function DosVersion: Word Возвращает номер версии ДОС.

Procedure GetCBreak (var CBreak: Boolean) Возвращает состояние проверки Ctrl-Break.

Procedure SetCBreak(CBreak: Boolean) Устанавливает состояние проверки Ctrl-Break в ДОС.

Procedure GetVerify(var Verify: Boolean) Возвращает состояние флага верификации в ДОС.

Procedure SetVerifу (Verify: Boolean) Устанавливает состояние флага верификации в ДОС.

Function EnvCount: Integer Возвращает число переменных окружения, содержащихся в среде ДОС.

Function EnvStr (Index: Integer): String Возвращает указанную переменную окружения ДОС.

Function GetEnv(EnvVar: String): String Возвращает значение указанной переменной окружения ДОС.

Function DosExitCode: Word Возвращает код завершения подпроцесса.

Процедуры даты и времени

Procedure GetDate (var Year, Month, Day, DayOfWeek: Word) Возвращает текущую дату.

Procedure GetFTime (var F; var Time: Longlnt) Возвращает дату и время последнего обновления файла.

Procedure GetTime(var Hour, Minute, Second, Sec100: Word) Возвращает текущее время.

33,34,35 graph

Модуль GRAPH. Содержит обширный набор типов, констант, процедур и функций дляу правленияграфическим режимом работы экрана.

Полный граф - граф, в котором каждые две вершины смежны. Полный граф с множеством вершин

Пустой граф - граф, не содержащий ни одного ребра. Пустой граф с множеством вершин

graph- ссовокупностьточек, линий в которой каждая линия соединяет две точки.

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

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

процедура move tо(параметры:(х,у-interger))устанавливает новоетекущее положение.

ClearDevice-очищает графический экран. указатель устанавливается в верхний левый угол.

rectangle(x1,y1,x2,y2:integer)

drawpoly(N:word)

var points

n(колличество точек излома, исключая обе райние.

points(содержит координаты точек излома.)

setColor-устанавливае текущий цвет для выводящихся линий и символов.

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

Использование динамической памяти, зависит от того какая ф-я выполняется для освобождения памяти и возращения её системе.ф-я dispose или пара процедур mark и release эти два способа никогданельзя смешивать в одной программе. ф-я new, позволяет получить память из динамической обл., в качестве аргумента данная ф-я использует указатель на ту переменну, которая должна размещаться в динамической обл., после обращеия значения аргумента, будет указывать на выделенный участок памяти.

type

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

type

qwer:=real;

var p:qwer;

begin

new(p)

\\\

end.

если в динамической памяти не будет свободного участка будет выдан код ошибки.

dispose

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

38 множества

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

пустое мн-во[].

множество из (set of)

операцииотношения(=,<>,>=,<=,in,u перевернутая u)

два множества равны если они состоят изодних и тех же эл.(не важно в каком порядке они стоят)

не равны если отл-ся хотя бы одним элементом.

больше А, если все элементы множества В, содержатся в множестве А.

А меньше, если все элементы множества А, содержатся в множестве В.

in- используется для проверки принадлежности какоо-либа эл, какому-то множеству.

применяется в ус-х операторах.

объединение множеств

(+ сцепление) в третье множество положим все эл-ты двух множеств.

пересечениемножеств(*) в третьеммн-ве будут эл-ты, которые одновременно входят в оба мн-ва.

разность

в третьем элементы первовго, не входящие во второе.

сочетание

41,42,43 файлы

файл — поименованная совокупность байтов произвольной длины, находящихся на носителе информации.

признаки:

фиксированное имя (последовательность символов, число или что-то иное, однозначно характеризующее файл);

определённое логическое представление и соответствующие ему операции чтения/записи.

свойства:

В зависимости от файловой системы, файл может обладать различным набором свойств.

Операции с файлом

Условно можно выделить два типа операций с файлом — связанные с его открытием, и выполняющиеся без его открытия. Операции первого типа обычно служат для чтения/записи информации или подготовки к записи/чтению. Операции второго типа выполняются с файлом как с «объектом» файловой системы, в котором файл является мельчайшей единицей структурирования.

файловые переменные связываются с тменем файла при помощи ста. процедуры:

assign

assign (<.ф.п>,<им. ф.>)

ф.п - идентификатор

еслиимя файла задаётся ввиде пустой строки, то

assign(f,'')

инициализация - значит указать для этого файла направлениепередачи файла.

чтение файла(reset)

reset(<ф.п.>), где файловая переменная до этого уже была связана с им. ф.

им. ф- текстовое выражение, содержащее имя файла.

мы можем либо перезаписать/создать файл: rewrite(f);

read(f,b); - прочитать

write(f,b); - записать

После работы файл надо закрыть: closefile(f); , однако связь с ф. , создаваемая асигном-сохр..

Вот пример записи/перезаписи файла:

procedure writefileusingstream(s, filename: string); begin with tfilestream.create(filename, fmcreate or fmopenwrite) do try write(pointer(s)^, length(s)); finally free; end; end; Типизарованные файлы(задаётся предложением file of

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

Нетипизированные (типом File)

для них неуказан тип компонтов.отсутсвие типа позволяет наладит связь этих ф. с друними, что ускоряет обмен между диском и памятью.

reset

rewrite приих помощиможно указать длину нет. ф. в байтах.

Текстовые(текст)

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

45. доступ к системным ресурсам

директивы компилятора:

в меню опции/компилятор включены опции, с помощью которых можно управлять работой компилятора.в ряде случаев бывает необходимо отключить ту ли иную опцию, при трансляции некоторого объекта программы.особенно часто такая необходимость возникает при обращении к диску:если программа пытается прочитать несуществующий файлили записать данные на защищённый диск. возникает ошибка периода исполнения программа. если исклшючить опцию в/вывода, то ошибки не произойдёт. в директиве {$М} все размеры задаются в байтах.они устанавливают требуемый размер памяти.между буквой М и первой цифрой разера стека, должен стоять хотя бы один пробел.между последней цифрой верхней границы динамической памяти не должно быть никаких символов.

например{$M 16384,0,655360}

16384 - азмер стека

0 -нижняя граница динамической памяти

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]