Сам товар

Do

//прописываем инструкции, которые необходимо выполнить

{

Console.WriteLine(a);

a = a + 1;

}

 

//прописываем условие, при выполнении которого цикл должен остановиться

while (a <= 10);

 

//ждем от пользователя нажатия на любую клавишу для завершения работы программы

Console.ReadKey();

}

}

}

Рис. 14

 

В данном примере цикл Do … While срабатывает столько же раз, сколько в предыдущем примере. Разница лишь в том, что если при инициализации переменной «а» мы бы указали значение больше 10 (вместо значения 0), например 12, то цикл Do …While вывел бы в консоль число 12 и закончил бы работу. А цикл While вообще бы не сработал, так как условие при первой же проверке оказалось бы равным false, и программа бы не смогла перейти к выполнению следующих инструкций.

 


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

 

Если посмотреть внимательно на операторы while, do…while, то можно заметить, что в их работе есть повторяющиеся операции: сначала происходит инициализация переменной, далее наращивание переменной, затем проверка переменной на выполнение определенного условия. С помощью цикла for можно объединить эти операции в одной инструкции.

Оператор for имеет следующую структуру:

for (a = 0; a < 10; а ++)

{

инструкции;

}

В цикле for инициализируется переменная «а», равная 0, затем идет проверка выполнения условия (а<10). Если условие имеет значение true, то происходит наращивание переменной «а» на единицу (а++) и переход к выполнению инструкций в теле цикла. После выполнения всех инструкций в теле цикла, программа снова возвращается к проверке условия. Как только значение условия становится false, цикл останавливается. Можно использовать любой шаг наращивания переменной. Для этого необходимо вместо выражения а++, написать, например, а+=2 – наращивание переменной на 2 единицы.

 

Пример использования цикла for

Напишем программу, которая выводит в консоль числа от 0 до 10.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace ConsoleApplication8

{

class Program

{

static void Main(string[] args)

{

int a;

 

//в цикле for происходит инициализация переменной «а», проверка //условия а<11 и наращивание переменной «а» на единицу

for (a = 0; a < 11; a++)

{

 

//вывод на экран значения переменной «а»

Console.WriteLine("a = "+a);

}

 

//ждем от пользователя нажатия на любую клавишу для оконочания рабоыт программы

Console.ReadKey();

}

}

}

 

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

Вывод в консоль строки: «а = 0»

Вывод в консоль строки: «а = 1»

Вывод в консоль строки: «а=10»

 

Рис. 15


Цикл foreach

 

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

Оператор foreach имеет следующую структуру:

 

Foreach («элемент» in «контейнер»)

{

инструкции;

}

Если записать эту структуру словами, то получится что-то вроде этого: Для каждого элемента в контейнере исполнить следующие инструкции (которые находятся в теле цикла).

Контейнер – это некоторое хранилище данных. Элемент – это элемент данных из контейнера (например, элемент массива).

 

Пример использования цикла foreach

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

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace ConsoleApplication3

{

class Program

{

static void Main(string[] args)

{

// Создаем массив на 50 целых чисел

int[] mas = new int[50];

 

// Создаем объект rnd класса Random, с помощью которого будем //наполнять массив случайными числами

Random rnd = new Random();

 

// Наполняем массив

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

{

mas[i] = rnd.Next();

}

 

// Сумма элементов

long S = 0;

 

// Инициализируем максимальный и минимальный

// элементы. Полагаем, что это первый элемент массива

int Min = mas[0], Max = mas[0];

 

// Цикл перебора элементов массива. Использование цикла foreach

foreach (int i in mas)

{

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

//Каждый последующий прибавляется к предыдущему

S += i;

 

//Находим максимальный элемент массива

if (i > Max)

Max = i;

 

//Находим минимальный элемент массива

else if (i < Min)

Min = i;

 

}

 

//Выводим результат на экран

Console.WriteLine("Сумма = {0}\nМинимальный элемент = {1}\nМаксимальный элемент = {2}", S, Min, Max);

 

//Ждем от пользователя нажатия на любую клавишу для завершения //работы программы

Console.ReadKey();

}

}

}

 

