- •Структура программы
- •Числовые типы данных на языке c#, правила их преобразования.
- •Нечисловые типы данных на языке с#
- •Условный оператор и оператор выбора
- •Оператор выбора
- •Ввод/вывод в консольном режиме
- •Объявление и инициализация массивов, понятие указателя.
- •Оператор цикла for; организация обработки массивов
- •Оператор цикла while; do while: их сравнение.
- •Цикл foreach
- •Ступенчатые массивы и их обработка
- •Структура и разновидности функций
- •Разновидности формальных параметров-переменных
- •Использование массивов в качестве формальных/фактических параметров и в качестве результата функции
- •Процедурное программирование в c#
- •Принципы Объектно-ориентированного программирования, понятие «объект» и «класс»
- •Объявление классов, атрибуты доступа
- •Конструкторы и деструкторы
- •Перегрузка операторов
- •Индексаторы и работа с ними
- •Свойства и работа с ними
- •Наследование. Работа с конструктором при наследовании.
- •Виртуальные методы, их назначение, правила составления.
- •Абстрактные методы и классы
- •Интерфейсы
- •Делегаты и их использование при работе с функциями
- •Исключительные ситуации
Оператор цикла while; do while: их сравнение.
-
Цикл с предусловием while,
-
Цикл с постусловием do . . . while,
-
Цикл с предусловием.
-
while( условие_выполнения_тела_цикла )
-
{
-
// тело цикла
-
}
-
Цикл с постусловием
-
do
-
{
-
//тело цикла
-
} while( условие_выполнения_тела_цикла);
Циклы while бывают двух видов - собственно цикл while и do-while. Оба эти цикла используются, как правило, тогда, когда точно не известно, сколько раз цикл должен выполнится. Например, при вводе пользователем пароля или при подсчете чего-либо с определенной точностью. Оба эти цикла будут выполняться до тех пор, пока условие в круглых скобках после слова while будет истинно. Как только условие станет равным false, выполнение цыкла прекращается. Самое важное отличие между while и do-while в том, что while может не выполниться ни одного раза, тогда как do-while по крайней мере один раз выполнится.
Цикл foreach
Цикл foreach позволяет выполнять тело цикла для элементов массива (в общем случае – для коллекции):
foreach (тип идентификатор in имя_массива)
{
//тело цикла
}
В циклах можно использовать операторы break; (прервать выполнение цикла) и а в цикле for оператор Continue; (перейти к следующему шагу).
Ступенчатые массивы и их обработка
в C# можно создать массивы, в которых количество элементов в строках разное – ступенчатые массивы. В таком случае необходимо выполнять инициализацию каждой строки в отдельности.
Рассмотрим это на примере. Дан ступенчатый массив. Вывести номера его строк, в которых доля положительных элементов максимальна.
static void Main(string[] args)
{ float[][] b; //объявим неровный массив
int n, m;
Console.Write("Строк ");
n = Convert.ToInt32(Console.ReadLine());
b = new float[n][]; //определим количество строк
for (int i = 0; i < n; i++)
{ Console.Write("Элементов в строке"+i+" ");
m = Convert.ToInt32(Console.ReadLine());
b[i] = new float[m]; // определим количество
// элементов в i-ой строке }
for(int i=0;i<b.Length;i++)
for (int j = 0; j < b[i].Length; j++)
{ Console.Write("b[" + i + "," + j + "]=");
b[i][j] = Convert.ToSingle(Console.ReadLine()); }
float []dol=new float[n]; // массив для долей
// положительных элементов в строке
int kol;
float maxdol=0; //максимальная доля
for(int i=0;i<b.Length;i++)
{ kol=0;
for (int j = 0; j < b[i].Length; j++)
if(b[i][j]>0)kol++;
if (b[i].Length!=0)
dol[i]=(float)kol/b[i].Length;
else
dol[i]=0;
if(maxdol<dol[i])maxdol=dol[i]; }
if (maxdol == 0)
Console.WriteLine
("Нет положительных элементов в массиве");
else
{ string s=""; //в эту переменную соберем номера строк
for(int i=0;i<b.Length;i++)
if (dol[i]==maxdol) s+=" "+i;
Console.WriteLine
("Максимальная доля в строках "+s);}
Console.ReadLine(); }
Примечания.
-
Если b неровный массив, то b.Length возвращает количество строк, а b[i].Length количество элементов в i–й строке.
-
Нулевое количество элементов в строке не является ошибкой, в таком случае b[i].Length=0.
-
присваивание string s=""; обязательно, даже для пустой строки.