Вы находитесь на странице: 1из 11

Вопросы

1. Опишитекаждую составляющую алфавита языка С#. Дайте


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

y 1
v  sin 2 ( x  y ) x  cos 2 (arctg ) = 1.6268…
z
return Math.Pow(Math.Sin(x + y) * Math.Pow(x, Math.Abs(y)), 2) +
Math.Pow(Math.Cos(Math.Atan(1 / z)), 2);

2. Классифицируйте по группам все возможные операции языка C#.


Укажите приоритетность их выполнения. Поясните в чем заключается разница
между унарными операциями: (++а)-5 и (а++)-5. Вычислите результат при
а=10. С помощью тернарной операции проверьте является ли число четным.
Классификация:
1) Арифметические
2) Условные
3) Битовые
4) Логические
5) Присваивания
++a возвращает значение a после того, как оно было увеличено. //6
a++ возвращает значение a до приращения. //5
int a = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(a % 2 == 0 ? "Число чётное" : "Число нечётное");

3. Поясните синтаксис и особенности использования операторов if-else


и switch-case-default в С#. С помощью операторов выбора написать программу
для расчета корней квадратного уравнения.
Если условие в конструкции if – true, то выполняются те действия, которые в нём,
если условие не выполняется, то вызывается конструкция else.
Конструкция if/else проверяет истинность некоторого условия и в зависимости от
результатов проверки выполняет определенный код
if(условие)
{ Оператор(операторы) }
else{Оператор(операторы)}
Конструкция switch/case аналогична конструкции if/else, так как позволяет
обработать сразу несколько условий
switch (a)
{
case 5: Console.WriteLine('' 1 ''); break;
case 6: Console.WriteLine('' 2 ''); break; }
default:
Console.WriteLine("default");
break;
}
static public void Descrim(double a1, double b, double c)
{
double d = Math.Pow(b, 2) - 4 * a1 * c;

if( d > 0 || d == 0)
{
double x1 = (-b + Math.Sqrt(d)) / (2 * a1);
double x2 = (-b - Math.Sqrt(d)) / (2 * a1);
Console.WriteLine("первый корень" + x1);
Console.WriteLine("второй корень" + x2);
}

else {
Console.WriteLine("нет корней");
}
}

4. Поясните синтаксис и особенности использования операторов цикла


while, do-while, for и foreach в С#. Опишите разницу между оператором цикла
с пред- и постусловием. С помощью операторов цикла написать программу
для суммы всех четных двузначных чисел.
for(инициализатор; условие; итератор) { оператор (операторы) }foreach
foreach (тип имя_переменной_цикла in коллекция) { оператор }//для перебора
коллекций
while (условие) { оператор (операторы); итератор }
do{операторы} while(условие)
while – если условие false, то уикл не пройдет ни разу
do while – один раз пробежится даже при false условии

int sum = 0;
for (int i = 10; i < 99; i += 2)
{
sum += i;
}
5. Дайте определение понятию массив. Перечислите все возможные
способы объявления одномерного и двумерного массива. В одномерном
массиве найти сумму элементов массива, расположенных между первым
отрицательным и последним нулевым элементами.
Массив - набор однотипных данных.
int[] arr = new int[1];
var arr1 = new int[1];
var arr2 = new int[] { 1, 2, 3 };
int[] arr3 = new int[] { 1, 2, 3 };
int[] arr4 = { 1, 2, 3 };
int[] arr5 = (new List<int>() { 1, 2, 3 }).ToArray();
Array arr6 = new int[]{ 1, 23, 3 };
Array arr7 = new int[,] { { 1, 23, 3 }, { 4, 5, 6 } };
int[,] arr8 = { { 1, 2, 3 }, { 4, 5, 6 } };
int[,] arr9 = new int[2,2] { { 1, 4 },{ 2, 3 } };
public static void Sum(int[] arr)
{
int res = 0;
var lst = arr.ToList();
int min = lst.Min();
int minInd = lst.FindIndex(x => x == min);

int lastZeroInd = lst.FindLastIndex(x => x == 0);

for (int i = minInd; i < lastZeroInd; i++)


{
res += arr[i];
}
Console.WriteLine(res);
}

6. Дайте определение понятию «метод». Поясните разницу между