Результат работы программы показан на рисунке 16.

В консоль выводится три строки:

«Сумма = »

«Минимальный элемент = »

«Максимальный элемент = »

 

Рис. 16


Массивы

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

Синтаксис массивов в C# несколько отличается от синтаксиса других С-подобных языков.

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

int [ ] mas = new int [3]; //задание массива с именем mas, состоящего из 3-х целых чисел.

Задать элементы массива можно следующим образом:

mas [0] = 5; mas [1] = -7; mas [2] = 89; //нумерация элементов в массиве начинается с 0.

Следующая запись позволяет вывести элементы массива в консоль (на экран):

Console.WriteLine ( mas[1].ToString ()); //вывод второго элемента массива на экран.

Элементы массива можно также задать следующим способом:

int [ ] mas = new int {5, -7, 89}; //задание элементов при объявлении массива

Задать двумерный массив можно следующим образом:

int [ ] mas = new int [ 2, 2 ]; //задание двумерного массива (две строки и два столбца). В данном массиве четыре элемента. Нумерация первого элемента mas[0,0], нумерация последнего элемента mas [1,1].

Заполнить двумерный массив можно так:

mas [ 0, 0] = 5; mas [0, 1] = -9 и т.д.; //задание элементов двумерного массива.

 

Перебор элементов одномерного массива происходит в цикле. Для двумерного массива придется использовать два цикла for, один вложен в другой.

 

Рассмотрим пример использования одномерного массива

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

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace ConsoleApplication3

{

class Program

{

static void Main(string[] args)

{

// Массив на 50 целых чисел

int[] arr = new int[50];

// Случайное целое число

Random rnd = new Random();

 

// Наполняем массив

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

{

arr[i] = rnd.Next();

}

 

// Сумма элементов

long S = 0;

 

// Инициализируем максимальный и минимальный

// элементы. Полагаем, что это первый элемент массива = минимальному и //максимальному

 

int Min = arr[0], Max = arr[0];

 

//Цикл перебора элементов массива

foreach (int i in arr)

{

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

//каждый последующий прибавляется к предыдущему

S += i;

}

 

//выводим в консоль сумму элементов массива

Console.WriteLine("Сумма элементов массива = {0}", S);

 

//ожидаем от пользователя нажатия любой клавиши для завершения работы программы

Console.ReadKey();

}

}

}

Результат работы программы представлен на рисунке 17.

Рис. 17

Рассмотрим еще один пример с использованием массивов.

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

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

 

//заводим массив, состоящий из заработных плат работников

int[] mas = { 14553, 16756, 19522, 23456, 22858, 11256, 14552, 18673, 12400 };

 

//инициализируем переменные для хранения суммы элементов массива //и среднего значения

double sum = 0;

double av = 0;

 

//начинаем перебор элементов массива для расчета суммы его элементов

for (int i = 0; i < mas.Length; i++)

{

//находим сумму элементов массива

sum += mas[i];

}

 

//находим среднее значение элементов массива

av = sum / mas.Length;

 

//выводим в консоль значение средней заработной платы

Console.WriteLine("Средняя заработная плата по предприятию: {0}", av);

 

//начинаем перебор элементов массива для определения номеров //элементов, значение которых ниже среднего значения

for (int i = 0; i < mas.Length; i++)

{

if (mas[i] < av)

{

//выводим в консоль номера элементов, занчение которых ниже среднего значния

Console.WriteLine("Номер работника: {0}", i);

}

 

}

 

//ожидаем от пользователя нажатия любой клавиши для завершения работы программы

Console.ReadKey();

 

}

}

}

 

Результат работы программы представлен на рисунке 18.

Рис. 18


Введение в классы

 

Определение, назначение и состав классов

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

Общая форма определения класса содержит Данные и Функции.

Данными класса могут быть: поля, константы, события.

Поля - это любые переменные, относящиеся к классу.

Константы - могут быть ассоциированы с классом так же, как и переменные. При объявлении константы используется ключевое слово сonst.

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

Функциями класса могут быть: методы, конструкторы, свойства, операции, финализаторы.

