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

  • 1. Инкремент (++) и декримент(--).

  • 2. Операция new.

  • 3. Отрицание

  • 4. Явное преобразование типа.

  • 5. Умножение (*), деление (/) и деление с остатком (%).

  • 6. Сложение (+) и вычитание (-).

  • 7. Операции отношения ( , >=, ==, !=)

  • 8. Логические операции

  • 9. Операции присваивания

  • Лабораторные работы № 2 Выполнить задания 4,6. Лабораторная работа программирование алгоритмов линейной структуры на языке c#


    Скачать 358.16 Kb.
    НазваниеЛабораторная работа программирование алгоритмов линейной структуры на языке c#
    Дата29.09.2022
    Размер358.16 Kb.
    Формат файлаdocx
    Имя файлаЛабораторные работы № 2 Выполнить задания 4,6.docx
    ТипЛабораторная работа
    #704431
    страница2 из 4
    1   2   3   4

    Организация ввода-вывода данных


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

    Ввод данных

    Для ввода данных используется метод ReadLine, реализованный в классе Console. Особенностью данного метода является то, что в качестве результата он возвращает строку (string).

    Пример:

    static void Main()

    {

    string s = Console.ReadLine();

    Console.WriteLine(s);

    }

    Для того чтобы получить числовое значение необходимо воспользоваться преобразованием данных.

    Пример:

    static void Main()

    {

    string s = Console.ReadLine();

    int x = int.Parse(s); //преобразование строки в число

    Console.WriteLine(x);

    }

    Или сокращенный вариант:

    static void Main()

    {

    //преобразование введенной строки в число

    int x = int.Parse(Console.ReadLine());

    Console.WriteLine(x);

    }

    Преобразование типов данных осуществляется с помощью класса Convert или метода Parse. Для преобразования строкового представления целого числа в тип int используется метод int.Parse(), который реализован для всех числовых типов данных. Если требуется преобразовать строковое представление в вещественное, то используется метод float.Parse() или double.Parse(). В случае, если соответствующее преобразование выполнить невозможно, то выполнение программы прерывается и генерируется исключение System.FormatExeption (входная строка имела неверный формат).

    Класс Convert, определенный в пространстве имен System обеспечивает необходимые преобразования между различными типами. Методыкласса Convert поддерживают общий способ выполнения преобразований между типами. Класс Convert содержит 15 статических методов вида To (ToBoolean(),...ToUInt64()), где Type может принимать значения от Boolean до UInt64 для всех встроенных типов. Единственным исключением является тип object, - метода ToObject нет по понятным причинам, поскольку для всех типов существует неявное преобразование к типу object.
    Вывод данных

    Для вывода данных используется метод WriteLine, реализованный в классе Console, который позволяет организовывать вывод данных на экран. Однако существует несколько способов применения данного метода:

    1. Console.WriteLine(x); //на экран выводится значение идентификатора х

    2. Console.WriteLine("x=" + x +"y=" + y); /* на экран выводится строка, образованная последовательным слиянием строки "x=", значения x, строки "у=" и значения у */

    3. Console.WriteLine("x={0} y={1}", x, y); /* на экран выводится строка, формат которой задан первым аргументом метода, при этом вместо параметра {0} выводится значение x, а вместо {1} – значение y*/


    Использование управляющих последовательностей:

    Управляющей последовательностью называют определенный символ, предваряемый обратной косой чертой. Данная совокупность символов интерпретируется как одиночный символ и используется для представления кодов символов, не имеющих графического обозначения (например, символа перевода курсора на новую строку) или символов, имеющих специальное обозначение в символьных и строковых константах (например, апостроф).

    Рассмотрим управляющие символы:

    Вид

    Наименование

    \a

    Звуковой сигнал

    \b

    Возврат на шаг назад

    \f

    Перевод страницы

    \n

    Перевод строки

    \r

    Возврат каретки

    \t

    Горизонтальная табуляция

    \v

    Вертикальная табуляция

    \\

    Обратная косая черта

    \'

    Апостроф

    \"

    Кавычки

    Пример:

    static void Main()

    {

    Console.WriteLine("Ура!\nСегодня \"Информатика\"!!!");

    }


    Управление размером поля вывода:

    Первым аргументом WriteLine указывается строка вида
    {n, m} – где n определяет номер идентификатора из списка аргументов метода WriteLine, а m – количество позиций (размер поля вывода), отводимых под значение данного идентификатора. При этом значение идентификатора выравнивается по правому краю. Если выделенных позиций для размещения значения идентификатора окажется недостаточно, то автоматически добавиться необходимое количество позиций.

    Пример:

    static void Main()

    {

    double x= Math.E;

    Console.WriteLine("E={0,20}", x);

    Console.WriteLine("E={0,10}", x);

    }


    Управление размещением вещественных данных:

    Первым аргументом WriteLine указывается строка вида {n: ##.###} – где n определяет номер идентификатора из списка аргументов метода WriteLine, а ##.### определяет формат вывода вещественного числа. В данном случае под целую часть числа отводится две позиции, под дробную – три. Если выделенных позиций для размещения целой части значения идентификатора окажется недостаточно, то автоматически добавиться необходимое количество позиций.

    Пример:

    static void Main()

    {

    double x= Math.E;

    Console.WriteLine("E={0:##.###}", x);

    Console.WriteLine("E={0:.####}", x);

    }


    Управление форматом числовых данных:

    Первым аргументом WriteLine указывается строка вида {n: <спецификатор>m} – где n определяет номер идентификатора из списка аргументов метода WriteLine, <спецификатор> - определяет формат данных, а m – количество позиций для дробной части значения идентификатора. В качестве спецификаторов могут использоваться следующие значения:


    Параметр

    Формат

    Значение

    C или c

    Денежный. По умолчанию ставит знак р. Изменить его можно с помощь объекта NumberFormatInfo

    Задается количество десятичных разрядов

    D или d

    Целочисленный (используется только с целыми числами)

    Задается минималь-ное количество цифр. При необходимости результат дополняется начальными нулями

    E или e

    Экспоненциальное представление чисел

    Задается количество символов после запятой. По умолчанию используется 6

    F или f

    Представление чисел с фиксированной точкой

    Задается количество символов после запятой

    G или g

    Общий формат (или экспоненциальный, или с фиксированной точкой)

    Задается количество символов после запятой. По умолчанию выводится целая часть

    N или n

    Стандартное форматирование с использованием запятых и пробелов в качестве разделителей между разрядами

    Задается количество символов после запятой. По умолчанию – 2, если число целое, то ставятся нули

    X или x

    Шестнадцатеричный формат




    P или p

    Процентный





    Порядок вычислений определяется приоритетом операций. Основные правила соответствуют принятым в математике. Операции языка С# (с учетом убывания приоритета):

    1. Инкремент (++) и декримент(--).

    Эти операции имеют две формы записи - префиксную, когда операция записывается перед операндом, и постфиксную - операция записывается после операнда. Префиксная операция инкремента (декремента) увеличивает (уменьшает) свой операнд и возвращает измененное значение как результат. Постфиксные версии инкремента и декремента возвращают первоначальное значение операнда, а затем изменяют его.

    Пример:

    static void Main()

    {

    int i = 3, j = 4;

    Console.WriteLine("{0} {1}", i, j);

    Console.WriteLine("{0} {1}", ++i, --j);

    Console.WriteLine("{0} {1}", i++, j--);

    Console.WriteLine("{0} {1}", i, j);

    }

    Результат работы программы:
    3 4

    4 3

    4 3

    5 2


    2. Операция new. Используется для создания нового объекта. С помощью ее можно создавать как объекты ссылочного типа, так и размерные, например:

    object z=new object();

    int i=new int(); // то же самое, что и int i =0;

    3. Отрицание:

    • Арифметическое отрицание (-) – меняет знак операнда на противоположный.

    • Логическое отрицание (!) – определяет операцию инверсия для логического типа.

    Пример:

    static void Main()

    {

    int i = 3, j=-4;

    bool a = true, b=false;

    Console.WriteLine("{0} {1}", -i, -j);

    Console.WriteLine("{0} {1}", !a, !b);

    }

    Результат работы программы:

    -3 4

    False True


    4. Явное преобразование типа. Используется для явного преобразования из одного типа в другой. Формат операции:

    (тип) выражение;

    Пример:

    static void Main()

    {

    int i = -4;

    byte j = 4;

    int a = (int)j; //преобразование без потери точности

    byte b = (byte)i; //преобразование с потерей точности

    Console.WriteLine("{0} {1}", a, b);

    }

    Результат работы программы:

    4 252


    5. Умножение (*), деление (/) и деление с остатком (%).

    Операции умножения и деления применимы для целочисленных и вещественных типов данных. Для других типов эти операции применимы, если для них возможно неявное преобразование к целым или вещественным типам. При этом тип результата равен "наибольшему" из типов операндов, но не менее int. Если оба операнда при делении целочисленные, то и результат тоже целочисленный.

    Пример:

    static void Main()

    {

    int i = 100, j = 15;

    double a = 14.2, b = 3.5;

    Console.WriteLine("{0} {1} {2}", i*j, i/j, i%j);

    Console.WriteLine("{0} {1} {2}", a * b, a / b, a % b);

    }

    Результат работы программы:

    1500 6 10
    49.7 4.05714285714286 0.1999999999999999


    6. Сложение (+) и вычитание (-). Операции сложения и вычитания применимы для целочисленных и вещественных типов данных. Для других типов эти операции применимы, если для них возможно неявное преобразование к целым или вещественным типам.
    7. Операции отношения ( <, <=, >, >=, ==, !=). Операции отношения сравнивают значения левого и правого операндов. Результат операции логического типа: true - если значения совпадают, false - в противном случае.

    Пример:

    static void Main()

    {

    int i = 15, j = 15;

    Console.WriteLine(i
    Console.WriteLine(i<=j); //меньше или равно

    Console.WriteLine(i>j); //больше

    Console.WriteLine(i>=j); //больше или равно

    Console.WriteLine(i==j); //равно

    Console.WriteLine(i!=j); //не равно

    }

    Результат работы программы:
    False

    True
    False

    True
    True

    False


    8. Логические операции: И (&&), ИЛИ (||).

    Логические операции применяются к операндам логического типа. Результат логической операции И имеет значение истина тогда и только тогда, когда оба операнда принимают значение истина. Результат логической операции ИЛИ имеет значение истина тогда и только тогда, когда хотя бы один из операндов принимает значение истина.

    Пример:

    static void Main()

    {

    Console.WriteLine("x y x и y x или y");

    Console.WriteLine("{0} {1} {2} {3}", false, false, false&&false, false||false);

    Console.WriteLine("{0} {1} {2} {3}", false, true, false&&true, false||true);

    Console.WriteLine("{0} {1} {2} {3}", true, false, true&&false, true||false);

    Console.WriteLine("{0} {1} {2} {3}", true, true, true&&true, true||true);

    }

    Результат работы программы:

    x y x и y x или y

    False False False False

    False True False True

    True False False True

    True True True True
    9. Операции присваивания: =, +=, -= и т.д.

    Формат операции простого присваивания (=):
    операнд_2 = операнд_1;

    В результате выполнения этой операции вычисляется значение операнда_1, и результат записывается в операнд_2. Выражение вида a=b=c=100 выполняется справа налево: результатом выполнения c=100 является число 100, которое затем присваивается переменной b, результатом чего опять является 100, которое присваивается переменной a.

    Кроме простой операции присваивания существуют сложные операции присваивания, например, умножение с присваиванием (*=), деление с присваиванием (/=), остаток от деления с присваиванием (%=), сложение с присваиванием (+=), вычитание с присваиванием (-=) и т.д.

    В сложных операциях присваивания, например, при сложении с присваиванием, к операнду_2 прибавляется операнд_1, и результат записывается в операнд_2. То есть, выражение с += а является более компактной записью выражения с = с + а.

    Если в одном выражении соседствуют операции одного приоритета, то операции присваивания и условная операции выполняются справа налево, а остальные наоборот. Если необходимо изменить порядок выполнения операций, то в выражении необходимо поставить круглые скобки.

        1. 1   2   3   4


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