Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЯП - половина готово.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
298 Кб
Скачать
☆

If ( логическое_выражение ) Блок_1; [ else Блок_2; ]

Сначала вычисляется логическое выражение. Если оно имеет значение true, выполняется первый оператор, иначе — второй. После этого управление передается на оператор, следующий за условным. Ветвь else может отсутствовать.

Примеры условных операторов:

if ( b>a ) max = b; else max = a;

if ( a<0 ) b = 1;

if ((a<b) && (a>d || a==0)) b++; else { b *= a; a = 0; }

if ( a<b ) if ( a>=c ) m = a; else m = c;

else if ( b<c ) m = b; else m = c;

Оператор выбора switch

Оператор switch (переключатель) предназначен для разветвления процесса вычислений на несколько направлений.

Формат оператора:

switch ( выражение ){

case константное_выражение_1: [ Блок_1 ]

case константное_выражение_2: [ Блок_2 ]

...

case константное_выражение_n: [ Блок_N ]

[ default: операторы ]

}

Выполнение оператора начинается с вычисления выражения. Тип выражения обычно целочисленный, символьный (char) или строковый. Затем управление передается первому оператору из списка, помеченному константным выражением, значение которого совпало с вычисленным. Если совпадения не произошло, выполняются операторы, расположенные после слова default, а при его отсутствии управление передается следующему за switch оператору.

Каждая ветвь переключателя должна заканчиваться явным оператором перехода: break, goto или return.

Оператор break выполняет выход из самого внутреннего из объемлющих его операторов switch, for, while или do.

Оператор goto выполняет переход на указанную после него метку, обычно это метка case одной из нижележащих ветвей оператора switch.

Оператор return выполняет выход из функции, в теле которой он записан.

  1. Операторы цикла. Синтаксис и правила работы.

Операторы цикла и передачи управления

Операторы цикла используются для вычислений, повторяющихся многократно. Блок, для многократного выполнения которого организуется цикл, называется телом цикла.

Остальные операторы служат для управления процессом повторения вычислений: это начальные установки, проверка условия продолжения цикла и модификация параметра цикла . Один проход цикла называется итерацией.

Начальные установки служат для того, чтобы до входа в цикл задать значения переменных, которые в нем используются.

Проверка условия продолжения цикла выполняется на каждой итерации либо до тела цикла (тогда говорят о цикле с предусловием), либо после тела цикла (цикл с постусловием).

Параметром цикла называется переменная, которая используется при проверке условия продолжения цикла и принудительно изменяется на каждой итерации, причем, как правило, на одну и ту же величину. Если параметр цикла целочисленный, он называется счетчиком цикла.

Цикл завершается, если условие его продолжения не выполняется. Возможно принудительное завершение как текущей итерации, так и цикла в целом. Для этого служат операторы break, continue, return и goto. Передавать управление извне внутрь цикла запрещается.

Цикл с предусловием while

Формат оператора:

while ( выражение ) Блок

Выражение должно быть логического типа (bool). Если результат вычисления выражения истинно, то выполняется Блок операторов. Эти действия повторяются до того момента, пока результатом выражения не станет значение ложным. После окончания цикла управление передается на следующий за ним оператор.

Выражение вычисляется перед каждой итерацией цикла. Если при первой проверке выражение ложно , цикл не выполнится ни разу.

Цикл с постусловием do

Формат оператора:

do Блок while выражение;

Сначала выполняется операторы блока, образующего тело цикла, а затем вычисляется выражение логического типа (bool). Если выражение истинно, тело цикла выполняется еще раз, и проверка повторяется. Цикл завершается, когда выражение станет равным false или в теле цикла будет выполнен какой-либо оператор передачи управления.

Этот вид цикла применяется в тех случаях, когда тело цикла необходимо обязательно выполнить хотя бы один раз.

Цикл с параметром for

Формат оператора:

for ( инициализация; выражение; модификации ) оператор;

Инициализация служит для объявления величин, управляющих циклом, и присвоения им начальных значений. В этой части можно записать несколько операторов, разделенных запятой, например:

