Есть ответ 👍

Что такое кортежи и для чего они нужны? объясните понятным языком на примере pascalabc.net

191
428
Посмотреть ответы 2

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


Кортеж (tuple) - последовательный набор данных фиксированной длины. данные в кортеже могут быть разного типа, их количество обычно невелико (в pascal abc.net 3 - максимум 7). важно, что кортеж создается на этапе компиляции, поэтому его структура неизменна. данные в кортеже нельзя редактировать - они доступны только на чтение. внешне кортеж выглядит как список. например, список аргументов у функции или процедуры. и запись (record) в паскале - тоже своего рода кортеж. кортежи могут быть весьма полезны. например, в паскале обычно функция возвращает некоторое значение. а если надо, к примеру, два? процедуру делать? кортеж решает эту проблему. ниже пример работающей программы на pascalabc.net 3.3. напомню, что идентификаторы в программе могут содержать символы unicode из любых алфавитных наборов, поэтому имена переменных написаны кириллицей. function divmod(a,b: integer): =(a div b,a mod b); begin   var (делимое,делитель): =readinteger2('делимое и делитель: ');   var (частное,остаток): =divmod(делимое,делитель);   writeln('частное = ',частное,', остаток = ',остаток) end. пример делимое и делитель: 356432 242 частное = 1472, остаток = 208 пример демонстрирует возможности, которые открывают кортежи. функция divmod возвращает кортеж из двух элементов. кортежу она состоит из единственного оператора и это позволило записать её в одну строку. содержимое кортежа определяется заданными выражениями, их тип - типом результата (integer). readinteger2 - это функция, возвращающая кортеж из двух элементов типа integer, принятых с клавиатуры. левая часть оператора присваивания var (делимое,делитель): = реализует так называемое кортежное присваивание. (делимое,делитель) - это запись кортежа, поскольку перечисление находится в круглых скобках. но именно в таком употреблении это одновременно две различные переменные, которым будет присвоено значение элементов кортежа. кортеж в правой части "распаковывается" так, что значение первого элемента кортежа попадает в первую переменную, а второе - во вторую. в результате оказалось достаточно одного оператора, заменяющего три: var делимое,делитель: integer; write('делимое и делитель: '); read(делимое,делитель); еще одно кортежное присваивание var (частное,остаток): =divmod(делимое,делитель); создает две переменные типа integer и распаковывает в них кортеж, возвращаемый функцией divmod. и только процедура вывода writeln() написана без кортежа. чтобы показать, как можно использовать элементы кортежа без распаковки, пример запишем иначе. function divmod(a,b: integer): =(a div b,a mod b); begin   var (делимое,делитель): =readinteger2('делимое и делитель: ');   var t: =divmod(делимое,делитель);   writeln('частное = ',t[0],', остаток = ',t[1]) end. здесь t - кортеж типа (integer,integer). присваивание одного кортежа другому делается обычным способом. в обращении к элементам кортежа мы пользуемся синтаксисом, принятым для элементов массива, индексированных от нуля. понятно, что в кратком ответе невозможно описать все, что языку программирования кортежи. закончить хочу примером того, как кортеж позволят обменять местами значения двух переменных: (a,b): =(b,a); и, поскольку вы раньше задавали вопрос о лямбдах -вот она: begin   var divmod: (integer,integer)-> (integer,integer): =(a,b)-> (a div b,a mod b);   var (делимое,делитель): =readinteger2('делимое и делитель: ');   var t: =divmod(делимое,делитель);   writeln('частное = ',t[0],', остаток = ',t[1]) end.

Простите, а какой тут

Реши свою проблему, спроси otvet5GPT

  • Быстро
    Мгновенный ответ на твой вопрос
  • Точно
    Бот обладает знаниями во всех сферах
  • Бесплатно
    Задай вопрос и получи ответ бесплатно

Популярно: Информатика

Caktus Image

Есть вопросы?

  • Как otvet5GPT работает?

    otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса.
  • Сколько это стоит?

    Проект находиться на стадии тестирования и все услуги бесплатны.
  • Могу ли я использовать otvet5GPT в школе?

    Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое!
  • В чем отличия от ChatGPT?

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

Подпишись на наш телеграмм канал

GTP TOP NEWS