2.1.      Понятие интегрированной среды разработки

Работа не может быть выполнена должным образом, если нет необходимых инструментов.

 

Алан. Дж. Перлис

 

 

Интегрированная среда разработки (IDE, integrated development environment) –специальная программа, предоставляющая возможность удобной совместной работы с различными компонентами системы программирования.

Термин “интегрированная” в названии среды означает, что она включает в себя в качестве элементов все необходимые инструменты для выполнения полного цикла работ над программой: написания, компиляции, построения исполняемого модуля, запуска, отладки. Кроме того, интегрированные среды позволяют выполнять следующие операции:

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

2.2.         Структура программы в Free Pascal

Программа в Free Pascal состоит из операторов или предложений языка, которые разделяются между собой точкой с запятой « ; » и записываются в свободном формате. В общем случае последовательность записи элементов программы должна выглядеть следующим образом:

Program <имя программы>;

uses <список имен используемых библиотек>;

const

 <объявление констант>

var

 <объявление переменных>

begin

 <раздел исполняемых операторов>

end.

Программа начинается с ключевого слова Program, затем указывается имя программы. Стоит отметить имя программы, задаваемое в заголовке, с точки зрения ее выполнения не играет никакой роли.

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

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

Самый последний раздел операторов – тело программы. Данный раздел начинается с ключевого слова begin и завершается другим ключевым словом end с точкой. В теле основной программы должны быть написаны все необходимые действия для решения поставленной задачи. Точка, которая указывается с ключевым словом end - является признаком конца текста программы.

2.3.         Типы данных

При решении любой задачи возникает необходимость хранения данных и их дальнейшего анализа. Возникает вопрос как эти данные хранятся в компьютере? Для хранения данных в памяти компьютера, данные должны быть закодированы в двоичный вид. В памяти компьютера могут размещаться данные различного вида, для считывания этих данных должен использоваться соответствующий способ интерпретации. Объем памяти выделяемый при этом конечен. Таким образом, для хранения и обработки параметров решаемой задачи важно выбрать соответствующий тип данных и их основные характеристики (диапазон возможных значений, занимаемые ресурсы оперативной памяти, набор операций применимых к значениям данного типа).

2.3.1.        Простые типы данных

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

 SHAPE  \* MERGEFORMAT

Простые типы данных

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

типы

Адресные

типы

Порядковые

типы

Стандартные типы

Нестандартные типы

Целочисленные типы

Символьные типы

Логические типы

Интервальные типы

Перечислимые типы

                                                                                                                      Рис. 2.1.Классификация данных простого типа

          2.3.1.1.Работа с целыми числами

Сокращенный список целочисленных типов данных, используемых в программах на языке Free Pascal приведен в таблице 2.1.

Таблица 2.1. Список целочисленных типов данных

Тип

Размер

Множество значений

Byte

8 бит

0..255

Word

16 бит

0..65535

Integer

32 бита

-32768..32767

Int64

64 бит

-263..263-1

Cardinal

32 бита

0..4294967295

Такое многообразие типов объясняется тем, что разработчики языка стремились предоставить программисту возможность выбора наиболее подходящего диапазона значений для конкретной задачи. Например, при решении задачи требуется хранить неотрицательные числовые данные, значения которых не превышает 255,в этом случае целесообразнее использовать тип данных – byte. Отметим, для размеров памяти 1,2 и 4 байта существует знаковый и беззнаковый варианты типов.

В языке Free Pascal предусмотрены арифметические операции над целыми числами: сложение (a+b), вычитание (a-b), умножение(a*b), деление (a/b), целочисленное деление (a div b), нахождение остатка от деления (a mod b). Ниже представлены несколько примеров выполнения арифметических операций:

  • 9 div 5 равно 1
  • 8 div 3 равно 2
  • 7 mod 4 равно 3
  • -11 mod 6 равно -5

          2.3.1.2. Работа с вещественными числами