Методы - это функции, определяющие поведение объектов класса. Методы служат для обработки данных.

Свойства - это видимые извне признаки класса. Если провести параллель с человеком, то свойствами могут быть цвет глаз и волос, рост, вес, возраст и т.д.

Конструкторы - специальные функции, используемые для инициализации объектов класса в процессе их реализации.

Финализаторы - функции, которые вызываются, когда среда CLR определяет, что объект больше не нужен. Имя этих функций совпадает с именем класса. Невозможно сказать, когда будет вызван финализатор.

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

 

Модификаторы доступа

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

Модификаторы доступа могут быть следующих видов:

public - член класса доступен вне определения класса и в производных классах.

protected - член класса не видим за пределами класса, но к нему могут обращатся производные классы.

private - член класса не доступен за пределами класса. При этом доступ к этим членам для производных классов также закрыт.

internal - члена класса доступен только в пределах текущей единицы компиляции.

В языке С# для членов класса по умолчанию используется модификатор доступа private. То есть, если явно не указать модификатор доступа переменной, то будет использован модификатор private.

 

Инициализация классов и конструкторы

Рассмотрим синтаксис определения класса. Ниже представлено определение класса, который содержит только переменные и методы:

 

class имя_класса {

// Объявление переменных экземпляра.

доступ тип переменная1;

доступ тип переменная2;

//...

доступ тип переменнаяA;

// Объявление методов.

доступ возращаемый_тип метод1 (параметры)

{

// тело метода

}

доступ возращаемый_тип метод2 (параметры)

{

// тело метода

}

//. . .

}

 

Рассмотрим пример определения класса, описывающего некоторого студента вуза. Код будет выглядеть следующим образом:

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace ConsoleApplication12

{

class Student

{

//описываем характеристики объекта класса

//характеристики доступны только внутри данного класса

private string name;

private string sename;

private int kurs;

private string adress;

private int tel;

 

//определяем конструктор класса для создания объектов данного класса

//в скобках указаны параметры, которые передаются методу для создания //объекта с

//указанными свойствами

 

public Student(string name, string sename, int kurs, string adress, int tel)

{

this.name = name;

this.sename = sename;

this.kurs = kurs;

this.adress = adress;

this.tel = tel;

}

//определяем метод для объекта класса (его поведение)

//метод будет выводить на экран информацию о студенте

 

public void Print()

{

Console.WriteLine("Имя\t"+name+"\nФамилия\t"+sename+"\nКурс\t"+kurs+"\nАдрес\t"+adress+"\nТелефон\t"+tel+"\n");

}

}

 

class Program

{

static void Main(string[] args)

{

//создаем первый объект нашего класса

Student St1 = new Student("Иван","Иванов",1,"Ленина, 50-25",3251565);

//создаем второй объект нашего класса

Student St2 = new Student("Петр", "Петров", 2, "Мира, 15-3", 2256580);

 

//используем метод вывода на экран информации о студентах,

//определенный ранее в классе

 

St1.Print();

St2.Print();

Console.ReadKey();

 

}

}

}

 

Результат работы программы показан ниже.

Рис. 19


Литература

 

1. Герберт Шилдт, "C# 3.0, 4.0. Полное руководство", 2011.

2. Герберт Шилдт , "С# 3.0: руководство для начинающих", 2009.

3. Герберт Шилдт, "Полный справочник по C#", 2004.

4. Эндрю Троелсен, "С# и платформа .NET", 2004.

5. Карли Уотсон, "Visual C# 2008. Базовый курс", 2009.

6. Нейгел Крис и др., "C# 4.0 и платформа .NET 4 для профессионалов", 2009.

7. Интернет-издательство «Вильямс», Microsoft ASP.NET 2.0 с примерами на C# 2005 для профессионалов.

8. Интернет-издательство «Вильямс» - Язык программирования С# 2005 и платформа .NET 2.0.2007.

9. Джесс Либерти Создание .NET приложений Программирование на C#, 2003.

[U1]Рекомендуется оформить титульный лист по образцу из Методических инструкций

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

Либо товар должен быть представлен так, как будто он уникален.