лекции все вместе / Lektsia_1_chast_2
.docЛекция 1 часть 2. Введение.
Пример. Объявление и инициализация переменной типа bool. Вывод данных на консоль.
using System;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
bool b = true;
// WriteLine автоматически конвертирует значение переменной b в текст.
Console.WriteLine(b);
}
}
}
Тип char представляет 16-разрядные целые числа без знака в диапазоне от 0 до 65535. Набор возможных значений для типа char соответствует набору символов Юникода.
Пример. Объявление и инициализация четырех переменных типа char, имеющих одно и тоже значение - символ X.
using System;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
char char0 = 'X'; // Символьный литерал
char char1 = '\x0058'; // шестнадцатеричная escape-последовательность
char char2 = (char)88; // Преобразование типа int в char
char char3 = '\u0058'; // Юникод
Console.WriteLine("{0} {1} {2} {3}", char0, char1, char2, char3);
}
}
}
Использование класса System.Console.
Консолью называется окно операционной системы, в котором пользователи взаимодействуют с операционной системой. Приложение может считывать пользовательский ввод из стандартного входного потока, записывать обычные данные в стандартный выходной поток и записывать данные об ошибках в стандартный поток сообщений об ошибках.
Пример. Чтение из стандартного входного потока и запись в стандартный выходной поток
using System;
namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Введите x");
String name = Console.ReadLine();
int a = int.Parse(name);
Console.WriteLine(a);
}
}
}
В примере статический метод Console.WriteLine("Введите x") записывает данные в стандартный выходной поток; статический метод Console.ReadLine() считывает входные данные из стандартного входного потока. Возвращаемое методом Console.ReadLine() значение присваивается переменной name типа String; статический метод int.Parse(name) преобразует строковое представление числа в эквивалентное ему 32-битовое целое число со знаком. Возвращаемое методом значение присваивается переменной а типа int; Статический метод Console.WriteLine(a) выводит результирующее целочисленное значение на консоль.
Пример
using System;
namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
int i = 5;
double y = 9;
Console.WriteLine(i.ToString("d")+" "+y.ToString("f2"));
}
}
}
Использование аргументов командной строки в консольном приложении.
К аргументам командной строки можно получить доступ при помощи дополнительного массива строк, связанного с методом Main. При выполнении приложения в Visual Studio можно указать аргументы командной строки в Страница "Отладка" в конструкторе проектов.
Пример.
using System;
namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
System.Console.WriteLine("parameter count = {0}", args.Length);
for (int i = 0; i < args.Length; i++)
{
System.Console.WriteLine("Arg[{0}] = [{1}]", i, args[i]);
}
}
}
}
Идентификаторы используются для обозначения переменных. В идентификаторах разрешены: знак подчеркивания в качестве начального символа, escape-последовательности Юникода, символ «@» в качестве префикса, чтобы можно было использовать ключевые слова в качестве идентификаторов.
Ключевое слово — это зарезервированная последовательность символов.
Операторы языка
Действия программы выражаются с помощью операторов. Оператор может состоять из одной строки кода, которая заканчивается точкой с запятой, или из ряда однострочных операторов в блоке. Блок оператора заключен в скобки ({}) и может содержать вложенные блоки.
Типы операторов.
Операторы объявления
Операторы выражений
Операторы выбора
Операторы итераций
Операторы перехода
Внедренный оператор. В операторах do, while, for и foreach, всегда есть внедренный оператор, следующий за ними. Этот внедренный оператор может быть либо одним оператором, либо несколькими операторами, заключенными в скобки ({}) в блоке оператора. Даже однострочные внедренные операторы могут быть заключены в скобки ({}).
Вложенные блоки операторов. Блоки операторов могут быть вложенными.
Области объявления
Объявление определяет имя в области объявления, которому принадлежит объявление.
Нельзя использовать одно имя для двух или более объявлений в одной области объявления за исключением перегруженных членов.
Пространства имен могут содержать объявления типов и вложенных пространств имен.
Пространства имен и типы, имеющие родительское пространство имен, являются членами глобального пространства имен.
Пространства имен и типы, объявленные в рамках пространства имен, являются членами данного пространства имен.
Каждое объявление типа: класса, структуры, интерфейса, делегата, перечисляемого типа создает новую область объявления.
Каждое объявление метода, объявление индексатора, объявление оператора, объявление конструктора экземпляров создает новую область объявления, которая называется областью объявлений локальных переменных.
Каждый блок или блок_switch, а также инструкции for, foreach и using создают область объявлений для локальных переменных и локальных констант .
Блоки, встречающиеся в качестве тела члена функции, вложены в область объявлений локальных переменных, объявленной этими функциями для соответствующих параметров. Следовательно, наличие, к примеру, метода с одинаковыми именами локальной переменной и параметра является ошибкой.
Области видимости
Областью видимости имени является часть текста программы, в рамках которой можно ссылаться на переменную, имеющее данное имя. Области могут быть вложенные, в рамках вложенного блока невозможно объявить локальную переменную с именем, совпадающим с именем локальной переменной во внешнем блоке.
Пример программы, которая завершится с ошибкой «Невозможно объявить локальную переменную с именем "a" в этой области видимости, т.к. другое значение "a", уже используется в области видимости "родительский или текущий"
using System;
namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
int a = 0;
Console.WriteLine(a);
{
int a = 6;
Console.WriteLine(a);
}
}
}
}
Пример. Объявление локальных переменных, которое не приведет к ошибке.
using System;
namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
{
int a = 0;
Console.WriteLine(a);
}
{
int a = 6;
Console.WriteLine(a);
}
}
}
}
Областью члена пространства имен, объявленного объявлением члена пространства имен, является полный текст программы.
Областью члена, объявленного объявлением члена типа, является тело типа, в котором сделано объявление.
Областью параметра, объявленного в объявлении метода, является тело метода данного объявления метода.
Областью локальной переменной, объявленной в объявлении локальной переменной, является блок, в котором содержится объявление.
Областью локальной переменной, объявленной в блоке ветвления оператора switch, является блок ветвления.
Областью локальной переменной, объявленной в инициализаторе for оператора for, является инициализатор for, условие for, итератор for и содержащий оператор оператора for.
Областью локальной константы, объявленной в объявлении локальной константы, является блок, в котором содержится объявление. Ссылка на локальную константу в текстовой позиции, предшествующей декларатору константы, является ошибкой времени компилирования.
Переменные
В C# определено семь категорий переменных: статические переменные, переменные экземпляра, элементы массива, параметры по значению, параметры по ссылке, выходные параметры и локальные переменные.
Локальные переменные
Локальную переменную можно объявить в блоке, в операторе for, в операторе switch или операторе using, а также в операторе foreach или в конструкции catch в операторе try.
Объявление локальной переменной состоит из типа локальной переменной, идентификатора, определяющего имя переменной, за которым могут следовать оператор присваивание
и инициализатор локальной переменной, присваивающий переменной начальное значение.
При объявлении локальная переменная не инициализируется автоматически и поэтому не имеет значения по умолчанию (считается не имеющей начального значения).
Пример. Объявление нескольких локальных переменных.
int x = 1, y, z = x * 2;
Примеры. Операторы языка.
Оператор_итераций for
Цикл for повторно выполняет оператор или блок операторов, пока определенное выражение не примет значение false.
В цикле for может содержаться инициализатор for, условие for, итератор for, содержащий оператор оператора for (внедренный оператор).
оператор_for: for ( инициализатор_forнеобязательно ; условие_forнеобязательно ; итератор_forнеобязательно ) внедренный_оператор
Инициализатор содержит объявление локальной переменной.
Условием является логическое выражение.
Итератор это выражение.
В следующем примере значение int i записывается в консоль, и i увеличивается на 1 за каждое прохождение цикла.
using System;
namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
int i = 0;
for (i = 1; i <= 5; i++)
{
Console.WriteLine(i);
}
}
}
}
Все выражения оператора for являются необязательными. Например, следующий оператор используется для создания бесконечного цикла:
C#
for (; ; )
{
// ...
}
Оператор_итераций while
Оператор while выполняет внедренный оператор несколько раз (возможно, ни разу) в зависимости от соблюдения условия.
оператор_while: while ( логическое_выражение ) внедренный_оператор
Оператор while выполняется следующим образом.
Вычисляется логическое_выражение Если результатом логического выражения является true, управление передается внедренному оператору. Если управление достигает конечной точки внедренного оператора (возможно, в результате выполнения оператора continue), управление передается в начало оператора while.
Если значением логического выражения является false, управление передается в конечную точку оператора while.
Пример
using System;
namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
int n = 1;
while (n < 6)
{
Console.WriteLine("Current value of n is {0}", n);
n++;
}
}
}
}
Оператор выбора if
Оператор if выбирает оператор языка для выполнения на основании значения логического выражения.
оператор_if: if ( логическое_выражение ) внедренный_оператор if ( логическое_выражение ) внедренный_оператор else внедренный_оператор
Пример
using System;
namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
// Проверяем четность числа
// Вводим проверяемое значение
int Num;
string Str;
Console.Write("Введите число: ");
Str = Console.ReadLine();
Num = int.Parse(Str);
// если число делится на 2 без остатка то четное
// оператор % - это остаток от целочисленного деления
if (Num % 2 == 0)
{
Console.WriteLine("Число {0} - четное", Num);
}
else
{
Console.WriteLine("Число {0} - нечетное", Num);
}
Console.ReadKey();
}
}
}
using System;
namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
// Найти чему будет равно выражение C = min(A,B)
// A и B целые числа, которые нужно ввести с клавиатуры
// Вывести результат и исходное выражение, подставив числа
// Введем исходные значения A и B
int A, B;
string Str;
Console.Write("A = ");
Str = Console.ReadLine();
A = int.Parse(Str); // Parse - статический метод структуры int
Console.Write("B = ");
Str = Console.ReadLine();
B = int.Parse(Str);
//Находим значение выражения
int min;
if (A < B)
min = A;
else
min = B;
// Выводим результат
Console.WriteLine("min({0},{1})) = {2}", A, B, min);
Console.ReadKey();
}
}
}