Для представления вещественных чисел можно использовать следующие типы данных: Real, Double, Single, Comp, Extended, более подробное описание приведено в таблице 2.2.

Таблица 2.2. Список вещественных типов данных

Тип

Размер

Множество значений

Real

8 байт

-5.0∙10324..1.7∙10308

Single

4 байта

-1.5∙1045..3.4∙1038

Double

8 байт

-5.0∙10324..1.7∙10308

Comp

8 байт

-2∙1063+..2∙1063-1

Extended

10 байт

-3.6∙104951..1.1∙104932

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

В языке Free Pascal предусмотрены арифметические операции над вещественными числами: сложение (a+b), вычитание (a-b), умножение(a*b), деление (a/b).

          2.3.1.3.Логика и логический тип данных

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

Для работы с такими значениями многие языки программирования предоставляют специальный тип данных – логический тип. В языке Free Pascal этот тип называется Boolean. Логический тип имеет только два возможных значения, представленными предопределенными идентификаторами: True – “истина” и False – “ложь”.

Рассмотрим следующее утверждение: “У нас в группе 5 отличников и 4 троечника”. Эта фраза совмещает в себе два утверждения:

  • “У нас в группе 5 отличников”;
  • “У нас в группе 4 троечника”.

Оба утверждения объединены операцией “и”.

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

Наименование

Обозначение

Не (отрицание)

NOT

И (объединение)

AND

ИЛИ (дизъюнкция)

OR

Исключающее или

XOR

          2.3.1.4.Строковая информация и строковый тип данных

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

В первом приближении строка есть последовательность символов. Язык Object Pascal содержит несколько типов данных, позволяющих представлять строковую информацию. Самый простой из них мы рассмотрим сейчас, остальные – в главе 9.

Рассмотрим следующие объявления:

const

TestStr = 'Это пример строки';

var

s: ShortString; { Это переменная – строка }

s1: String[30]; { Это тоже строка, ограниченной длины }

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

2.3.2.        Понятие переменной

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

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

var

<список идентификаторов>: тип данных;

 

Список идентификаторов – это список из имен переменных. После двоеточия указывается тип данных. Рассмотрим пример объявления переменных:

var

 a, b, c: real;

 x , y: byte;

В приведенном примере переменная x определяется целочисленном типом данных integer. Для хранения этой переменной выделяется 1 байт. Значения, которые можно хранить в этой переменной определяются интервалом 0..255. В Free Pascal действует правило, согласно которому переменная в области своего действия может принадлежат только одному типу, т.е., например, одной и той же переменной не может быть приписано вещественное и строковое значение в процессе работы программы.

2.3.3.        Оператор присваивания и выражения

Как отмечалось ранее, при решении любой задачи возникает необходимость хранения и обработки информации. Для этих целей в программе используются переменные, способные принимать и хранить различные значения. В Free Pascal с помощью оператора присваивания позволяет установить требуемое значение переменной. Оператор присваивания имеет вид:

<переменная>:=<выражение>;

где « := » - знак присваивания.

Приведем несколько примеров использования оператора присваивания:

a := 7 + 3;

b := (a * a) + (c * c);

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

<LeftValue>:=<RightValue>;

 

LeftValue  - левая часть оператора присваивания, должна указывать на какую либо область памяти. Ниже приведенные примеры порождают сообщение об ошибке:

3 + 4 := a; { результат выражения «3 + 4» не связан с областью памяти }

b / c := 16; {результат выражения «b / c» не связан с областью памяти}

 RightValue – правая часть оператора присваивания может содержать любые допустимые в языке выражения. Отметим последовательность выполнения действий языком Free Pascal при выполнение оператора присваивания:

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

2.4.         Ввод/вывод информации в консольном приложении

Организация ввода и вывода информации является одной из важнейших задач для разработчика. С помощью ввода и вывода информации осуществляется взаимодействие с пользователем программы. В настоящее время большинство программ используют графический интерфейс (GUI – graphic user interface), основанный на понятии окна. Примерами таких программ являются Microsoft Word, Corel Draw, Skype и многие другие. Но существует класс задач, для которых возможности графического интерфейса и оконных приложений не нужны.  К этому классу задач можно отнести расчетные программы, системные утилиты. Для организации ввода и вывода информации используется текстовая консоль. Подпрограмма ввода с клавиатуры имеет следующий вид:

