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

  • Результат выполнения программы (из листинга 9.2)

  • Результат выполнения программы (из листинга 9.4)

  • Васильев А.Н. Основы программирования на C#. Васильев А. Н. Программирование


    Скачать 5.54 Mb.
    НазваниеВасильев А. Н. Программирование
    АнкорВасильев А.Н. Основы программирования на C
    Дата20.09.2022
    Размер5.54 Mb.
    Формат файлаpdf
    Имя файлаVasilev_Programmirovanie-na-C-dlya-nachinayushchih-Osobennosti-y.pdf
    ТипДокументы
    #686596
    страница37 из 40
    1   ...   32   33   34   35   36   37   38   39   40
    Листинг 9.2. Объявление пространства имен System;
    //
    ɉɟɪɜɨɟ ɩɪɨɫɬɪɚɧɫɬɜɨ ɢɦɟɧ:
    namespace First{
    //
    Ɉɩɢɫɚɧɢɟ ɤɥɚɫɫɚ:
    class MyClass{
    public int num;
    public MyClass(int n){
    num=n;
    }
    public void show(){
    Console.WriteLine(
    ƎɄɥɚɫɫ ɢɡ First: Ǝ+num);
    }
    }
    }
    //
    ȼɬɨɪɨɟ ɩɪɨɫɬɪɚɧɫɬɜɨ ɢɦɟɧ:
    namespace Second{
    //
    Ɉɩɢɫɚɧɢɟ ɤɥɚɫɫɚ:
    class MyClass{
    public string txt;
    public MyClass(string t){
    txt=t;
    }
    public void show(){
    Console.WriteLine(
    ƎɄɥɚɫɫ ɢɡ Second: Ǝ+txt);
    }
    }
    Немного о разном
    Ƚɥɚɜɧɵɣ ɤɥɚɫɫ:
    class NameSpaceDemo{
    //
    Ƚɥɚɜɧɵɣ ɦɟɬɨɞ:
    static void Main(){
    //
    Ɉɛɴɟɤɬ ɤɥɚɫɫɚ ɢɡ ɩɟɪɜɨɝɨ ɩɪɨɫɬɪɚɧɫɬɜɚ ɢɦɟɧ:
    First.MyClass A=new First.MyClass(123);
    //
    Ɉɛɴɟɤɬ ɤɥɚɫɫɚ ɢɡ ɜɬɨɪɨɝɨ ɩɪɨɫɬɪɚɧɫɬɜɚ ɢɦɟɧ:
    Second.MyClass B=new Second.MyClass(
    ƎtextƎ);
    //
    ɂɫɩɨɥɶɡɨɜɚɧɢɟ ɨɛɴɟɤɬɨɜ:
    A.show();
    B.show();
    Результат выполнения программы такой, как показано ниже:
    
    Результат выполнения программы (из листинга 9.2)
    Ʉɥɚɫɫ ɢɡ First: 123
    Ʉɥɚɫɫ ɢɡ Second: Как отмечалось выше, оба пространства (First и Second) содержат описание класса. Классы имеют одинаковые названия MyClass, они однотипны, но это разные классы. Поскольку они относятся к разным пространствам имен, то совпадение их названий проблемой не является. Мы в программе для подключения пространств имен First или Second инструкцию using не используем, поэтому обращение к классу из пространства имен First выполняется в формате First.MyClass, а обращение к классу из второго пространства имен выполняется инструкцией вида Second.MyClass. На основе этих классов создаются объекты команды First.MyClass A=new First.MyClass(123) и Second.
    MyClass
    B=new Second.MyClass(
    ƎtextƎ)). Затем из этих объектов вызывается метод show(), что дает возможность проверить значения полей созданных объектов (в соответствии с описанием классов, у одного объекта поле целочисленное, ау другого — текстовое
    Глава Инструкция using, кроме известного нам способа использования, позволяет создавать еще и псевдонимы. С псевдонимами мы тоже имели дело. Например, мы использовали инструкцию string, которая является псевдонимом выражения System.String. Инструкция object является псевдонимом для выражения System.Object. Список можно продолжить.
    При создании псевдонима инструкция using используется в таком формате В данном случае идентификатор
    ɢɦɹ становится эквивалентом для инструкции, заданной
    ɜɵɪɚɠɟɧɢɟɦ. Чтобы прояснить ситуацию, рассмотрим пример в листинге Листинг 9.3. Использование инструкции using

    using System;
    //
    ɂɫɩɨɥɶɡɭɟɬɫɹ ɩɟɪɜɨɟ ɩɪɨɫɬɪɚɧɫɬɜɨ ɢɦɟɧ:
    using First;
    //
    ɂɫɩɨɥɶɡɭɟɬɫɹ ɩɫɟɜɞɨɧɢɦ ɞɥɹ ɤɥɚɫɫɚ
    //
    ɢɡ ɜɬɨɪɨɝɨ ɩɪɨɫɬɪɚɧɫɬɜɚ ɢɦɟɧ:
    using myclass=Second.MyClass;
    //
    Ɉɩɢɫɚɧɢɟ ɩɟɪɜɨɝɨ ɩɪɨɫɬɪɚɧɫɬɜɚ ɢɦɟɧ:
    namespace First{
    class MyClass{
    public int num;
    public MyClass(int n){
    num=n;
    }
    public void show(){
    Console.WriteLine(
    ƎɄɥɚɫɫ ɢɡ First: Ǝ+num);
    }
    }
    }
    //
    Ɉɩɢɫɚɧɢɟ ɜɬɨɪɨɝɨ ɩɪɨɫɬɪɚɧɫɬɜɚ ɢɦɟɧ:
    Немного о разном Second{
    class MyClass{
    public string txt;
    public MyClass(string t){
    txt=t;
    }
    public void show(){
    Console.WriteLine(
    ƎɄɥɚɫɫ ɢɡ Second: Ǝ+txt);
    }
    }
    }
    //
    Ƚɥɚɜɧɵɣ ɤɥɚɫɫ:
    class UsingNameSpaceDemo{
    static void Main(){
    //
    Ɉɛɴɟɤɬ ɤɥɚɫɫɚ ɢɡ ɩɟɪɜɨɝɨ ɩɪɨɫɬɪɚɧɫɬɜɚ ɢɦɟɧ:
    MyClass A=new MyClass(123);
    //
    Ɉɛɴɟɤɬ ɤɥɚɫɫɚ ɢɡ ɜɬɨɪɨɝɨ ɩɪɨɫɬɪɚɧɫɬɜɚ ɢɦɟɧ:
    myclass B=new myclass(
    ƎtextƎ);
    A.show();
    B.show();
    Данная программа практически совпадает с предыдущей (см. Листинг, за исключением лишь нескольких моментов. Как и ранее, мы описываем два пространства имении в каждом из них есть класс MyClass. Нона этот разв программе есть инструкция using First. Поэтому в программе мы можем обращаться к классу My-
    Class из пространства имен First просто по имени MyClass, не указывая явно пространство имен First.
    {
    i
    НАЗ А МЕТКУ Если в программе, кроме инструкции using
    First
    , добавить еще и инструкцию using
    Second
    , то возникнет ошибка и программа
    Глава не скомпилируется. Причина ошибки в том, что в таком случае по имени класса
    MyClass нельзя однозначно определить, о каком именно классе (из какого пространства имен) идет речь.
    Кроме этого, мы использовали инструкцию using myclass=Second.
    MyClass
    . В результате к классу MyClass из пространства имен Second можно обращаться по псевдониму myclass. Результат выполнения этой программы такой же, как ив предыдущем случае (см. Листинги результат выполнения программы НАЗ А МЕТКУ Для использования статических членов класса без явного обозначения названия класса можно применить статический импорт. Для этого после инструкции using указывается ключевое слово static
    , а затем — полная ссылка (с указанием пространства имен) на класс. Например, если воспользоваться инструкцией using static
    System.
    Math
    , ток статическим методами полям класса
    Math можно обращаться, не указывая имя класса. То есть вместо
    Math.PI
    или
    Math.
    Cos()
    можно соответственно использовать инструкции
    PI
    и Аналогично, воспользовавшись инструкцией using static
    System.
    Console
    , получаем возможность вместо обращения к методу
    Console.WriteLine()
    использовать выражение Работа с датой и временем

    Прием окончен. Обеденный перерыв!
    из к/ф Иван Васильевич меняет профессию»
    Нередко приходится иметь дело с таким специфическим типом информации, как дата и время. Для работы с датой и временем в языке C# предназначена структура DateTime. Экземпляры этой структуры позволяют представлять дату и время в диапазоне от 00:00:00 (ноль часов, ноль минут, ноль секунд) 1 января 1 года новой эры до 23:59:59 (без одной секунды полночь) 31 декабря 9999 года (даты здесь указаны по григорианскому календарю. Технически дата (и время) реализуется в виде целого числа, равного количеству тактов, которые прошли доданной даты, начиная с полночи 1 января 1 года. Длительность одного такта равна наносекундам (или 1 миллисекунда — это 10 000 тактов
    Немного о разном НАЗ А МЕТКУ Наибольшую и наименьшую дату, которые можно реализовать с помощью экземпляра структуры, можно узнать с помощью статических полей
    MaxValue и
    MinValue соответственно. Значением полей (доступных только для чтения) являются экземпляры структуры
    DateTime
    , соответствующие финальной и начальной датам, которые могут быть реализованы с помощью этой структуры.
    Если нас интересует только время (без даты, тов этом случае можно использовать экземпляр структуры Экземпляр структуры DateTime реализует определенную дату (и время. Существуют разные способы создать экземпляр структуры. Например, аргументами конструктору можно передать год, месяц и день для даты, реализуемой экземпляром структуры. Можно дополнительно указать часы, минуты и секунды. Или даже миллисекунды. Предусмотрена возможность явно указывать календарь, а также использовать мировое время (вместо местного, используемого по умолчанию. Можно определить дату и время, передав конструктору количество тактов НАЗ А МЕТКУ Экземпляр структуры
    DateTime содержит информацию о годе, месяце, дне в месяце, часах, минутах, секундах и миллисекундах. Здесь и далее поддатой мы будем подразумевать совокупность всех перечисленных выше параметров.
    В структуре DateTime есть много свойств и методов. Часто используется статическое свойство Now. Результатом оно возвращает экземпляр структуры, соответствующий текущей дате и времени (определяется по текущему времени компьютера. Если нужно получить текущую дату и время по мировому времени (формат UTC), используют свойство У структуры DateTime есть и другие полезные свойства свойство
    Date результатом возвращает экземпляр структуры
    DateTime
    , содержащий дату из исходного экземпляра (без времени время устанавливается нулевое значением свойства
    TimeOfDay возвращается экземпляр структуры
    TimeSpan
    , определяющий время для исходной даты (то есть это время без дня, месяца и года
    Глава 9
    482
    • значением свойства
    Today является экземпляр структуры
    DateTime
    , реализующий текущую дату (имеется ввиду только дата, без времени время устанавливается нулевое значением свойства
    Year является целое число, соответствующее году для данной даты значением свойства
    Month является целое число, определяющее месяц для данной даты значение свойства
    Day
    — это целое число, определяющее день в месяце для данной даты значением свойства
    Hour является целое число, определяющее количество часов для данной даты значением свойства
    Minute является целое число, определяющее количество минут для данной даты значением свойства
    Second является целое число, определяющее количество секунд для данной даты свойство
    Millisecond возвращает целочисленное значение, определяющее миллисекунды для даты свойство
    Ticks возвращает целое число, равное количеству тактов в данной дате значением свойства
    DayOfWeek является константа из одноименного перечисления
    DayOfWeek
    , определяющая день недели для даты свойство
    DayOfYear возвращает результатом целое число, определяющее день в году для данной даты значением свойства
    Kind является константа из перечисления
    DateTimeKind
    , определяющая характер времени (местное или ми- ровое).
    Кроме многочисленных свойству структуры DateTime имеется много методов, позволяющих выполнять различные операции с датой и временем. Есть группа методов, предназначенных для добавления к дате, реализованной экземпляром структуры DateTime, определенного интервала времени (годы, дни, часы, секунды итак далее Методу
    Add()
    аргументом передается экземпляр структуры время в часах, минутах, секундах и миллисекундах. Результатом возвращается новый экземпляр структуры
    DateTime
    , который
    Немного о разном
    483
    описывает результат добавления данного временного интервала к исходной дате Метод
    AddDays()
    позволяет добавить к дате дни (аргумент метода. Результат — экземпляр структуры
    DateTime
    • Метод
    AddHours()
    используется для добавления к дате часов
    ( аргумент метода, результатом возвращается экземпляр структуры
    DateTime
    • Метод
    AddMilliseconds()
    аргументом получает значение, определяющее количество миллисекунд, добавляемых к дате. Результатом возвращается экземпляр структуры
    DateTime
    , соответствующий новой дате Метод
    AddMinutes()
    позволяет вычислить новую дату (экземпляр структуры
    DateTime
    ), получающуюся прибавлением к исходной дате определенного количества минут (аргумент метода Метод
    AddMonths()
    аргументом получает количество месяцев, прибавляемых к дате (целое число. Результатом является экземпляр структуры
    DateTime с новой датой Методу
    AddSeconds()
    передается значение, определяющее количество добавляемых к дате секунд. Результатом возвращается экземпляр структуры
    DateTime с новой датой Метод
    AddTicks()
    позволяет добавить к дате указанное количество тактов (целочисленный аргумент метода. Результатом возвращается экземпляр структуры
    DateTime с новой датой Метод
    AddYears()
    позволяет добавить к дате определенное количество лет (целочисленный аргумент метода. Результатом является экземпляр структуры
    DateTime с новой датой Метод
    DaysInMonth()
    аргументами получает два целочисленных значения (год и месяц в году, а результатом возвращает количество дней в месяце Метод
    GetDateTimeFormats()
    может вызываться с разными аргументами (в том числе и без них, а результатом является текстовый массив с поддерживаемыми форматами для текстовых представлений даты Метод
    IsDaylightSavingTime()
    позволяет проверить, попадает ли данная дата в диапазон летнего времени (для текущего часового пояса
    Глава 9
    484
    • Статический метод
    IsLeapYear()
    используется для проверки того, является ли год високосным. Год в виде целого числа передается аргументом методу Статический метод
    Parse()
    используется для преобразования текста (аргумент метода) в экземпляр структуры
    DataTime
    . Существуют разные способы передачи аргументов методу
    Parse()
    . Аналогичная задача решается с помощью статического метода
    ParseExact()
    , нов этом случае требуется строгое соответствие текстовой строки с датой заданному формату. Для решения аналогичных задач также могут использоваться статические методы
    TryParse()
    и
    TryParseExact()
    • Аргументом методу
    Subtract()
    передается экземпляр структуры
    DateTime
    (дата) или
    TimeSpan
    (время. Из исходной даты вычитается дата/время, переданные аргументом методу Результатом возвращается экземпляр структуры
    TimeSpan и
    DateTime соответственно Для перевода даты в местное время используют метод
    ToLocalTime()
    • Для получения текстового представления даты используют метод
    ToString()
    . Метод может вызываться без аргументов (в том числе при автоматическом преобразовании типов) или с передачей аргументов, определяющих формат текстового представления Для перевода даты в мировое время UTC используют метод
    ToUniversalTime()
    • Для сравнения дат используют методы
    Compare()
    ,
    CompareTo()
    и
    Equals()
    {
    i
    НАЗ А МЕТКУ К экземплярам структуры
    DateTime применяются операторы сравнения, а также сложение (к экземпляру структуры
    DateTime можно прибавлять экземпляр структуры
    TimeSpan
    ) и вычитание (из экземпляра структуры
    DateTime можно вычитать экземпляр структуры
    DateTime или Скромный пример, иллюстрирующий методы работы с датой и временем, представлен в листинге Листинг 9.4. Работа с датой и временем System;
    //
    Ƚɥɚɜɧɵɣ ɤɥɚɫɫ:
    Немного о разном DateTimeDemo{
    //
    Ƚɥɚɜɧɵɣ ɦɟɬɨɞ:
    static void Main(){
    //
    Ɍɟɤɭɳɚɹ ɞɚɬɚ ɢ ɜɪɟɦɹ:
    DateTime today=DateTime.Now;
    //
    Ɍɟɤɭɳɚɹ ɞɚɬɚ:
    Console.WriteLine(
    ƎɌɟɤɭɳɚɹ ɞɚɬɚ: {0}Ǝ,DateTime.Today);
    //
    ɂɫɩɨɥɶɡɨɜɚɧɢɟ ɫɜɨɣɫɬɜ ɢ ɦɟɬɨɞɨɜ
    //
    ɫɬɪɭɤɬɭɪɵ DateTime:
    Console.WriteLine(
    ƎȾɚɬɚ ɢ ɜɪɟɦɹ: {0}Ǝ,today);
    Console.WriteLine(
    ƎȽɨɞ: {0}Ǝ,today.Year);
    Console.WriteLine(
    Ǝȼɢɫɨɤɨɫɧɵɣ: {0}Ǝ,DateTime.IsLeapYear(today.Year));
    Console.WriteLine(
    ƎɆɟɫɹɰ: {0}Ǝ,today.Month);
    Console.WriteLine(
    ƎȾɟɧɶ ɧɟɞɟɥɢ: {0}Ǝ,today.DayOfWeek);
    Console.WriteLine(
    ƎȾɟɧɶ ɜ ɝɨɞɭ: {0}Ǝ,today.DayOfYear);
    Console.WriteLine(
    Ǝɑɚɫɵ: {0}Ǝ,today.Hour);
    Console.WriteLine(
    ƎɆɢɧɭɬɵ: {0}Ǝ,today.Minute);
    Console.WriteLine(
    Ǝɋɟɤɭɧɞɵ: {0}Ǝ,today.Second);
    Console.WriteLine(
    ƎɆɢɥɥɢɫɟɤɭɧɞɵ: {0}Ǝ,today.Millisecond);
    Console.WriteLine(
    ƎɌɚɤɬɵ: {0}Ǝ,today.Ticks);
    //
    ɇɨɜɚɹ ɞɚɬɚ ɢ ɜɪɟɦɹ:
    DateTime date=new DateTime(1974,10,22,6,15,12);
    Console.WriteLine(date.ToString(
    Ǝɇɨɜɚɹ ɞɚɬɚ: dd MMMM yyyy; ɜɪɟɦɹ — HH:mm:ssƎ));
    //
    ɂɧɬɟɪɜɚɥ ɜɪɟɦɟɧɢ:
    TimeSpan time=new TimeSpan(17,71,125);
    //
    Ɉɩɟɪɚɰɢɢ ɫ ɞɚɬɨɣ ɢ ɜɪɟɦɟɧɟɦ:
    Console.WriteLine(
    Ǝɂɧɬɟɪɜɚɥ ɜɪɟɦɟɧɢ: {0}Ǝ,time);
    Console.WriteLine(
    Ǝȿɳɟ ɨɞɧɚ ɞɚɬɚ: {0}Ǝ,date.Add(time));
    Console.WriteLine(
    ƎɊɚɡɧɨɫɬɶ ɞɚɬ (ɞɧɟɣ): {0}Ǝ,(today-date).Days);
    Console.WriteLine(
    ƎɊɚɡɧɨɫɬɶ ɞɚɬ (ɬɚɤɬɨɜ): {0}Ǝ,(today-date).Ticks);
    }
    }
    Глава Результат выполнения программы такой:
    
    Результат выполнения программы (из листинга 9.4)
    Ɍɟɤɭɳɚɹ ɞɚɬɚ: 29.10.2017 0:00:00
    Ⱦɚɬɚ ɢ ɜɪɟɦɹ: 29.10.2017 13:41:13
    Ƚɨɞ: 2017
    ȼɢɫɨɤɨɫɧɵɣ: False
    Ɇɟɫɹɰ: 10
    Ⱦɟɧɶ ɧɟɞɟɥɢ: Sunday
    Ⱦɟɧɶ ɜ ɝɨɞɭ: 302
    ɑɚɫɵ: 13
    Ɇɢɧɭɬɵ: 41
    ɋɟɤɭɧɞɵ: 13
    Ɇɢɥɥɢɫɟɤɭɧɞɵ: 958
    Ɍɚɤɬɵ: 636448812739586786
    ɇɨɜɚɹ ɞɚɬɚ: 22 ɨɤɬɹɛɪɹ 1974; ɜɪɟɦɹ — 06:15:12
    ɂɧɬɟɪɜɚɥ ɜɪɟɦɟɧɢ: 18:13:05
    ȿɳɟ ɨɞɧɚ ɞɚɬɚ: 23.10.1974 0:28:17
    Ɋɚɡɧɨɫɬɶ ɞɚɬ (ɞɧɟɣ): 15713
    Ɋɚɡɧɨɫɬɶ ɞɚɬ (ɬɚɤɬɨɜ): Код исключительно простой, поэтому прокомментируем лишь некоторые его моменты. Так, результатом выражения DateTime.Now является текущая (на момент вызова команды) дата и время. Результатом выражения является текущая дата, но время в этом случае нулевое. Командой DateTime date=new DateTime(1974,10,22,
    6,15,12)
    создается экземпляр для реализации даты. Год, месяц, день месяца, часы, минуты и секунды для даты передаются аргументами кон- структору.
    При вызове из экземпляра date структуры DateTime метода
    ToString()
    с текстовым аргументом инструкция
    ƎddƎ в тексте означает, что в соответствующем месте должен отображаться день месяца (двумя цифрами. Инструкция
    ƎMMMMƎ означает отображение названия месяца. Инструкция
    ƎyyyyƎ означает, что в соответствующем месте год должен
    Немного о разном
    487
    отображаться с помощью четырех цифр. Инструкция
    ƎHH:mm:ssƎ определяет формат для отображения времени (часы, минуты, секунды ПОДРОБНОСТИ bИнструкция "d"
    означает, что для обозначения даты используются числа от
    1
    до
    31
    . Инструкция "dd"
    означает, что день обозначается числами от
    01
    до
    31
    (то есть всегда используется две цифры. Инструкция "ddd"
    используется, если день должен отображаться как день недели в сокращенном написании. Если используется инструкция "dddd"
    , то день отображается как день недели (полное написание).
    Месяц отображается с помощью инструкций "M"
    (число от
    1
    до
    12
    ),
    "MM"
    (число от
    01
    до
    12
    — то есть всегда две цифры,
    "MMM"
    (сокращенное название месяца,
    "MMMM"
    (полное название месяца).
    Для отображения года можно использовать инструкции "y"
    (число от
    0
    до
    99
    ),
    "yy"
    (число от
    00
    до
    99
    — то есть всегда две цифры,
    "yyy"
    (год отображается числом минимум из трех цифр, год отображается числом из четырех цифр).
    Инструкции "h"
    и "hh"
    используются для отображения количества часов числами от
    1
    дои от
    01
    до
    12
    соответственно. А инструкции "H"
    и "HH"
    используются для отображения количества часов числами от
    0
    дои от
    00
    до Инструкции "m"
    и "mm"
    используют для отображения количества минут числами от
    0
    дои от
    00
    до
    59
    . Для отображения секунд используют инструкции "s"
    (диапазон значений от
    0
    дои "диапазон значений от
    00
    до Экземпляр структуры TimeSpan, который создается командой
    TimeSpan time=new TimeSpan(17,71,125), определяет интервал времени. Аргументы конструктора — это часы, минуты и секунды НАЗ А МЕТКУ Обратите внимание, что 71 минута — это 1 час и 11 минута секунд это 2 минуты и 5 секунд. Таким образом, экземпляру time структуры
    TimeSpan отвечает интервал времени протяженностью
    18 часов, 13 минут и 5 секунд.
    Результатом выражения date.Add(time) является экземпляр структуры, через который реализуется такая дата к дате из экземпляра прибавляется временной интервал из экземпляра time. Результатом разности today-date является экземпляр структуры TimeSpan. В нем реализован интервал времени между датами из экземпляров
    Глава 9
    1   ...   32   33   34   35   36   37   38   39   40


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