русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Параметры командной строки


Дата добавления: 2013-12-23; просмотров: 884; Нарушение авторских прав


Do

Циклы while и do…while

Цикл foreach

Новым видом цикла, не унаследованным от С++, является цикл foreach, удобный при работе с массивами, коллекциями и другими подобными контейнерами данных. Его синтаксис:

 

foreach(тип идентификатор in контейнер) оператор;

 

Цикл работает в полном соответствии со своим названием - тело цикла выполняется для каждого элемента в контейнере. Тип идентификатора должен быть согласован с типом элементов, хранящихся в контейнере данных. Предполагается также, что элементы контейнера (массива, коллекции) упорядочены. На каждом шаге цикла идентификатор, задающий текущий элемент контейнера, получает значение очередного элемента в соответствии с порядком, установленным на элементах контейнера. С этим текущим элементом и выполняется тело цикла - выполняется столько раз, сколько элементов находится в контейнере. Цикл заканчивается, когда полностью перебраны все элементы контейнера.

Серьезным недостатком циклов foreach в языке C# является то, что цикл работает только на чтение, но не на запись элементов. Так что наполнять контейнер элементами приходится с помощью других операторов цикла.

 

Теперь рассмотрим пример цикла foreach:

 

int[] m = {-5, 4, 10};

int sum=0;

foreach(int i in m){

sum+=i;

}

Console.WriteLine(sum);

В данном примере мы суммируем все элементы массива m, записывая сумму в sum.

В приведенном примере наш цикл перебирает все элементы массива m. На это нам указывает строка

...

foreach(int i in m){

...

которая интерпретируется так: для каждого целого числа из массива m делам что-то там. Если бы элементами массива были бы не целые, а, скажем, вещественные, то мы записали бы что-то вроде:

...

foreach(float i in m){

...

 

То есть мы пишем именно тип элементов массива. На самом деле foreach используется не только для массивов, но и для других объектов (например, для хэш-таблиц).



 

// Демонстрация цикла foreach. Вычисление суммы,

// максимального и минимального элементов

// трехмерного массива, заполненного случайными числами.

public void SumMinMax() {

int [,,] arr3d = new int[10,10,10];

Random rnd = new Random();

for (int i =0; i<10; i++)

for (int j =0; j<10; j++)

for (int k =0; k<10; k++)

arr3d[i,j,k]= rnd.Next(100);

long sum =0; int min=arr3d[0,0,0], max=arr3d[0,0,0];

foreach(int item in arr3d) {

sum +=item;

if (item > max) max = item;

else if (item < min) min = item;

}

Console.WriteLine("sum = {0}, min = {1}, max = {2}", sum, min, max);

}

 

while(выражение) оператор;

оператор;

while(выражение);

Циклы while бывают двух видов - собственно цикл while и do-while. Оба эти цикла используются, как правило, тогда, когда точно не известно, сколько раз цикл должен выполнится. Например, при вводе пользователем пароля или при подсчете чего-либо с определенной точностью. Оба эти цикла будут выполняться до тех пор, пока условие в круглых скобках после слова while будет истинно. Как только условие станет равным false, выполнение цикла прекращается. Самое важное отличие между while и do-while в том, что while может не выполниться ни одного раза, тогда как do-while по крайней мере один раз выполнится. Вот примеры их использования:

 

string password;

do{

password=Console.ReadLine();

}while(password!="wi98zK");

 

int k=0; //Количество попыток

//заводим новую последовательность случайных чисел

Random rnd=new Random(112); //Пишем любой параметр

while(rnd.Next(1, 6)!=5) {

k++;

};

Console.WriteLine("С "+(k+1).ToString()+"-го раза выпало 5");

 

В первом примере цикл будет вращаться до тех пор, пока пользователь не введет правильный пароль (wi98zK), во втором - пока некоторое случайное число не окажеться равным 5. При этом если число с самого начала оказалось равным пяти, то цикл вообще выполняться не будет.

Однако иногда бывает полезно задать в цикле заведомо истинное ус­ловие. Типичным примером вечного цикла является следующая запись:

 

while(true) {...}

 

class Cycles {

public static void Main() {

String Name;

while (true) {

Console .Write ("Введите ваш имя " );

Name = Console.ReadLine();

if(Name==””)

break;

Console.WriteLine("Здравствуйте {0}", Name);

} }}

 

public void Loop() {

string answer, text;

do {

Console.WriteLine("Введите слово");

text = Console.ReadLine();

int i =0, j = text.Length-1;

while ((i<j) && (text[i] == text[j])) {i++; j--;}

if (text[i] == text[j])

Console.WriteLine(text +" - это палиндром!");

else

Console.WriteLine(text +" - это не палиндром!");

Console.WriteLine("Продолжим? (yes/no)");

answer = Console.ReadLine();

} while(answer =="yes");

}

Параметры командной строки передаются, естественно, в методе Main. В отличие от некоторых языков программирования (C/C++) параметр только один - это массив передаваемых параметров. Аналога первого параметра языка C/C++ (количества параметров) нет. Передаются параметры в виде массива строк.

Вот пример программы, выводящий на экран все передаваемые в нее параметры командной строки и их количество:

 

using System;

namespace test {

class Test {

//Передаем в Main параметры командной строки.

static void Main(string[] args) {

//Выводим количество параметров.

Console.WriteLine(args.GetLength(0));

//Выводим каждый параметр.

foreach (string s in args) {

Console.WriteLine(s);

} }}}

Обратите внимание, что в сам exe-файл не считается параметром (как в C/C++).

Метод Main() может возвращать значение (int) операционной системе, если это необъходимо, иначе его можно описать как void.

 



<== предыдущая лекция | следующая лекция ==>
Цикл for | Форматированный вывод


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

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