Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Оператор foreach




 

Оператор foreach застосовується для перебору елементів в організованій групі даних. Масив є саме такою групою. Зручність цього циклу полягає в тому, що не потрібно визначати кількість елементів в групі і виконувати їх перебір по індексу. Синтаксис оператора:

 

foreach (тип ім'я in вираз) тіло_циклу

 

Ім'я задає локальну по відношенню до циклу змінну, яка по черзі набуватиме всіх значень з масиву. В якості виразу найчастіше застосовується ім'я масиву. У простому або складеному операторові, що є тілом циклу, виконуються дії із змінною циклу. Тип змінної повинен відповідати типу елементу масиву.

 

Наприклад, заданий масив:

int[] а = {24, 50, 18, 3, 16, -7, 9, -1 };

 

Виведення цього масиву на екран за допомогою оператора foreach виглядає таким чином:

foreach (int х in а) Console.WriteLine(х);

 

У лістингу 6.8 вирішується те ж завдання, що і в лістингу 6.1, але з використанням циклу foreach. Зверніть увагу на те, наскільки зрозуміліше стала програма.

 

Лістинг 6.8. Робота з одновимірним масивом з використанням циклу foreach

 

 

using System;

namespace ConsoleApplication1

{

class Classl

{

static void Main()

{

const int n = 6;

int[] a = new int[n] {3, 12, 5, -9, 8, -4};

Console.WriteLine("Исходный массив:");

 

foreach (int elem in a)

Console.Write("\t" + elem);

Console.WriteLine();

 

long sum = 0; // сума від’ємних елементів

int num = 0; // кількість від’ємних елементів

foreach (int elem in a)

if (elem < 0)

{

sum += elem;

num ++;

}

 

Console.WriteLine("Сума від’ємних елементів= " + sum);

Console.WriteLine("Кількість від’ємних елементів = " + num);

int max = a[0]; // максимальний елемент

foreach (int elem in a)

if (elem > max) max = elem;

Console.WriteLine("Максимальний елемент = " + max);

}

}

}

 

Обмеженням оператора foreach є те, що з його допомогою можна тільки переглядати значення в групі даних, але не змінювати їх.

 

 

6.7. Масиви об’єктів

 

При створенні масиву, що складається з елементів посилального типу, пам'ять виділяється тільки під посилання на елементи, а самі елементи необхідно розмістити в хіпові явним чином. Як приклад створимо масив з об'єктів деякого класу Monster:

 

 

using System;

namespace ConsoleApplication1

{

class Monster

{

 

string name; // закриті поля

int health, ammo;

 

public Monster()

{

this.health = 100;

this.ammo = 100;

this.name = "Noname";

}

public Monster(string name)

: this()

{

this.name = name;

}

public Monster(int health, int ammo, string name)

{

this.health = health;

this.ammo = ammo;

this.name = name;

}

public int Health

{

get

{

return health;

}

set

{

if (value > 0) health = value;

else health = 0;

}

}

public int Ammo

{

get

{

return ammo;

}

set

{

if (value > 0) ammo = value;

else

ammo = 0;

}

}

public string Name

{

get

{

return name;

}

}

public void Passport()

{

Console.WriteLine("Monster {0} \t health = {1} ammo = {2}",

name, health, ammo);

}

}

class Classl

{

static void Main()

{

Random rnd = new Random();

const int n = 5;

Monster[] stado = new Monster[n]; // 1

for (int i = 0; i < n; i ++) // 2

{

stado[i ] = new Monster(rnd.Next(1, 100),

rnd.Next(1, 200), "Crazy" + i.ToString());

}

foreach (Monster x in stado) x.Passport(); // 3

}

}

}

Результат роботи програми:

 

Monster Crazy0 health =   ammo =  
Monster Crazyl health =   ammo =  
Monster Crazy2 health =   ammo =  
Monster Crazy3 health =   ammo =  
Monster Crazy4 health =   ammo =  

 

У операторові 1 виділяється п'ять елементів пам'яті під посилання на екземпляри класу Monster. Ці посилання заповнюються значенням null. У циклі 2 створюються п'ять об'єктів. Цикл 3 демонструє зручність застосування оператора foreach для роботи з масивом.

 

6.8. Символи і рядки

Обробка текстової інформації є, ймовірно, одним з найпоширеніших завдань в сучасному програмуванні, і С# надає для його вирішення широкий набір засобів: окремі символи, масиви символів, змінні і незмінні рядки, а також регулярні вирази.

 

 




Поделиться с друзьями:


Дата добавления: 2014-12-27; Просмотров: 451; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.021 сек.