На Горох
Информатика, 11 класс

2.6.2. Другие составные типы данных

"Информатика (базовый уровень)", Угринович Н.Д.

Объяснение темы В оглавлении: 2.6.2. Другие составные типы данных

Кратко о теме

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

Объяснение темы

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

Определения и обозначения

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

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

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

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

Как это устроено

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

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

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

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

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

Другие составные типы данных

СвойствоЗаписьМножествоФайловый тип
Что объединяетРазнотипные поляРазличные элементы одного базового типаОднотипные компоненты
Как задаются частиИменованные поляЭлементы множестваПоследовательность компонентов
Для чего используютОписание объекта с несколькими характеристикамиПроверка принадлежности к наборуХранение и последовательная обработка данных

Сравнивайте типы по строке, которая соответствует вашей задаче: что именно нужно объединить, как обратиться к частям и для чего нужна структура. Если требуется описать один объект, ориентируйтесь на столбец «Запись», а для проверки допустимых значений — на столбец «Множество». Для данных, которые нужно сохранить и затем обработать по очереди, подходит файловый тип.

Разбор задач

Описать ученика и обратиться к среднему баллу

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

  1. Определяем поля записи: фамилия, класс и средний балл. Эти имена обозначают характеристики, которые будут храниться вместе.
  2. Создаём переменную этого типа для конкретного ученика и заполняем её поля нужными значениями. Важно, что все характеристики относятся к одной записи.
  3. Чтобы получить балл, обращаемся к полю «средний балл» по имени. Числовой индекс здесь не нужен, потому что поля записи не выбирают как элементы массива.

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

Проверить, допустима ли оценка

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

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

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

Посчитать положительные числа в файле

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

  1. Сначала подготавливаем последовательность чисел для сохранения и открываем файл в режиме записи. Записываем в него значения так, чтобы программа могла затем последовательно их прочитать.
  2. Для чтения открываем файл в режиме чтения. Затем получаем очередной компонент и проверяем, больше ли он нуля; если да, увеличиваем счётчик положительных чисел.
  3. Повторяем чтение и проверку для всех компонентов файла. После завершения обработки выводим значение счётчика, которое показывает, сколько положительных чисел встретилось.

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

Типичные ошибки

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

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

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

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

Связь с другими темами

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

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

Что запомнить

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

Частые вопросы по теме

Чем запись отличается от массива?

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

Могут ли поля одной записи иметь разные типы?

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

Может ли множество содержать одинаковые элементы?

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

Зачем программе нужен файловый тип?

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

Почему перед чтением файла его нужно открыть?

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

Спросить по теме параграфа

2.6.2. Другие составные типы данных

Учебник

Оглавление →
Предмет
Информатика
Класс
11 класс
Учебник
"Информатика (базовый уровень)", Угринович Н.Д.