1) подпрограмма (функция) может непосредственно вернуть значение в вызывающую программу, например: x: =cos(y); 2) подпрограмма может изменить значение значение переменных, и их новое значение будет доступно в вызывающей программе; 3) подпрограмме в качестве параметра может быть передан адрес объекта в памяти, и подпрограмма, изменив значение, передаст новое значение в вызывающую программу; 4) подпрограмме в качестве параметра может быть передана ссылка на объект, и подпрограмма сможет изменить значение этого объекта. вроде хотя нет 5) возможен обмен данными через файл - подпрограмма записывает данные в файл, вызывающая программа - читает эти значения (или наоборот). это, конечно, крайне не эффективно и на практике никогда не применяется, но возможность такая есть.
rikki07834591
04.04.2021
Сейчас буду немного писать беллетристику. терминологически не точно, но смысл постараюсь объяснить. 1. использовать переменные. то есть переменные из общего пространства имён для программы и подпрограммы. в таком случае программа и подпрограмма пользуются одними и теми же переменными, что хотят, то и записывают или читают. свободно и без ограничений. 2. передать данные из программы в подпрограмму можно в виде параметров. этот способ подразделяется на два: передача по значению, и передача по ссылке. 2а) когда параметры из программы в подпрограмму по значению, то подпрограмма создаёт внутри себя копии параметров, и использует их как свои локальные переменные. после завершения работы подпрограммы, такие копии уничтожаются, а исходные значения в вызывающей программе остаются как были, в неизменном виде. поэтому такая передача данных - как билет в один конец: данные уходят в подпрограмму, а обратно таким способом не возвращаются. 2б) когда параметры из программы в подпрограмму по ссылке, то вызывающая программа передаёт в подпрограмму указатели на соответствующие переменные. они на самом деле "под капотом" тоже , как в способе 1, но только их имена не используют общее пространство имён - как бы замаскированы. в таком случае, всё что подпрограмма делает с параметрами, приводит к изменению данных в вызывающей программе. похоже на способ 1. 2а) и 2б) - принципиально разные способы. 2в) ещё бывает способ передачи параметров по имени, но такой способ в массовых языках программирования используется редко. в таком случае в подпрограмму передаётся именованый список параметров, то есть список из пар: имя параметра + значение параметра. подпрограмма должна уметь такой список принять и обработать. в таком случае можно передавать списки параметров переменной длины, и произвольного состава. 3. в любом случае подпрограмма, если она оформлена в виде функции, может передать обратно в программу возвращаемое значение - результат вычисления, выполненного подпрограммой. у каждого способа есть свои преимущества и недостатки, поэтому в разных случаях используются разные.