Компьютерный мастер - Allcorp66

Файлы данных

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

Текстовые файлы с последовательным доступом (файлы последовательного доступа) не имеют какой-либо структуры. Структура этих файлов определяется самой считывающей программой. В текстовых файлах с последовательным доступом каждая строка заканчивается двумя специальными символами: конец строки и возврат каретки, которые вводятся в текст программы при нажатии клавиши Enter (Ввод) на клавиатуре. Поэтому один из самых легких способов обработки текстового файла с последовательным доступом состоит в чтении его строка за строкой. Создание текстовых файлов с последовательным доступом также не представляет большого труда. Его можно создать любым текстовым редактором. Данные в файл последовательного доступа записываются последовательно байт за байтом. Чтобы проанализировать и выбрать нужную информацию, файл должен быть полностью прочитан. Это повышает требования к объему оперативной памяти и снижает скорость выполнения программы.

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

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

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

Открытие файлов

Для открытия файлов служит команда Open .

Open “спецификация_файла” For { тип файла}

As [#] N



Опция “Спецификация_файла ”, как известно, позволяет указать диск, маршрут, имя и расширение имени файла. Например: R:/Prognoz/Ucheb/prognoz1.dan. Чтобы файл мог использоваться на компьютерах и с операционной системой MS DOS, имя файла и его расширение должны формироваться по правилам операционной системы MS DOS. Tо есть в имени файла и расширении имени файла могут использоваться только латинские символы и цифры, имя файла должно начинаться с буквы, длина имени файла не должна превышать 8 символов, а расширение имени файла – четырех символов, включая точку. В имени файла не допускается использование точек и пробелов. Спецификация файла заключается в кавычки.

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

Input – файл последовательного доступа, открыт для чтения;

Output – файл последовательного доступа, открыт для записи;

Append - файл последовательного доступа, открыт для добавления данных;

Bynary – двоичный файл открыт для записи и чтения данных:

Random – файл прямого доступа открыт для записи и чтения данных.

Опция Access определяет права доступа к данным при работе в сетях ЭВМ. Она может иметь три значения:

Read – разрешено чтение данных из файла;

Write – разрешена запись данных в файл;

Read Write - разрешено чтение и запись данных. Этот режим доступа используется по умолчанию.

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

Shared – файл может использоваться всеми процессами для считывания и записи данных;

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

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

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

Опция As – определяет номер канала. Знак # можно опустить. Номер канала может принимать значения от 1 до 255. Число одновременно открытых каналов определяется ограничениями операционной системы, указанными в файле Config.sys.

Опция Len – используется только в файлах прямого доступа. Она устанавливает длину записи в байтах.

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

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

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

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

Закрытие файлов

Для закрытия файлов используется команда Close . Синтаксис команды:

Close [# <номер канала> ]

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

Команды записи данных в файл и чтения информации из файлов данных зависят от типа файла.

Вторым файлом, необходимым для работы See5, является файл данных. Он имеет расширение *.data. В нашем случае это файл USR . data .

Каждому объекту в файле данных соответствует собственная строка. Если значение целевой переменной находится вверху файла имен переменных, строка начинается со значения этой целевой переменной. Затем через запятую следуют значения всех остальных признаков. Неизвестные значения переменных кодируются вопросительным знаком «?», после вертикальной черты «|» можно писать невоспринимаемые системой комментарии.

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

Файлы тестовых данных (необязательные)

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

Третий вид файла, используемый системой See5, содержит новые тестовые объекты. Это то, что еще принято называть контрольной выборкой. Данный файл USR . test является необязательным и, если используется, имеет формат уже описанного файла USR . data .

Следующий вспомогательный файл USR . cases также является необязательным. Он содержит объекты с неизвестной классификацией.

Файл стоимости

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

Интерфейс пользователя

В главном окне See5 располагается пять кнопок (рис. 1). Перечислим их слева направо.

С помощью кнопки Locate Da ta (местонахождение данных) вызывается окно для просмотра доступных файлов данных и их загрузки в систему.

Нажатием кнопки Construct Classifier (построение классификатора) производится обращение к окну диалога для выбора типа классификатора и установки его параметров. Кнопка Stop предназначена для останова процесса построения дерева решений.

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

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

Рис. 1. Главное окно системы See 5

Построение дерева решений

На первом этапе обработки данных обычно используются параметры системы, установленные по умолчанию. Нажимаем кнопку Construct Classifier и затем в появившемся окне диалога (рис. 29) сразу нажимаем (предполагается, что файл данных USR . dat a уже загружен). Система выдает окно результатов, которые выглядят следующим образом (рис. 3). В первой строке отчета о результатах дается информация об используемой версии системы See5 и текущее время. Затем в следующих двух строках говорится о том, что классифицирующей переменной служит diagnosis и прочтенный файл данных USR . data содержит 74 объекта, каждый из которых описан одиннадцатью признаками.

Рис2. Окно диалога для задания параметров алгоритма конструирования классификатора

В следующих строках отчета отображено построенное дерево решений. Его можно проинтерпретировать следующим образом:

ЕСЛИ Index больше 0,69 и Speed больше 18, ТО класс № 3, иначе

ЕСЛИ Index больше 0,69 и Speed не больше 18 и Thickness не больше 46, ТО класс № 1

и т. д.

Каждая ветка дерева заканчивается указанием номера класса, к которому она приводит. Сразу за номером следует запись вида (я) или (п/т). Например, самая первая ветка заканчивается записью (12,0). Это означает, что данной ветке соответствует 12 объектов из определенного (третьего) класса. Последняя ветка заканчивается записью 1 (6,0/1,0), из чего следует, что эта ветка описывает класс № 1 и сюда попадают 6 объектов, из которых 1 попадает ошибочно. Величины п или т могут оказаться дробными в случае, когда на какую-либо ветку придется некоторое число объектов с неизвестными значениями признаков.

В следующем разделе отчета приводятся характеристики сконструированного классификатора, оцениваемые на обучающей выборке. Здесь мы видим, что построенное дерево решений имеет 9 веток (size = 9), а ошибка классификации наблюдается на 5 объектах, что составляет 6,8 %.

Взавершающей части отчета дается таблица с детальным разбором результатов классификации. Исходя из данных этой таблицы, можно сказать, что из 1-го класса (здоровые почки) правильно классифицируются 20 объектов, а 2 объекта ошибочно относятся к классу 2; среди объектов 2-го класса (множественные кисты) 35 диагностируются правильно и 2 ошибочно признаются здоровыми; все объекты 3-го класса (гидронефроз) классифицируются правильно за исключением одного объекта, попадающего в класс № 2.

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

Можно еще более подробно разобрать результаты нашей классификации. Для этого нажмем в главном окне See5 кнопку Cross-Reference (перекрестная ссылка). Система выдаст окно, в левой половине которого нарисовано построенное дерево решений, а в правой половине перечисляются объекты, попавшие на ту или иную ветвь дерева. Чтобы выделить интересующую ветвь, нужно щелкнуть по ней левой кнопкой мыши (справа от ветви появится темный круг - на рис. 4 на него указывает стрелка). Кроме того, если щелкнуть мышью по номеру какого-либо объекта из правого поля, то система выдаст еще одно окно с именем Case, в котором приводятся значения признаков и выделенного объекта. В случае, показанном на рисунке, нас заинтересовала ветвь (Index <=0.69 и Age.<"43), на которой находятся 10 объектов из 1-го класса и 1 объект из 2-го класса.

Рис. 4. Отображение результатов классификации в окне перекрестных ссылок

Файлы, сохраненные в формате данных используются программой Analysis Studio, и это приложение хранит в этих файлах данных деталей, используемых для автономного анализа. Эти данные могут быть введены в соответствующий файл данных, созданное пользователем Analysis Studio. Как правило, классифицируются как файлы данных, эти файлы DATA прикреплены с расширением.data и более конкретно называется Analysis Studio файлы данных в автономном режиме. Appricon разработала формат данных и программное обеспечение Analysis Studio, чтобы предоставить пользователям автономного хранения данных и аналитических функциональных возможностей полезной instatistical данных исследований, хранения, управления и анализа. Содержание этих файлов данных может включать в себя данные, закодированные в текстовом формате или в разделителями табуляции форматов. заголовки файлов Analysis Studio также могут быть включены в эти данные файлов пользователем Analysis Studio. Пользователь отключен от сервера Analysis Studio, как правило, получает доступ к этим данным файлов в автономном режиме, хотя программное обеспечение Analysis Studio также предоставляет пользователю доступ к содержанию этих файлов данных даже в режиме реального времени. Содержание этих файлов данных также могут быть импортированы из других баз данных, таких как Microsoft SQL Server и баз данных Microsoft Access. Программное обеспечение Analysis Studio связывает файл с данными в соответствующий файл STP, и содержание этих файлов STP состоит из метаданных объекта и детали проекта схемы. Пользователь Microsoft Windows может удалить файл заголовка Analysis Studio файла данных, чтобы открыть и просмотреть его содержимое с помощью электронных таблиц приложения Microsoft Excel 2010.

вполне закономерен.

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

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

Рассмотрим пример. Файл "document.doc". Здесь "document" это имя файла, а "doc" это расширение, которое указывает Windows, что данный файл необходимо открывать и редактировать с помощью текстовых процессоров, таких как Microsoft Word или OpenOffice Writer. В случае если расширение не известно Windows (не установлено необходимых программ), то система предложит выбрать программу вручную. Стоит знать, что в Windows есть предопределенные наборы известных расширений, таких как txt (текстовый файл), exe (исполняемая программа) и прочие.

Классификация файлов по функциональному применению

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

1. Файлы пользователя - рисунки, веб-страницы, документы, таблицы и прочие файлы, которые пользователи используют для собственных задач. Имена таких файлов ограничены лишь стандартом имен Windows. Расширения таких файлов обычно не задаются пользователями, а автоматически проставляются используемыми программами, во время создания файлов. Например, программа Microsoft Word выставляет расширение "doc" или "docx" (в зависимости от версии), а OpenOffice Writer устанавливает "odt".

2. Системные файлы - все файлы, которые необходимы Windows для нормального функционирования. Имена таких файлов так же не противоречат стандарту имен Windows, однако они предопределены еще до установки операционной системы. Поэтому такие файлы нельзя переименовывать или изменять пользователям, так как это чревато возникновением ошибок.

3. Программные файлы - все те файлы, которые используются установленным программным обеспечением. С точки зрения формирования имени, они аналогичны системным файлам. Другими словами, так же не противоречат стандарту имен, но имеют фиксированные имена, которые были определены автором. Стоит знать, что программы могут так же создавать программные файлы во время своего функционирования. Например, файлы журнала ошибок или файлы конфигурации. Эти файлы должны редактироваться только самой программой, в противном случае могут возникать ошибки (при условии, что программное обеспечение не предусматривает обратного).

Стандарт имен файлов в операционной системе Windows.

Рассмотрим стандарт имен файлов в операционной системе Windows. Имеется два набора символов:

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

2. Допустимый набор символов . Сюда входит пробел, подчеркивание, апостроф, точка с запятой, точка, запятая, а так же специальные символы " ! @ # $ % & " (и часть специальных символов основной кодировки). Стоит знать, что этот набор символов интерпретируется Windows специфически. Поэтому по возможности не стоит их применять. Тем не менее, с символами пробела, точки, запятой и подчеркивания редко возникают проблемы. А вот при использовании остальных символов могут возникать ошибки. Особенно, с некоторыми спецсимволами. Так же стоит знать, что если вам нужны файлы, которые будут нормально открываться и в других операционных системах, то стоит ограничиваться только цифрами и латинским алфавитом, а точку использовать только для разделения имени и расширения.

Запрещенный набор символов - в именах файлов нельзя использовать: \ /: * ? < > |

Что такое файл в графическом интерфейсе ? Windows имеет собственную графическую оболочку, которая позволяет пользователям взаимодействовать с компьютером. В этом интерфейсе файлы показываются в виде небольших изображений, которые так же еще называют иконками или значками, и имени с расширением (при определенных настройках расширения файлов не отображаются). Обычно, если тип расширения известен Windows, то иконка такого файла будет специфической. Например, текстовые файлы с расширением "txt" обычно представлены значком блокнота.

Как формируется полный путь до файла . У компьютера есть диски, они представлены латинской буквой. Это первая составляющая пути. После нее ставится разделитель в виде двоеточия и косой черты ":\". В случае если файл лежит в корне диска, то далее идет полное имя файла (далее по тексту просто имя файла). Если же файл лежит в каталоге, вначале указывается имя каталога, затем ставится символ "\" и указывается имя файла. Если же файл находится в подкаталоге каталога, то после каталога так же должно идти имя подкаталога и "\". Далее по аналогии. В данном случае символ "\" является разделителем, который позволяет идентифицировать каждую часть полного пути до файла.

В программе понятия файлов используется для решения двух задач:

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

В языке Паскаль внешние файлы рассматриваются с точки зрения требования к ним с MS-DOS. Файлом в MS-DOS называется поименованная область на диске, где хранится информация, при этом требование к имени файла должны строго соответствовать требованиям MS-DOC (собственное имя не более 8 символов, расширение - 3 символа, буквы латинского алфавита, первый символ обязательно буква).

В Pascal любой внешний файл имеет 3 особенности:

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

Внешние файлы имеют связь с файловой переменной, которая заменяет имя файла в программе. В Pascal переменная файлового типа или файловый тип задается одним из 3-х способов в разделе Type:

  • [имя]: File of [тип];
  • [имя]: Text;
  • [имя]: File;

[имя] - имя файловой переменой.

По способу объявления различают следующие виды файлов:

  • типизированные файлы (File of);
  • текстовые файлы (Text);
  • не типизированные файлы.

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

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

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

В логической структуре каждая компонента внешнего файла занимает место, которая определяется типом компонента. В принципе, логическая структура файла данных схожа со структурой массива. Разница между файлом и массивом заключается в следующем: у массива, в момент распределения памяти, фиксируется количество элементов, и он полностью находится в ОП. Нумерация элементов массива выполняется с границами, указанными при объявлении. У файла в процессе работы в программе число элементов может изменяться, а, кроме того, он находится на внешнем носителе. Нумерация элементов файла, кроме текстовых файлов начинается слева на право, начиная с 0. Количество компонентов в любой момент времени неизвестно. Зато в конце файла находится символ конца файла EOF (End of File), в качестве которого применяется управляющий символ из ASCII кодом #26 (Ctrl+z). Также в программе можно определить длину файла и выполнить другие операции с помощью стандартных процедур и функций.

Особый вид файлов в Pascal является текстовые файлы. В принципе текстовый файл можно рассматривать как разновидность типизированных файлов. В текстовых файлах помимо признака конца файла, еще используется признак конца строки EoLn (End of Line). Признак EoLn соответствует коду #13, который генерируется клавишей Enter. Структуру текстового файла можно представить в следующем виде:

Стандартные файлы ввода (Input) и вывода (Output), использующие ввод с клавиатуры и вывод на дисплей, являются текстовыми. Не смотря на то, что текстовый файл является разновидностью Char, имеются отличия текстового файла от файла символа:

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

Процедуры и функции для работы с внешними файлами

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

Формат: Assign([файловая_переменая],[имя_файла_или_логическое_имя_устройства]);

Имя файла должно содержать полный путь к этому файлу, начиная от текущего каталога. В качестве логического устройства используются два устройства: ‘con’ - экран монитора; ‘prn’ - принтер.

Rewrite - создание нового файла.

Формат: Rewrite([файловая_переменая]);

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

Reset - установка файла в исходное состояние.

Формат: Reset([файловая_переменая]);

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

Read (ReadLn ) - считывание из файла.

Формат: Read([файловая_переменая],[список_ввода]);

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

Write (WriteLn ) - запись в файл.

Формат: Write([файловая_переменая],[список_вывода]);

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

При работе с текстовыми файлами необходимо правильно соблюдать использование процедур Read (ReadLn) и Write (WriteLn). При записи данных Write - считывание Read, при записи WriteLn - считывание ReadLn.

Close - закрытие файла.

Формат: Close([файловая_переменая]);

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

Append - добавление элементов.

Формат: Append([файловая_переменая]);

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

Erase - стирает файл с диска.

Формат: Erase([файловая_переменая]);

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

Функция EoF

Формат: EoF([файловая_переменая]);

Логическая функция возвращает истину, если указатель в конце файла и ложь в другом случае.

Функция EoLn

Формат: EoLn([файловая_переменая]);

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

Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter
ПОДЕЛИТЬСЯ: