Foreach цикл оператору
1. foreach циклинин максаты . Жалпы форма
foreach цикл оператору коллекциянын же массивдин элементтерин кайталоо үчүн иштелип чыккан. foreach билдирүүсүнүн жалпы түрү төмөнкүдөй
@A@foreach ( контейнердеги идентификаторду түрү )
{
// операторлор
// ...
}@A@
Кайда
- type - идентификатор аталган өзгөрмөнүн түрү;
- идентификатор - итератор катары колдонулган өзгөрмөнүн аты. Өзгөрмө идентификатору foreach циклинин ар бир кадамында циклдин кийинки элементинин маанисин алат. Идентификатор өзгөрмөнүнмассивдин же коллекция контейнеринин түрүнө дал келиши керек . Идентификатор менен контейнердин ортосундагы мамилебирликтин жардамы менен ишке ашырылат ;
- контейнер каралып жаткан коллекциянын же массивдин аты.
foreach циклинин билдирүүсү ушундай иштейт. Циклге киргенде, өзгөрмө идентификаторуна массивдин (жыйноо) контейнеринин биринчи элементи ыйгарылат . Ар бир кийинки итерация кадамында контейнерден кийинки элемент тандалып алынат, ал идентификатор өзгөрмөсүндө сакталат . Массивдин (жыйноо) контейнеринин бардык элементтери кайра каралып чыкканда цикл аяктайт .
2. Массивдер үчүн foreach цикл операторун колдонуу мисалдары
2.1. Double тибиндеги массивдин элементтеринин суммасын эсептөө
Мисал double тибиндеги массивдин элементтеринин суммасын эсептөө маселесин чечет . Console Application үлгүсүнө ылайык түзүлгөн программанын тексти төмөнкүдөй.
@A@using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
// объявить массив типа double, выделить память для массива
double[] A = new double[10];
Random rnd_num = new Random();
// заполнить массив случайными числами в диапазоне от 0 до 20
for (int i = 0; i < A.Length; i++)
{
A[i] = rnd_num.NextDouble() * 20;
}
// вывести массив для проверки
Console.WriteLine("Array A:");
for (int i = 0; i < A.Length; i++)
{
Console.Write("{0:f3} ", A[i]);
}
Console.WriteLine();
// Использование цикла foreach для вычисления суммы элементов массива
double summ = 0;
foreach (double item in A)
{
summ += item;
}
Console.WriteLine("summ = {0:f3}", summ);
Console.ReadKey();
}
}
}@A@
Программанын жыйынтыгы
@T@Array A:
7,117 1,218 9,963 13,038 17,656 9,593 5,876 9,802 3,305 2,546
summ = 80,114@T@
2.2. Массивдеги максималдуу маанини табуу
Мисал foreach цикл операторун колдонуп бүтүн массивди кантип кыдыруу керектигин көрсөтөт .
Мисал .
@A@using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
// массив из 10 чисел типа int
int[] A = new int[10];
int max = 0; // искомое максимальное значение
bool f_first; // первый элемент в массиве
Random rnd_num = new Random(); // случайное число
// 1. Заполнить массив случайными числами
for (int i = 0; i < A.Length; i++)
{
A[i] = rnd_num.Next(0, 20);
}
// 2. Вывод массива для контроля
for (int i = 0; i < A.Length; i++)
Console.Write("{0} ", A[i]);
Console.WriteLine();
// 3. Цикл foreach
f_first = true; // признак первого элемента в массиве
foreach (int item in A)
{
if (f_first) // если первый элемент в массиве
{
max = item; // то запомнить его
f_first = false;
}
else
{
if (max < item)
max = item;
}
}
// 3. Вывод результата
Console.WriteLine("max = {0}", max);
Console.ReadKey();
}
}
}@A@
Программанын жыйынтыгы
@T@3 10 4 15 3 1 6 10 15 14
max = 15@T@
3. Коллекциялар үчүн foreach циклин колдонуу мисалдары
3.1. ArrayList коллекциясы менен иштөөнүн мисалы . Чыныгы сандар жыйнагындагы минималдуу элементти аныктоо
Console Application түрүндөгү тиркеме үчүн программанын тексти төмөнкүдөй
@A@using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
// Цикл foreach, коллекция ArrayList
ArrayList AL = new ArrayList(); // создать коллекцию из 10 элементов
Random rnd_num = new Random();
// 1. Записать в коллекцию случайные вещественные числа от 0 до 10
for (int i = 0; i < 10; i++)
{
AL.Add(rnd_num.NextDouble() * 10); // добавить число
}
// 2. Вывести коллекцию на экран для проверки, использовать цикл foreach
foreach (double x in AL)
{
Console.Write("{0:f2} ", x);
}
Console.WriteLine();
// 3. Определение минимального элемента коллекции
double min = 0;
bool f_first = true;
foreach (double x in AL)
{
if (f_first)
{
min = x;
f_first = false;
}
else
{
if (min > x) min = x;
}
}
// 4. Вывод результата
Console.WriteLine("min = {0:f2}", min);
Console.ReadKey();
}
}
}@A@
Программанын жыйынтыгы
@T@8,13 7,47 3,23 5,98 9,43 1,65 0,27 7,82 0,79 2,85
min = 0,27@T@