передачей параметров по ссылке и по значению. Для чего нужен параметр
static в методах? Напишите программу с использованием метода, который
будет считать сумму цифр числа (число может иметь любое количество цифр).
Продемонстрировать вызов метода в Main.
Метод – функция, принадлежащая классу
по значению - копию переменной (нельзя изменить)
по ссылке - адрес переменной в памяти (можно изменить).
Static function – это функция без this, т.е. нельзя обратиться к членам класса.
(относится к типу)
static public int DigitSum(int num)
{
int sum = 0;
while (num != 0)
{
sum += num % 10;
num /= 10;
}
return sum;
}
Main(string []args)
int num = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(DigitSum(num));

7. Опишите особенности создания строк в классах Char[], String и


StringBuilder. Приведите пример вставки заданного символа “W” в начало
строки S1=”abcdef” на основе методов трех классов.
string message1;
string s1 = "hello";
string s2 = null;
string s3 = new String('a', 6); // результатом будет строка "aaaaaa"
string s4 = new String(new char[]{'w', 'o', 'r', 'l', 'd'});
var temp = "Hello World!";
static string S(string s) {return "W" + s;}
8. Опишите особенности работы с регулярными выражениями в С#.
Перечислите основные управляющие символы для построения регулярных
выражений. Постройте регулярное выражение для вывода телефонного
номера в формате ххх-хх-хх.
Основной класс при работе с регулярными выражениями является класс Regex.
^: соответствие должно начинаться в начале строки
$: конец строки
.: знак точки определяет любой одиночный символ
*: предыдущий символ повторяется 0 и более раз
+: предыдущий символ повторяется 1 и более раз
?: предыдущий символ повторяется 0 или 1 раз
\s: соответствует любому пробельному символу
\S: соответствует любому символу, не являющемуся пробелом
· \w: соответствует любому алфавитно-цифровому символу
· \d: соответствует любой десятичной цифре

\d{3}-\d{2}-\d{2}

9. Опишите синтаксис объявления структуры. Перечислите особенности


использования и инициализации объектов структур на языке С#. Создайте
структуру для описания класса Человек, полями которого будут имя и возраст,
укажите конструктор и метод вывода данных о созданном объекте структуры.
Продемонстрируйте работу программы в Main.
Структура – нельзя наследовать, тип данных по значению, нет default constructor,
не инициализировать явно.
struct Person
{
public int age;
public string name;

public Person(string name, int age)


{
this.name = name;
this.age = age;
}
public override string ToString()
{
return age.ToString() + "-age, " + name + "-name";
}
}
static void Main(string[] args)
{
Person p = new Person("Zhopa", 18);
Console.WriteLine(p);
}
10. Перечислитеосновные принципы ООП. Опишите каждый из
принципов. Напишите фрагмент программы, демонстрирующий основные
принципы ООП, на примере реализации иерархии классов: Фигура -
Прямоугольник - Параллелепипед. Класс “Фигура” - абстрактный. В каждом
производном классе присутствует - конструктор инициализации, методы
ввода-вывода данных.
ООП - Это такой подход к написанию программ, который основывается на
объектах. Объект — реализация класса. Все реализации одного класса похожи
друг на друга, но могут иметь разные параметры и значения.
Наследование - делает возможным повторное использование кода. Это, когда
класс потомок имеет все те же свойства и методы, что и класс предка от которого
он наследуется.
Инкапсуляция: правильное формирование в классе модификаторов доступа.
Полиморфизм: способность объекта обрабатывать разные типы данных.
abstract class Figure
{
public virtual double Perimeter { get; }
public virtual double Square { get; }
}

class Pryamoogolnik : Figure


{
public double A { get; set; }
public double B { get; set; }
public override double Perimeter
{
get
{
return A * B;
}
}

public override double Square


{
get
{
return A + B * 2;
}
}
}

class Paralelogramm : Pryamoogolnik


{
public double H { get; set; }

public override double Perimeter


{
get
{
return base.Perimeter + (H * 4);
}
}
public override double Square
{
get
{
return 2 * A * B * A * H;
}
}
}

11. Что такое конструктор? Опишите особенности конструктора класса.


