Главная страница
Навигация по странице:

  • №5. Числовые типы данных, перечислите. Чем они отличаются. Особенность сравнения чисел с плавающей запятой.

  • №6 Строка. Операторы работы со строками. Какие методы и свойства есть у строк. Значение строки null

  • №7.var. Арифметические операции и var.

  • №8.Методы, синтаксис метода, разбиение алгоритма на методы

  • Private | public

  • №11. Массив. Виды массивов, отличия (в том числе организация в памяти). Массивы и foreach

  • №12.Массивы. Тип ссылки и тип значения, может ли массив иметь значение null. Передача массива в метод

  • №13.Сравнение массивов и строк

  • №14.StringBuilder. Что это такое, зачем нужен, как использовать, в чем преимущество

  • №16.Файл. Каталог. Какие методы для работы с ними вы знаете. Кодировка файла, управление кодировкой Файл

  • №18. Класс. Объект. Их разница. Что такое метод, поле, свойство классаКласс

  • 20.Наследование. Иерархия наследования. Upcast, downcast.Наследование

  • №22.Полиморфизм. Виртуальные методы. Пример Полиморфизм

  • Виртуальный метод

  • 24 Структура. Отличие от класса. Передача структуры в метод

  • 25. Boxing, unboxing. Принципиальное отличие от upcast, downcast Boxing (упаковка)

  • №27. LINQ, что такое, как с ним работать, примеры LINQ

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


    Скачать 423.2 Kb.
    Название5. Числовые типы данных, перечислите. Чем они отличаются. Особенность сравнения чисел с плавающей запятой
    АнкорВопросы программная инженерия первый курс
    Дата25.09.2022
    Размер423.2 Kb.
    Формат файлаdocx
    Имя файлаМое.docx
    ТипИнструкция
    #694952
    №1.Типы данных. Какие существуют типы данных, какие категории типов данных можно выделить. Логический тип данных, какие значения может принимать?
    Переменная - именованная область в памяти, куда можно поместить какое-то значение для дальнейших операций. Тип переменной - формат, т.е.инструкция, каким образом размещается информация в памяти. Существуют: целочисленный (int, long), вещественный (double, float), логический (bool), символьный (char), строковой (string). Категории: значащие (стек), ссылочные (куча).

    №2. Преобразование и приведение типов данных. Приоритет типов данных?
    Приведение явное: int a = 45; double b = 34.45; a = (int)b; C.Wr(a)=34 (потеря инфы). Неявное: int a = 45; double b = 34.45; b = (int)a; C.Wr(a)=45.00. Приор: byte, short, int, long. (тип с меньшим приоритетом преображается в тип с большим приоритетом).

    №5. Числовые типы данных, перечислите. Чем они отличаются.  Особенность сравнения чисел с плавающей запятой. Системный тип, размер и числа: byte (1b), short(2b), int(4b), long(8b), float(4b),double(8b),decimal(16b). Погрешность.
    №6 Строка. Операторы работы со строками. Какие методы и свойства есть у строк. Значение строки null?
    Строка - последовательность символов, тип string. Можно использовать оператор присваивания (=), обращение к определенному символу по индексу (text[]), сложение (+"x").
    Методы: вывод с 1-го по x символ: str.Substring(0,5); (на всяк: int.Parse(str);); String.Compare(a, b): если первая строка будет находиться ниже в результатах сортировки(-1)/(1)/(0); num.ToString(); text.Remove(m,i) удаляет m элементов, начиная с i-го элемента. Св-ва: str.Lenght.
    Строка может иметь зн-ние null, т.к. ссылочный тип, значит значение строки нет.
    №7.var. Арифметические операции и var. a/b(11/4)=2 (цело), a%b(11%4)=3(остаток). Приоритет: приведение к типу = +-итд. a=b=c <=> a=(b=c). ++a - сразу(пре). var a/2.0(5/2.0)=double.

    №8.Методы, синтаксис метода, разбиение алгоритма на методы?
    Метод-блок кода, содержащий ряд инструкций. Обьявляется в классе. Все инструкции выполняются в контексте метода. Синтаксис: static тип данных Name(тип1 n1, тип2 n2). Вызывать метод: var name = Name(x,y). static void -невернем, return (a/b). Private | public - защищенный и открытый методы. К первым могут обращаться ТОЛЬКО объекты данного класса, ко 2ым любые объекты.
    №10.Цикл. Виды циклов, сравнительный анализ. Операторы перехода?
    for ([инициализация счетчика]; [условие]; [изменение счетчика])
    foreach (тип данных переменная in откуда берем) / foreach (int e in array) - из массива
    do (что-то) while (условие) - хотя бы 1 раз выполнится // while(условие) {делаем} - сразу проверяет true
    Операторы: break - если нужно выйти из цикла, не ждя finish; continue - до end, но для пропуска итерации
    №11. Массив. Виды массивов, отличия (в том числе организация в памяти). Массивы и foreach?
    Массив - последовательность однородных данных. Шаблон: тип д[] name = new тип д[n]. Индексация array[0]=1. Массивы бывают многомерные, чье кол-во измерений (ранг) больше 1 (двумерные int[,], трехмерные). Существует массив массивов:int[][]array=int[3][, array[0]=new int[2];
    ММ отличается от М тем, что к-во эл-ов в строках может быть разным, его можно создать благодаря вложенным М.
    №12.Массивы. Тип ссылки и тип значения, может ли массив иметь значение null. Передача массива в метод? М можно передавать в кач-ве арг-ов в параметре метода. Поскольку М представляет собой ссылочные типы, метод может изменять значение эл-ов.

    №13.Сравнение массивов и строк?
    1. Строка имеет методы, специфичные только для строк: str.Substring(n,k) - взятые подстроки, вывод эл-ов с n в кол-ве k; str.ToLower()- K->k. 2. Строки неизменяемы: при сложении строк, текущая строка не изменяется, ссылка начинает ввести на новый обьект, т.е. меняется ссылка.
    №14.StringBuilder. Что это такое, зачем нужен, как использовать, в чем преимущество?
    SB-класс, изменяемая строка: var name=new SB(*txt*); в пр-ве имен using System.Text. Методы: name.Append("*txt*")-позволяет вложить какое-то значение (добавляют к строке подстроку), name.Insert(n,"*txt*")-вставляет текст с n-го эл-та (старый не меняется); name.Remove(n,k)-удаление, name[n]='char'. Не нужно полностью заменять строки на SB, только в тех случаях, когда много преобразований. При конкатенации большого кол-ва строк, обычный метод "в лоб" требует много памяти в куче и работает медленнее, SB-yes.

    №15. Специальные символы. Что это такое, как задаются в коде, их использование. Что такое экранирование? Экранирование символов — корректный вывод строки на экран: \' \'' \\ -вывод символов. \r -возврат каретки; \t - гор.табуляция; \v-верт.табуляци; \0 -пустой символ; C.Wr(@ "Гриб")=> Гриб.

    №16.Файл. Каталог. Какие методы для работы с ними вы знаете. Кодировка файла, управление кодировкой? Файл-
    именованая область данных на носителе информации. Каталог-обьект в файловой системе, который упрощает организацию файлов. Перевод символов в байты осуществляется с помощью кодировки. Консорциум Юникода - приняла единый станд. кодирования символов(юникод), включающий в себя знаки почти всех письменных языков мира. UTF-8 - распространенный стандарт кодирования символов. (1eng-1b;1rus-2b;1kit-3b). Для работы с файлами предназначена пара классов File
    и FileInfo.


    №18. Класс. Объект. Их разница. Что такое метод, поле, свойство класса?
    Класс-
    некая сущность, общая инструкция по которой строятся уже обьекты, ссылочный тип. Обьект - экземпляр класса: public class Student, обьект: var students=new Student(). Например, класс студентов - обьект - студент. Еще пример: класс-лист анкета-обьекты-заполненный лист - обьект. Вся функц-сть класса представлена его полями(переменными): public int Age;, методами и св-вами. Свойства позволяют вложить дополнительную логику, которая может быть необходима, например при присвоении переменной класса какое-либо значение: publicтип Age { get {возвращаемое_значение;} set {устанавливаемое_значение;}}
    №19.Статический класс, статический метод, статическое поле класса?
    Статический класс - класс, все поля и методы которого являются статическими. Статические поля - грубо говоря общие для всех обьектов класса. Т.е. статические данные постоянные данные, которые равны во всех экземплярах класса. Стат.метод: вызываем из класса, а не из обьекта




    20.Наследование. Иерархия наследования. Upcast, downcast.
    Наследование -
    когда что-то является частным случае чего-то. Каждый частный случай добавляет какие-то свои характеристики. Чем тщательней отбор, тем больше отличительных свойств. Т.е. каждая следующая сущность наследует признаки предыдущего. Трансп.средст-с двиг внутр.сгораня-автомобиль.
    Пример: class Car : Transport; car - дочерний от класса transport, transport - род.класс.
    Upcast - приведение обьекта к базовому типу (род.классу), downcast - к дочернему.
    (В результате upcast создается ссылка базового класса из ссылки производного класса. После upcast переменная ссылается на тот же самый объект. Сам объект в результате upcast никак не изменяется и не преобразуется. В результате downcast создается ссылка производного класса из ссылки базового класса. Меняется только ссылка, а не обьект.) Downcast требует явного приведения, поскольку данная операция потенциально может вызвать ошибку при выполнении.
    №21. Интерфейсы. Отличие интерфейсов от классов. Примеры интерфейсов и классов, которые их реализуют?
    Интерфейс-
    ссылочный тип, контракт, обязательство для класса содержать определенные методы. Если программист забудет некоторые методы, то программа не скомплируется, потому что контракт нарушен. Интерфейс могут реализовать только динамические классы: class Student : IRules - указывает, что класс должен реализовать этот интерфейс. Классы содержат поля и реализованные методы, а интерфейс только предполагает эти методы. Класс их наследуют и реализует.

    №22.Полиморфизм. Виртуальные методы. Пример?
    Полиморфизм - способность работать с разными данными через интерфейс/способность объектов с одним интерфейсом иметь различную реализацию. Допустим у нас есть 2 класса, у обоих есть метод GetSquared() (площадь). Но площадь этих фигур нужно вычислять индивидуально => реализация одного и того же метода различна. Полиморфизм проявляется в виртуальных методах.
    Виртуальный метод -
    переопределяемый в производных классов метод. Вызов вирт.метода осуществляется в соотв-вии с фактическим типом обьекта, к которому метод применяется.
    virtual - спецификатор, позволяющий переопределить реализацию метода в дочерних классах. Если метод в дочернем классе не был переопределен, то при обращении к нему будет вызван метод род.класса.
    В классе пишем виртуальный метод, тогда в каждом наследнике будет этот самый метод, причем его реализацию можно изменить, добавив слово override: в классе животные public virtual void Say(), потом создаем класс Cat и Dog : Animals. Переопределяем методы: Кот:public override void Say()/С.Wr("Meow") и Пес: public override void Say()/С.Wr("Gaf").
    №23. Целостность данных. Зачем нужна, как реализуется. Конструктор. Readonly поля?
    Целостность данных - это ряд ограничивающих условий, которые показывают что данные, которые хранятся в некотором классе, соответствуют его логике. Данные целые, когда они осмыслены. Откуда берутся условия ЦД: мат.смысла тех или иных понятий (пр:процент удачи),законов. Чтоб не сломать программу. Защитить ЦД: ключ.слово private (доступ к данному полю/методу возможен только внутри данного класса).
    Конструктор- еще один способ обеспечения ЦД. Это метод, имя которого совпадает с именем его типа. Его сигнатура метода содержит только имя метода и список параметров, у него нет возвращаемого типа: class Person и public int Age {get;(private)св-во можно изменять тольк внутри класса set;} и public Person(int age){Age=age}. В другом классе создаю обьект: Person Cat = new Person(2) и тогда Cat.Age=99 мы не можем сделать. Get - код, который выполняется, когда мы пытаемся получить значение св-ва; set - код, который выполняется, когда мы пытаемся присвоить св-ву значение. Readonly - приват поля, которые доступны только для чтения. Их можно присваивать только при обьявлении или в конструкторе. Их можно изменить только раз, из donly поля инициализируешь 1 раз и его можно будет только считывать(пример угол 90 градусов у прямоугольников).

    24 Структура. Отличие от класса. Передача структуры в метод?
    Наряду с классами структура представляет еще один способ создания собст.типданных в С#. Более того многие примитивные типы(int, double и др) по сути являются структурами. Struct - ключ.слово. Все поля структуры должны быть инициализированы. Отличие от класса: S - тип значение (стек), C-ссыл.тип, (куча), S не может иметь значение null и мы всегда знаем сколько памяти понадобится, не нуждается в создании обьекта от нее. При передачи структуры в метод передается копия исходной структуры. Метод не изменяет ее значение.


    25. Boxing, unboxing. Принципиальное отличие от upcast, downcast?
    Boxing(упаковка)-процесс (upcast), при котором структура перемещается в кучу вместе с ее значениями, т.е. это процесс явного преобразования в ссылочный тип.
    Unboxing(распаковка)-процесс (downcast), при котором структура из кучи будет перемещена в стек. Но нужно обязательно проверить совместимость типов.
    Отличие:
    1) Когда работаешь классом, то up/down позволяют нам сменить точку зрения на обьект. 2)up|down работает быстрее Box|Unbox, т.к. во втором случае создается целая структура, память забивается.
    №27. LINQ, что такое, как с ним работать, примеры?
    LINQ - библиотека для работы с коллекциями, это простой и удобный язык запросов к источнику данных. Позволяет эффективно работать со списками. Работает в пространстве имен System.Linq. Например: фильтрация, нужно найти тех студентов, которые учатся в B группе. Вместо того, чтобы воспользоваться foreach можно кратко: result = students.Where(z => z.Group == "KN-1") или выборка, взять каждого студента и сформировать его фамилию из листа студентов в лист фамилий .Select(z => z.LastName) превратить список в лист .ToList(); Когда мы берем LINQ, то несколько ограничиваем язык/агоритмы, но все из базовых кирпичиков.
    №28. Что такое делегат, для чего используется?
    Делегат
    представляет собой обьект, который может ссылаться на метод. Следовательно, когда создается делегат, то в итоге получается обьект, содержащий ссылку на метод. Более того, метод можно вызвать по этой ссылке. Т.е. делегат позволяет вызывать метод, на который он ссылается: delegate возвращаемый_тип имя (список_параметров). Где возвращаемый тип обозначает тип значения, возвращаемого методами, которые будут вызываться делегатом, список параметров - параметры, необходимые для методов, вызываемых делегатов. Как только будет создан экземпляр делегата, он может вызывать и ссылаться на те методы, возвращаемый тип и параметры которых соответствуют указанным в объявлении делегата.



    написать администратору сайта