
[Править]Совместный цикл
Ещё одним вариантом цикла является цикл, задающий выполнение некоторой операции для объектов из заданного множества, без явного указания порядка перечисления этих объектов. Такие циклы называются совместными (а также циклами по коллекции, циклами просмотра) и представляют собой формальную запись инструкции вида: «Выполнить операцию X для всех элементов, входящих во множество M». Совместный цикл, теоретически, никак не определяет, в каком порядке операция будет применяться к элементам множества, хотя конкретные языки программирования, разумеется, могут задавать конкретный порядок перебора элементов. Произвольность даёт возможность оптимизации исполнения цикла за счёт организации доступа не в заданном программистом, а в наиболее выгодном порядке. При наличии возможности параллельного выполнения нескольких операций возможно даже распараллеливание выполнения совместного цикла, когда одна и та же операция одновременно выполняется на разных вычислительных модулях для разных объектов, при том что логически программа остаётся последовательной.
Совместные циклы имеются в некоторых языках программирования (C#, Eiffel, Java, JavaScript, Perl, Python, PHP, LISP, Tcl и др.) — они позволяют выполнять цикл по всем элементам заданной коллекции объектов. В определении такого цикла требуется указать только коллекцию объектов и переменную, которой в теле цикла будет присвоено значение обрабатываемого в данный момент объекта (или ссылка на него). В различных языках программирования синтаксис оператора различен:
C++:
for (type &item : set) //поддерживается, начиная со стандарта C++11
{
//использование item
}
C#:
foreach (type item in set)
{
//использование item
}
Delphi:
for item in [1..100] do
begin
//Использование item (Работоспособность кода проверялась в Delphi 2010)
end;
Perl (строгий порядок "от первого до последнего"):
foreach (@set)
{
#использование $_
}
# или
for (@set)
{
#использование $_
}
# или
foreach $item (@set)
{
#использование $item
}
Eiffel:
across set as cursor loop
-- использование cursor.item
end
Java:
for (type item : set)
{
//использование item
}
JavaScript:
for (txtProperty in objObject)
{
/*
использование:
objObject [txtProperty]
*/
}
PHP:
foreach ($arr as $item) {
/* использование $item*/
}
//или
foreach ($arr as $key=>$value) {
/* использование значений индекса $key и его значения $value*/
}
Visual Basic.NET:
For Each item As type In set
'использование item
Next item
Windows PowerShell:
foreach ($item in $set) {
# операции с $item
}
или
$set | ForEach-Object {
# операции с $_
}
Python
for item in iterator_instance:
# использование item
22. Программирование задач с множественным выбором.