Read [(<список переменных>)];

или

Readln [(<список переменных>)];

где список переменных – является списком переменных любых стандартных типов данных языка Free Pascal.

Рассмотрим более подробно принцип работы оператора Read:

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

Отметим при использовании оператора Readln для ввода информации, после выполнения операции курсор на экране дисплея переводится в начало следующей строки.

Подпрограмма вывода на дисплей имеет следующий вид:

Write [(<список вывода>)];

или

Writeln [(<список вывода >)];

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

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

Рассмотрим пример использования операторов ввода и вывода информации в языке Free Pascal.

Program inputdata;

var

  x,y: integer;

begin

  write (‘Введите значение переменной x’);

  read(x);

  writeln(‘x=’,x);

  write (‘Введите значение переменной y’);

  read(y);

  writeln(‘y=’,y);

  write (‘Введите значение переменных x и y’);

  read(x);

  readln(y);

  writeln(‘x=’,x);

  writeln(‘y=’,y);

  readln;

end.

 

2.5.         Оператор ветвления

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

Вводим два числа

Если введенное значение первого числа больше значения второго числа, то

  выдаем сообщение: максимальное значение – первое число

иначе

  выдаем сообщение: максимальное значение – второе число

В словесном описании алгоритма использовалась алгоритмическая конструкция вида «если..то..иначе». Данная конструкция соответствует в точности оператору ветвления.

Формальная запись оператора ветвления if выглядит следующим образом:

if <условное выражение> then

   <оператор 1>

else

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

Отметим условное выражение, по которому осуществляется выбор должно иметь булевский вид. Если результат вычисления выражение принимает значение  Истина(True), то выполняется оператор 1, в противном случае выполняется оператор 2.

При использовании оператора ветвления нужно помнить синтаксическое правило: перед ключевым словом else, то есть после оператора, записанного в секции then, нельзя ставить точку с запятой.

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

Program find_max;

var

  x,y: integer;

begin

  write (‘Введите значение переменных x и y’);

  read(x,y);

  if (x > y) then writeln(‘максимальное значение’,x)

  else writeln(‘максимальное значение’,y);

  readln;

end.

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

Немного усложним задачу, необходимо найти максимальное и минимальное значение из двух введенных пользователем чисел. Данное усложнение позволяет познакомится с составным оператором. В формальной записи оператора ветвления можно использовать только один оператор в каждой ветке выбора. В нашем случае нужно выполнить несколько операторов, вывести на экран максимальное значение и на следующей строчке вывести минимальное значение. Для выполнения последовательности действий используются операторные скобки: ключевые слова begin и end. Такая конструкция называется составным оператором, пример использования, которых приведен ниже.

Program find_max;

var

  x,y: integer;

begin

  write (‘Введите значение переменных x и y’);

  read(x,y);

  if (x > y) then begin

    writeln(‘максимальное значение’,x);

    writeln(‘минимальное значение’,y);

  end

  else begin

    writeln(‘максимальное значение’,y);

    writeln(‘минимальное значение’,x);

  end;

  readln;

end.

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

if <условное выражение> then

   <оператор 1>