for ( int i = 0, j = 20; ...

int k, m;

for ( k = 1, m = 0; ...

Областью действия переменных, объявленных в части инициализации цикла, является цикл. Инициализация выполняется один раз в начале исполнения цикла.

Выражение типа bool определяет условие выполнения цикла: если его результат равен true, цикл выполняется.

Модификации выполняются после каждой итерации цикла и служат обычно для изменения параметров цикла. В части модификаций также можно записать несколько операторов через запятую, например:

for ( int i=0, j=20; i<5 && j>10; i++, j-- )

Блок представляет собой тело цикла.

Любая из частей оператора for может быть опущена (но точки с запятой надо оставить на своих местах!).

Любой цикл while может быть приведен к эквивалентному ему циклу for и наоборот. Например, два следующих цикла эквивалентны:

Цикл for

Цикл while

for ( b1; b2; b3 ) оператор;

b1;

while ( b2 )

{

оператор;

b3

}

Цикл перебора foreach

Цикл foreach используется для просмотра всех объектов из некоторой группы данных, например, массива, списка или другого контейнера.

Формат оператора:

foreach ( тип имя in выражение ) Блок

Имя задает локальную по отношению к циклу переменную, которая будет по очереди принимать все значения из набора данных выражение (в качестве выражения чаще всего применяется имя массива или другой группы данных). В Блоке, представляющем собой тело цикла, выполняются действия с переменной цикла. Тип переменной должен соответствовать типу элемента набора данных.

Например, пусть задан массив:

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

Вывод этого массива на экран с помощью оператора foreach выглядит следующим образом:

foreach ( int x in a ) Console.WriteLine( x );

  1. Циклы с пред- и постусловием.

Цикл с предусловием while

Формат оператора:

while ( выражение ) Блок

Выражение должно быть логического типа (bool). Если результат вычисления выражения истинно, то выполняется Блок операторов. Эти действия повторяются до того момента, пока результатом выражения не станет значение ложным. После окончания цикла управление передается на следующий за ним оператор.

Выражение вычисляется перед каждой итерацией цикла. Если при первой проверке выражение ложно , цикл не выполнится ни разу.

Цикл с постусловием do

Формат оператора:

do Блок while выражение;

Сначала выполняется операторы блока, образующего тело цикла, а затем вычисляется выражение логического типа (bool). Если выражение истинно, тело цикла выполняется еще раз, и проверка повторяется. Цикл завершается, когда выражение станет равным false или в теле цикла будет выполнен какой-либо оператор передачи управления.

Этот вид цикла применяется в тех случаях, когда тело цикла необходимо обязательно выполнить хотя бы один раз.

  1. Цикл с перебором значений.

Цикл перебора foreach

Цикл foreach используется для просмотра всех объектов из некоторой группы данных, например, массива, списка или другого контейнера.

Формат оператора:

foreach ( тип имя in выражение ) Блок

Имя задает локальную по отношению к циклу переменную, которая будет по очереди принимать все значения из набора данных выражение (в качестве выражения чаще всего применяется имя массива или другой группы данных). В Блоке, представляющем собой тело цикла, выполняются действия с переменной цикла. Тип переменной должен соответствовать типу элемента набора данных.

Например, пусть задан массив:

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

Вывод этого массива на экран с помощью оператора foreach выглядит следующим образом:

foreach ( int x in a ) Console.WriteLine( x );

  1. Операторы передачи управления.

Операторы передачи управления

В С# есть пять операторов, изменяющих естественный порядок выполнения вычислений:

оператор безусловного перехода goto;

оператор выхода из цикла break;

оператор перехода к следующей итерации цикла continue;

оператор возврата из функции return;

оператор генерации исключения throw.

Эти операторы могут передать управление в пределах блока, в котором они использованы, и за его пределы. Однако передавать управление внутрь другого блока запрещается.

Оператор goto

Оператор безусловного перехода goto используется в одной из трех форм:

goto метка;

goto case константное_выражение;

goto default;

Для первой формы оператора в теле программы должна присутствовать ровно одна конструкция вида:

метка: оператор;

Работа оператора состоит в передаче управление на помеченный оператор.

Метка — это обычный идентификатор, областью видимости которого является блока, в теле которого он задан.

Вторая и третья формы оператора goto используются в теле оператора выбора switch. Оператор goto case константное_выражение передает управление на соответствующую константному выражению ветвь, а оператор goto default — на ветвь default.

Оператор break

Оператор break используется внутри операторов цикла или выбора для перехода в точку программы, которая находится непосредственно за блоком, внутри которого находится оператор break.

Оператор return

Оператор возврата из функции return завершает выполнение функции и передает управление в точку ее вызова.

Синтаксис оператора:

return [ выражение ];

Тип выражения должен совпадать с типом функции. Если тип возвращаемого функцией значения описан как void (ничего не возвращается), выражение должно отсутствовать.

  1. Правила работы с массивами данных.

Объявление массивов

Массив – это набор элементов данных одного типа. Последовательность элементов массива хранится в следующих друг за другом ячейках памяти компьютера. Синтаксис объявления массива в программе имеет вид

Тип [,] Имя_Переменной = new Тип [ЧИСЛО,ЧИСЛО];

Вместе с объявлением массива C# позволяет инициализировать элементы массив - заносить в него значения. Примеры объявления массивов в С#:

для одномерного массива

int [ ] Amas = new int[10]; //Одномерный массив из 10 элементов целого типа

или

int [ ] Bmas= {4, 5, 7, 6}; //Массив из 4 элементов

для двумерного массива

int [ , ] A2mas = new int[10,5]; //Двумерный массив из 10 строк и 5 столбцов

или

int [ , ] B2mas = { //Массив целых чисел из 2 строк и 3 столбцов

{1,2,3},

{4,5,6},

};

Ввод/вывод данных из массива

Для организации ввода данных в массив необходимо знать количество вводимых элементов n.

Ниже представлен пример программы, которая запрашивает количество элементов массива n и каждый из n элементов массива mas [i], i=0,1,… n-1.

using System;

public class MyClass

{

static void Main()

{

Console.Write ("Введите размерность массива n = ");

int n=Convert.ToInt32(Console.ReadLine());

int [ ] mas = new int [n];

for (int i=0; i<n;i++) //Цикл ввода элементов массива

{

Console.Write ("Введите элемент массива mas[{0}] = ",i);

mas[i] = Convert.ToInt32(Console.ReadLine());

}

}

}

Пример заполнения двумерного массива:

for (int i=0; i<n;i++) //Цикл вывода элементов массива

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

{

Console.Write ("Введите элемент массива mas[{0},{1}] = ", i, j);

mas[i, j] = Convert.ToInt32(Console.ReadLine());

}

Вывод элементов массива организуется аналогичным образом:

for (int i=0; i<n;i++) //Цикл вывода элементов массива

{

Console.WriteLine ("Элемент массива mas[{0}] = {1}",I,mas[i]);

}

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

Одной из частых задач обработки массивов является задача нахождения максимального/минимального элемента массива. Для ее решения организуется цикл просмотра элементов массива

int max=mas[0];

for (int i=1; i<n; i++)

{

if (mas[i]>max) {max=mas[i];}

}

Console.WriteLine ("Максимальный элемент массива mas: ",max);

Сортировка элементов массива по убыванию методом "пузырька"

Сортировка методом "пузырька" является наиболее простым методом сортировки. Задача решается с помощью многократного просмотра элементов массива и перестановкой соседних элементов массива. Ниже представлен пример реализации алгоритма сортировки.

  1. Пользовательские структуры данных. Перечисления. Структуры.

Для разработки эффективных и прозрачных (понятных) программ часто требуются типы данных, отсутствующие среди стандартных типов C#. Однако C# является строго типизированным языком. Каждая переменная и константа должна иметь конкретный тип. Поэтому возникает проблема создания пользовательских типов данных.

Язык C# для создания пользовательских типов данных предоставляет конструкции перечисление, структура, класс и интерфейс.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]