Loading...

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@