71.59K
Category: programmingprogramming

Основы языка программирования C#

1.

Основы языка
программирования C#

2.

1. Top Level Statements
Операторы верхнего уровня позволяют избежать дополнительных церемоний, связанных с размещением
точки входа программы в статическом методе в классе. Типичная отправная точка для нового
консольного приложения выглядит следующим образом:
using System;
namespace Application
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}

3.

Приведенный на прошлом слайде код является результатом выполнения команды и создания нового
консольного приложения. Эти 10 строк содержат только одну строку исполняемого кода. Вы можете
упростить эту программу с помощью функции операторов верхнего уровня:
Console.WriteLine("Hello, World!");
Эта функция упрощает поиск новых идей. Операторы верхнего уровня можно использовать для сценариев
создания сценариев или для исследования. Как только вы освоите основы, вы можете приступить к
рефакторингу кода и созданию методов, классов или других сборок для повторно используемых
компонентов, которые вы создали.
Операторы верхнего уровня выполняются в том порядке, в котором они отображаются в файле. Операторы
верхнего уровня можно использовать только в одном исходном файле в приложении. Компилятор выдает
ошибку, если вы используете их более чем в одном файле.

4.

2. Обработка исключений
При использовании блока try...catch..finally вначале выполняются все инструкции в блоке try. Если в этом
блоке не возникло исключений, то после его выполнения начинает выполняться блок finally. И затем
конструкция try..catch..finally завершает свою работу.
Если же в блоке try вдруг возникает исключение, то обычный порядок выполнения останавливается, и
среда CLR начинает искать блок catch, который может обработать данное исключение. Если нужный
блок catch найден, то он выполняется, и после его завершения выполняется блок finally.
try
{ }
catch
{
}
finally
{
}

5.

3. Классы
Тип, определенный как class это - ссылочный тип. Во время выполнения при объявлении переменной
ссылочного типа переменная содержит значение null , пока явно не создадите экземпляр класса с
помощью оператора new или назначьте его объект совместимого типа, созданного в другом месте, как
показано в следующем примере:
MyClass mc = new MyClass();
MyClass mc2 = mc;

6.

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

7.

Стоит отметить, что эти модификаторы могут применяться как к компонентам класса, так и к
компонентам структуры за тем исключением, что структуры не могут использовать модификаторы
private protected, protected и protected internal, поскольку структуры не могут быть унаследованы.
Мы можем явно задать модификатор доступа, а можем его и не указывать:
public class Person
string name;
Если для компонентов не определен модификатор доступа, то по умолчанию для них применяется
модификатор private. Например, в примере выше переменная name неявно будет иметь модификатор
private.

8.

5. Объявление классов
Классы объявляются с помощью ключевого слова class, за которым следует уникальный идентификатор.
Класс может хранить некоторые данные. Для хранения данных в классе применяются поля. По сути поля
класса - это переменные, определенные на уровне класса.
class Human
{
public string name = "Undefined";
public int age;
public void Print()
{
Console.WriteLine($"Имя: {name} Возраст: {age}");
}
}
В данном случае в классе Human определено поле name, которое хранит имя, и поле age, которое хранит
возраст человека.

9.

6. Создание объекта класса
После определения класса мы можем создавать его объекты. Для создания объекта применяются
конструкторы. По сути конструкторы представляют специальные методы, которые называются так же
как и класс, и которые вызываются при создании нового объекта класса и выполняют инициализацию
объекта.
new конструктор_класса(параметры_конструктора);
Сначала идет оператор new, который выделяет память для объекта, а после него идет вызов
конструктора.
Если в классе не определено ни одного конструктора (как в случае с нашим классом Person), то для этого
класса автоматически создается пустой конструктор по умолчанию, который не принимает никаких
параметров.

10.

Для обращения к функциональности класса - полям, методам (а также другим элементам класса)
применяется точечная нотация точки - после объекта класса ставится точка, а затем элемент класса:
объект.поле_класса
объект.метод_класса(параметры_метода)
Human bob = new Human(); // создание объекта класса Human
string HumanName = bob.name;
int HumanAge = bob.age;
Console.WriteLine($"Имя: {personName} Возраст {personAge}");
bob.name = "Bob";
bob.age = 37;
bob.Print();
class Human{###}

11.

Human Bob = new Human();
class Human
{
public string name = "Undefined";
public int age;
public void Print()
{
Console.WriteLine($"Имя: {name} Возраст: {age}");
}
}
Для создания объекта Bob используется выражение new Human(). В итоге после выполнения данного
выражения в памяти будет выделен участок, где будут храниться все данные объекта Human . А
переменная Bob получит ссылку на созданный объект, и через эту переменную мы можем использовать
данный объект и обращаться к его функциональности.

12.

Задачи
1 Задача(1 балл):
Напиши программу с использованием Top-Level
Statements, которая запрашивает имя пользователя
и приветствует его.
Входные данные:
Ввод: "Алекс"
Выходные данные:
Вывод: "Привет, Алекс!"
2 Задача(1 балл):
Создай класс BankAccount, который хранит баланс
пользователя и позволяет пополнять счет и снимать
деньги.
Метод снятия должен проверять, хватает ли средств.
Входные данные:
Пополнение: 2000
Снятие: 500
Снятие: 2000 (ошибка)
Выходные данные:
Баланс после операций: 1500
Ошибка: "Недостаточно средств"

13.

3 Задача(1 балл):
4 Задача(2 баллa):
Напиши класс Translator, который переводит слова с
Напиши программу, которая запрашивает возраст
пользователя, но выбрасывает исключение, если ввод английского на русский.
Метод Translate(string word) должен выбрасывать
некорректный
исключение, если слово не найдено в словаре.
(отрицательное число или не число).
Входные данные:
"25"
"-5"
"abc"
Выходные данные:
"Ваш возраст: 25"
"Ошибка: возраст не может быть отрицательным!"
"Ошибка: введите корректное число!"
Входные данные:
Translate("apple") → "яблоко"
Translate("dog") → "собака"
Translate("car") → Ошибка: Слово не найдено

14.

5 Задача(2 баллa):
Создай класс Warehouse, который управляет товарами на складе. Реализуй методы:
AddProduct(string name, int quantity) – добавляет товар на склад.
RemoveProduct(string name, int quantity) – списывает товар (если товара не хватает, выбрасывается
исключение).
GetProductQuantity(string name) – возвращает количество товара.
Входные данные:
Добавить: ("Яблоки", 50), ("Молоко", 30)
Списать: ("Яблоки", 20), ("Молоко", 40) (ошибка)
Выходные данные(пример):
"Остаток Яблоки: 30"
"Ошибка: Недостаточно товара Молоко"
English     Русский Rules