"Информатика (базовый уровень)", Угринович Н.Д.
Запись, множество и файловый тип помогают программе работать не только с отдельными значениями, но и со связанными данными. Запись объединяет характеристики одного объекта, множество задаёт набор различных значений, а файл хранит последовательность однотипных компонентов для обработки. У каждого типа свой способ обращения к данным: поля записи выбирают по имени, принадлежность множеству проверяют, а файл читают или заполняют последовательно. Выбор зависит от задачи.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Запись — составной тип, в котором одна переменная объединяет именованные поля разных типов. Например, в записи об ученике можно хранить фамилию, класс и средний балл, хотя эти значения имеют разные типы. К полю обращаются по его имени, поэтому запись подходит для описания объекта с несколькими характеристиками.
Множество — составной тип, задающий набор различных элементов одного базового типа. Например, можно задать множество допустимых оценок и проверять, входит ли введённое значение в этот набор. Такое представление удобно, когда нужно отличить допустимое значение от недопустимого, не перебирая вручную отдельные варианты.
Файловый тип предназначен для последовательности однотипных компонентов, которую программа может хранить и обрабатывать как файл. Компоненты файла читают или записывают один за другим, а сами данные могут сохраняться вне оперативной памяти. Это нужно, чтобы использовать результаты после завершения программы или передавать данные между запусками.
Компонент составного типа — отдельная часть записи, множества или файла. В записи компонентом является поле, в множестве — входящее в него значение, в файле — очередной элемент последовательности. Термин помогает говорить о частях структуры, но способ работы с ними каждый раз определяется типом данных.
Составные типы нужны, когда простое значение не может представить все данные задачи. Если хранить сведения об объекте в отдельных переменных, легко перепутать, какая характеристика к нему относится; если нужна последовательность значений, их неудобно обрабатывать как независимые данные. Объединение связанных элементов в структуру помогает сохранять их смысл и выбирать подходящие операции.
Поля записи заранее задаются именами, а их типы могут различаться. Это отражает устройство реального объекта: у ученика есть фамилия, класс и средний балл, и для этих характеристик естественны разные типы значений. Обращение по имени поля делает программу понятнее и снижает риск перепутать данные, особенно если у записи много характеристик.
Множество строится из элементов одного базового типа и не содержит повторяющихся значений. Это соответствует самой идее набора: если элемент уже входит в него, добавление такого же значения не создаёт нового элемента. Поэтому множество подходит для проверки, разрешено ли значение, например входит ли оценка в заранее установленный список допустимых вариантов.
Файл представляет данные, которые программа сохраняет вне оперативной памяти. Поскольку файл может быть большим и его содержимое не обязано целиком находиться в памяти, компоненты обычно обрабатывают последовательно средствами чтения и записи. Перед такими действиями файл открывают в подходящем режиме: чтение используют для получения данных, запись — для сохранения данных.
Выбирать составной тип следует по тому, какую задачу нужно решить. Если требуется описать один объект несколькими характеристиками, подходит запись; если нужно задать допустимые значения и проверять принадлежность, подходит множество. Для сохранения и последовательной обработки данных используют файловый тип, потому что его назначение связано с работой с компонентами файла.
| Свойство | Запись | Множество | Файловый тип |
|---|---|---|---|
| Что объединяет | Разнотипные поля | Различные элементы одного базового типа | Однотипные компоненты |
| Как задаются части | Именованные поля | Элементы множества | Последовательность компонентов |
| Для чего используют | Описание объекта с несколькими характеристиками | Проверка принадлежности к набору | Хранение и последовательная обработка данных |
Сравнивайте типы по строке, которая соответствует вашей задаче: что именно нужно объединить, как обратиться к частям и для чего нужна структура. Если требуется описать один объект, ориентируйтесь на столбец «Запись», а для проверки допустимых значений — на столбец «Множество». Для данных, которые нужно сохранить и затем обработать по очереди, подходит файловый тип.
Условие: нужно описать тип «ученик» с фамилией, классом и средним баллом, а затем получить средний балл конкретной записи. У объекта три характеристики, и они могут иметь разные типы: фамилия — строковый, класс — целочисленный, средний балл — вещественный. Поэтому подходит запись, а не массив однотипных элементов.
Ответ: характеристики ученика объединяются в записи, а средний балл извлекается обращением к одноимённому полю конкретной записи.
Условие: требуется задать множество допустимых оценок и проверить введённую оценку. Здесь не нужно сохранять несколько характеристик одного объекта: важен сам набор значений, которые программа считает разрешёнными. Поэтому используем множество элементов одного базового типа, например целых чисел.
Ответ: допустимость оценки определяется проверкой её принадлежности множеству заранее заданных значений. Это проще и нагляднее, чем описывать набор разрозненными условиями.
Условие: нужно сохранить последовательность целых чисел в файле, прочитать её и подсчитать количество положительных значений. Все компоненты имеют один тип, а обрабатывать их следует один за другим. Значит, задача соответствует файловому типу и последовательному чтению.
Ответ: нужно последовательно прочитать компоненты файла, для каждого проверить условие «число больше нуля» и подсчитать значения, удовлетворяющие этому условию. Перед чтением файл обязательно открывают в нужном режиме.
Ошибка: обращаться к полю записи как к элементу массива, например выбирать его по числовому индексу. Так делают, потому что обе структуры объединяют несколько частей, но устройство у них разное: у записи части имеют собственные имена. Проверьте себя: если обращаетесь к характеристике объекта, укажите именно имя соответствующего поля.
Ошибка: считать, что множество хранит порядок или повторяющиеся элементы. Путаница возникает из-за привычки воспринимать перечисление значений как список, но множество задаёт именно набор различных элементов. Проверьте себя: спросите, важно ли для задачи, в каком порядке заданы значения и сколько раз встречается одно и то же; если важно, множество не отражает это свойство.
Ошибка: задавать элементы множества разных базовых типов. Иногда кажется, что в один набор можно включить любые подходящие по смыслу данные, однако все элементы должны соответствовать одному базовому типу. Проверьте себя: сравните типы значений, которые планируете включить; если они различаются, такой набор не соответствует определению множества.
Ошибка: считать файловую переменную уже прочитанным содержимым файла. Это происходит из-за смешения обозначения файла и данных, которые в нём хранятся. Проверьте себя: перед обработкой убедитесь, что файл открыт в нужном режиме, а программа действительно выполняет операции чтения или записи его компонентов.
Для понимания составных типов нужно знать простые типы данных, переменные и присваивание: поля записи и компоненты файла сами имеют определённые типы и значения. Также важно уметь обращаться к элементам структурированных данных, чтобы не путать выбор поля по имени с доступом к элементу массива по индексу. Эти знания помогают определить, как именно программа получает нужную часть данных.
Записи и множества используют при моделировании объектов и обработке наборов значений. Файловый тип связан с сохранением результатов и обменом данными между запусками программы: файл позволяет не терять информацию после завершения работы. Поэтому все три типа дополняют базовые переменные и помогают выбирать представление данных под задачу.
Чем запись отличается от массива?
Массив обычно содержит элементы одного типа, к которым обращаются по индексу. Запись объединяет поля, которые могут иметь разные типы, и каждое поле выбирают по имени.
Могут ли поля одной записи иметь разные типы?
Да. Например, фамилия может быть строкой, класс — целым числом, а средний балл — вещественным числом. Такая запись описывает разные характеристики одного ученика.
Может ли множество содержать одинаковые элементы?
Нет, множество задаёт набор различных значений, поэтому повторения не имеют смысла. Также его элементы должны принадлежать одному базовому типу.
Зачем программе нужен файловый тип?
Он позволяет работать с последовательностью однотипных данных, сохранённой в файле. Так программа может сохранить результаты или прочитать их при следующем запуске.
Почему перед чтением файла его нужно открыть?
Открытие связывает файловую переменную с конкретным файлом и задаёт режим работы. После этого программа может выполнять предусмотренные операции чтения или записи.
2.6.2. Другие составные типы данных