Напишите фрагмент программы описания класса “Прямоугольник”, методами
которого представить перегрузку конструкторов. Продемонстрируйте в Main
работу с перегруженными конструкторами.
Конструктор класса – это специальный метод (функция) класса. Конструктор
вызывается при создании объекта класса
class Pryamoogolnik
{
public double A;
public double B;
public override string ToString()
{
return A.ToString() + B.ToString();
}
public Pryamoogolnik(double a, double b)
{
this.A = a;
this.B = b;
}
}
static void Main(string[] args){
Pryamoogolnik pr = new Pryamoogolnik(11, 12);
Console.WriteLine(pr);
}
12. Перечислите режимы доступа к членам класса. Опишите каждый
режим доступа. Для чего используется ключевое слово this? Приведите
пример использования this в конструкторе и в методе класса.
Ключевое слово this ссылается на текущий экземпляр класса, а также
используется в качестве модификатора первого параметра метода расширения.
class A
{
public int a { get; set; }
public int c = 0;
public A(int a)
{
this.a = a;
}
public int Count(int c)
{
(this.c == 0)
{
return ++c;
}
return 0;
}}
}
13. Дайте определение понятию абстрактный класс. Опишите
особенности абстрактных классов. Приведите пример описания абстрактного
класса и производного от него класса, создайте конкретный объект.
Абстрактный класс – базовый класс, который не предполагает создание экземпляров.
- может иметь переменные, методы, конструкторы, свойства. Используется
ключевое слово abstract.
- мы не можем использовать конструктор абстрактного класса для создания его
объекта
abstract class Person
{
public string Name { get; set; }
public Person(string name)
{
Name = name;
}
}
class Client : Person
{
public int Sum { get; set; } // сумма на счету
public Client(string name, int sum): base(name)
{
Sum = sum;
}
Client client = new Client("Tom", 500);

14. Что такое виртуальный метод? Опишите особенности использования


виртуальных методов. Продемонстрируйте работу виртуальных методов для
расчета площади на примере иерархии фигур Квадрат -> Прямоугольник.
Те методы и свойства, которые мы хотим сделать доступными для переопределения, в базовом классе
помечается модификатором virtual.
А чтобы переопределить метод в классе-наследнике, этот метод определяется с модификатором override.
Переопределенный метод в класе-наследнике должен иметь тот же набор параметров, что и виртуальный
метод в базовом классе
abstract class Figure
{
public virtual double Squareq { get; }
}

class Square : Figure


{
public double A;
public override double Squareq
{
get
{
return A * A;
}
}
}

class Ptyamoug : Square


{
public double B;
public override double Squareq
{
get
{
return A * B;
}
}
}
15. Что такое интерфейс? Опишите синтаксис и особенности объявления
интерфейсов. Реализуйте интерфейс ввода-вывода IPrint для класса Студент,
полями которого являются ФИО и его оценки за семестр.
Интерфейс – набор публичных данных, может определять некоторый функционал – набор
методов и свойств без реализации.
class Student : IPrint {
public string FIO;
public int [] Marks;

public Student(string Fio, int[]arr)


{
this.FIO = Fio;
this.Marks = arr;
}

public void Print()


{
Console.WriteLine("FIO" + FIO);
Console.WriteLine("All marks:");
foreach (var item in Marks)
{
Console.WriteLine(item);
}
}
}
16. Что такое стандартные интерфейсы .Net? Опишите назначение,
синтаксис и семантику стандартного интерфейса IComparable. Приведите
пример реализации данного интерфейса для класса Человек с полями имя и
возраст. Сравнение производить по возрасту.
IClonable, IComparable, IComparer, IEnumerable
public interface IComparable – имеет 1 метод
{
    int CompareTo(object o);
}
class Person : IComparable
{
public string Name { get; set; }
public int Age { get; set; }
public int CompareTo(object o)
{
Person p = o as Person;
if (p != null)
return this.Age.CompareTo(p.Age);
else
throw new Exception("Невозможно сравнить два объекта");
}
}

class Program
{

static void Main(string[] args)


{
Person p1 = new Person { Name = "Bill", Age = 34 };
Person p2 = new Person { Name = "Tom", Age = 21 };
Person p3 = new Person { Name = "Alice", Age = 23 };

Person[] people = new Person[] { p1, p2, p3 };


Array.Sort(people);
foreach (Person p in people)
{
Console.WriteLine($"{p.Name} - {p.Age}");
}
17. Перечислите виды ошибок в программах. Синтаксис и семантика
операторов try-catch. Как создавать пользовательские классы для обработки
исключений? Опишите класс Оценка за семестр с полем оценка, а также
методами ввода-вывода данных. Реализуйте свой класс для обработки
исключений для данного класса.
DivideByZeroException
NullReferenceException
ArgumentException
При использовании блока try...catch..finally вначале выполняются все
инструкции в блоке try. Если в этом блоке не возникло исключений, то после его
выполнения начинает выполняться блок finally. И затем конструкция try..catch..finally
завершает свою работу.
Если же в блоке try вдруг возникает исключение, то обычный порядок выполнения
останавливается, и среда CLR начинает искать блок catch, который может обработать
данное исключение. Если нужный блок catch найден, то он выполняется, и после его
завершения выполняется блок finally.
18. Если нужный блок catch не найден, то при возникновении исключения
программа аварийно завершает свое выполнение.

19. Что такое делегат? Опишите синтаксис объявления делегата,


создание экземпляров делегата и их использование. Какие операции можно
использовать с делегатами? Приведите пример передачи делегата в качестве
параметра в функцию.
делегаты - это указатели на методы и с помощью делегатов мы можем вызвать
данные методы
delegate void Message();
Message mes; // 2. Создаем переменную делегата

20. Что такое событие и обработчик события? Синтаксис объявления


события. Как события связаны с делегатом? Создайте класс Мешок, полем
которого будет количество шаров. Создайте событие добавления и удаления
шаров из мешка, предусматривающих различные случаи. Продемонстрируйте
работу с событиями в Main.
21. Что такое анонимный метод? Чем лямбда-выражение отличается от
анонимного метода? Напишите сортировку массива по убыванию с использованием
лямбда-выражения.
Определение анонимных методов начинается с ключевого слова delegate, после
которого идет в скобках список параметров и тело метода в фигурных скобках.
List<int> list = new List<int>() { 1, 4, 5, 2, 6 };
list.Sort((a, b) => b.CompareTo(a));
foreach (var item in list)
{
Console.WriteLine(item);
}
22. Что такое обобщения? Опишите синтаксис объявления обобщенного
класса и создания объекта такого класса. Приведите пример использования
обобщенного метода для разных типов данных.
23. Опишите разницу между List и массивом. Перечислите обобщенные
и не обобщенные коллекции. Удалите положительные четные элементы из
целочисленного листа.
24. Перечислитевиды параметризованных коллекций. Опишите
коллекцию Dictionary<T,K>. Напишите фрагмент кода с использованием
коллекции Dictionary<T,K>.
25. Приведите классификацию файлов в С# с указанием стандартных
классов пространства имен System.IO для их обработки. Приведите примеры
записи и чтения текстового файла и байтового файла (на основе потока
Stream).
Бывают текстовые и бинарные файлы. Произвольный доступ доступен для текстовых.

Systerm.IO
Static class File:
Create
Exists
Delete
Copy
Read
ReadAllText

StreamWriter и StreamReader – для текстовых


BinaryWriter и BinaryReader – для бинарных
Using(StreamWriter sw = new StreamWriter(path))
{
try
{
sw.WriteLine(“dlkl”)
}
catch
{
}
}

26. Что такое сериализация? Как исключить поля из сериализации?


Перечислите классы, которые реализуют сериализацию, и их особенности.
Приведите примеры.
27. Опишите модель документа XML. Перечислите основные методы и
свойства для обращения к элементам XML-документа. Приведите пример
создания XML-документа через класс XmlDocument.
28. Для чего предназначен класс System.Thread? Опишите основные
функции для работы с потоком. Приведите пример использования нескольких
потоков.
29. Опишите структуру проекта WPF и XAML-кода (Windows Form).
Перечислите основные типы контейнеров компоновки и элементов
управления. Напишите программу, использующую контейнер Grid, элементы
TextBox и Button для поиска самого длинного слова в строке.
30. Опишите возможности взаимодействия между окнами в WPF
(Windows Form). Для чего используется свойство Owner? Приведите примеры.
31. Опишите процесс привязки базы данных к проекту WPF (Windows
Form) с помощью технологии ADO.NET или Entity Framework.
Создается модель данных на основе существующей бд.

Оценить