else

  ; { это пустой оператор, «ничего не делать»

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

if <условное выражение> then

   <оператор 1>

В качестве примера использования сокращенной записи оператора ветвления рассмотрим программу поиска корня уравнения ax + b = 0. Известно, что данное уравнение имеет ноль корней, если a = 0 и b ≠ 0, бесконечно много корней, если a = 0 и b = 0, один корень, если a ≠ 0.

program LinearEquation;

var

  a, b: real;

begin

  writeln('Введите коэффициенты уравнения ax+b=0: ');

  readLn(a, b);

  if (a = 0) and (b = 0) then

    writeln('Корней бесконечно много');

  if (a = 0) and (b <> 0) then

    writeln('Корней нет');

  if (a <> 0) then

    writeLn('x = ', -b/a);

end.

В представленном примере в операторе ветвления условные выражения содержит логическую операцию and. Для получения результата всего условного выражения подсчитывается значения обоих операндов. Например, значение переменной a равно нулю, а это значит, первый операнд принимает значение Истина, значение переменной b равно нулю, в этом случае второй операнд принимает значение Истина, тем самым условное выражение принимает значение Истина.

2.6.         Программирование циклов

2.6.1.    Цикл с предусловием

Рассмотрим задачу – игру «угадай число». В игре участвуют два человека, один загадывает число от 0 до 100, второй отгадывает. Каждый раз, когда второй участник предлагает возможный вариант, первый участник подсказывает –найдено число, больше загаданного число, меньше загаданного числа. В конце игры подсчитывается, сколько было сделано возможных вариантов, выигрывает тот у кого меньше. В этой игре первым участником будет компьютер, который будет с помощью датчика случайных чисел загадывать число. Второй участник – пользователь, который будет искать загаданное число. Составим алгоритм для решения этой задачи. Первым шагом – генерирование загаданного числа компьютером. Второй шаг – поиск загаданного числа пользователем. Если пользователь не угадывает число с первой попытки, что маловероятно, требуется повторение выполнения этого шага. Очевидно, потребуется алгоритмическая конструкция – цикл. Важным элементом цикла является выявление повторяемого действия и соответствующего однообразного представления обрабатываемых в цикле данных.

Общее представление цикла с предусловием в языке Free Pascal выглядит следующим образом:

while <условное выражение> do

  <оператор>;

При этом, как и в операторе ветвления, условное выражение должно иметь булевский тип. Пока результат вычисления выражения – Истина, выполняется оператор. Для циклов с предусловием характерно сначала проверка значения условного выражения, а затем выполнения операторов тела цикла. Если условное выражение принимает значение Ложь, цикл не выполняется. При необходимости выполнять в теле цикла несколько действий, нужно использовать составной оператор. Стоит отметить, что внутри цикла должны содержаться операторы, изменяющие значение условного выражения так, чтобы оно, в конце концов, стало равно Ложь.

Приведем теперь программу игры «угадай число».

program findvalue;

var

  a, b: integer;

  i, j: integer;

begin

  randomize;

  a := random(100);

  i := 0; {количество попыток устанавливается равным нулю}

  j :=0; {условие по которому будет осуществляться выход из цикла}

  while(j = 0 ) do

  begin

    writeln('Введите число’);

    readln(b);

    i := i + 1;

    if (a = b) then j := 1;

    if (b > a) then writeln('загаданное число меньше');

    if (b < a) then writeLn('загаданное число больше');

  end;

  writeln(‘число найдено. Количество попыток’,i);

  readln;

end.

Процедура randomize используется для инициализации датчика случайных чисел. Для генерирования случайного числа используется функция random. Более подробное описание процедур и функций дается в следующих главах.

2.6.2.    Цикл с постусловием

Во всех рассматриваемых выше задачах никогда не осуществлялась проверка ввода данных. Например, реализуется программа определения дня недели по заданной дате. Пользователь вводит дату – 1 сентября 2011, программа должна определить день недели. Программа будет работать не корректно для даты 31 сентября 2011, тем самым должен быть реализована проверка информации, который вводит пользователь. Если пользователь вводит данные не верно, то пользователю предлагается исправится и ввести данные в заданном интервале значений. Для осуществления контроля ввода данных можно использовать цикл с предусловием. Но в этом варианте осуществлялся повтор из двух строк.

  writeln('Введите день месяца’);

  readln(day);

  while(day < 0) or (day > 30) do

  begin

    writeln('Введите день месяца’);

    readln(day);

  end;

Эти строки выполняются до цикла – первоначальный ввод, и внутри цикла – повторный ввод. Неприятность эта – прямое следствие конструкции цикла while. Цикл while является циклом с предусловием – сначала проверка, потом действие. А условное выражение, на основании которого принимается решение об остановке, не может содержать неизвестных переменных. Для организации контроля ввода данных логичнее использовать цикл с постусловием - сначала действие, затем проверка и при необходимости повтор.

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

repeat

<оператор 1>;

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

...

<оператор N>;

until <условное выражение>;

Цикл repeat выполняется, пока результат вычисления условного выражения –Ложь. В теле цикла repeat может располагаться несколько операторов – в данном случае в качестве операторных скобок выступают ключевые слова repeat и until.

program controldata;

var

  day: Integer;

begin

  repeat

    write('Введите день месяца: ');

    readln(Day);

    if (day < 1) or (day > 30) then

       writeLn('Ошибка: День месяца вне диапазона 1..30');

until (day >= 1) and (day <= 30);

{ дальнейший текст программы }

end.

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

2.6.3.    Цикл с известным количеством повторений

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

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

В языке Free Pascal определен оператор цикла с известным числом повторений for. Формальная запись оператора for выглядит следующим образом:

for <счетчик цикла> := <начальное значение> to <конечное значение> do

  <оператор>;

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

Кроме указанной формы цикл for имеет второй вариант:

for <счетчик цикла> := <начальное значение> downto <конечное значение> do

  <оператор>;

В этом варианте в конце каждой итерации счетчик цикла автоматически уменьшается на единицу.

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

Ниже представлен пример использования цикла с известным числом повторений для подсчета факториала[1].

program factorial;

var

  N, i: integer;

  F: integer;

begin

  write('Введите значение аргумента: ');

  readln(N);

  F := 1;

  for i := 1 to N do

    F := F * i;

  writeln(N, '! = ', F);

  readln;

end.

2.7.         Основные операции работы с текстовыми файлами

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

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

В языке Free Pascal файлы разбиты на три категории по областям применения, в особый класс выделены текстовые файлы. Это последовательные файлы с записями переменной длины, содержащие кроме текста специальные символы типа “переход на следующую строку”. Для таких файлов длину записи чаще всего помещают в самое начало записи или используют специальный код – признак конца записи. Важно понимать, что текстовый файл не является файлом “строк”, то есть содержащим записи из констант типа String. Такой файл тоже можно создать, но он уже будет относиться к другому виду файлов. Для объявления текстовых файлов используется предопределенный идентификатор типа Text.

Для описания файла, который будет использоваться в программе, необходимо выполнить следующие действия:

  • Объявить переменную файлового типа;

Форма объявления переменной для текстовых файлов:

Name_file: TEXT;

  • Связать эту переменную с именованной областью данных на внешнем носителе;

Связывание имен логического и физического файла производится процедурой языка Free Pascal, обращение к которой имеет следующий вид:

assign(<имя логического файла>, <имя физического файла>);

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

assign(name_file, 'A:\BOOK\CHAPTER7.TXT');

  • Подготовить файл к работе (открыть файл)

Для окончательного приведения файла в состояние готовности к обмену файл надо открыть:

  • процедура Reset (name_file) – открывает для чтения файл, связанный с переменной name_file.
  • процедура Rewrite (name_file) – открывает для записи файл, связанный с переменной name_file.
  • процедура Append(name_file) – открывает для пополнения текстовый файл, связанный с переменной name_file.

Если, обрабатывая некоторый ранее созданный текстовый файл, мы не знаем заранее количество записей-строк, как же определить, когда файл закончится? Проблема состоит в том, что по самому файлу определить, сколько в нем строк невозможно – в языке Free Pascal операции для этого не предусмотрено. Для программистов доступна функция

SeekEof(<имя логического файла>);

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

Аналогичная проблема может возникнуть и при чтении отдельной записи. Составляя программу, разработч… Продолжение »

© a-urusov2011

Бесплатный конструктор сайтов - uCoz