Сам товар
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]Рекомендуется оформить титульный лист по образцу из Методических инструкций
Наиболее эффективно продаются товары, которые нельзя купить в обычных магазинах.
Либо товар должен быть представлен так, как будто он уникален.