русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Замечание.


Дата добавления: 2013-12-23; просмотров: 1008; Нарушение авторских прав


Рассмотрим следующий фрагмент программы:

int i=3, j=4; Console.WriteLine("{0} {1}", i, j);

При обращении к методу WriteLine через запятую перечисляются три аргумента: "{0} {1}", i, j. Первый аргумент определяет формат выходной строки. Следующие аргументы нумеруются с нуля, так переменная i имеет номер 0, j – номер 1. Значение переменной i будет помещено в выходную строку на место {0}, а значение переменной j –на место {1}. В результате на экран будет выведена строка: 3 4. Если мы обратимся к методу WriteLine следующим образом Console.WriteLine("{0} {1} {2)", j, i, j), то на экран будет выведена строка: 4 3 4.

Последний вариант использования метода WriteLine является наиболее универсальным, потому что он позволяет не только выводить данные на экран, но и управлять форматом их вывода. Рассмотрим несколько примеров:

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

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

Вид Наименование
\a Звуковой сигнал
\b Возврат на шаг назад
\f Перевод страницы
\n Перевод строки
\r Возврат каретки
\t Горизонтальная табуляция
\v Вертикальная табуляция
\\ Обратная косая черта
\' Апостроф
\" Кавычки

Пример:

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

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

Первым аргументом 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); }
  1. Управление размещением вещественных данных:

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

static void Main() { double x= Math.E; Console.WriteLine("E={0:##.###}", x); Console.WriteLine("E={0:.####}", x); }

Задание.Измените программу так, чтобы число e выводилось на экран с точностью до 6 знаков после запятой.

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

Первым аргументом 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 Процентный  

Пример:

static void Main() { Console.WriteLine("C Format:{0,14:C} \t{0:C2}", 12345.678); Console.WriteLine("D Format:{0,14:D} \t{0:D6}", 123); Console.WriteLine("E Format:{0,14:E} \t{0:E8}", 12345.6789); Console.WriteLine("G Format:{0,14:G} \t{0:G10}", 12345.6789); Console.WriteLine("N Format:{0,14:N} \t{0:N4}", 12345.6789); Console.WriteLine("X Format:{0,14:X} ", 1234); Console.WriteLine("P Format:{0,14:P} ", 0.9); }

Ввод данных

Для ввода данных обычно используется метод 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); }

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

Задание.Измените предыдущий фрагмент программы так, чтобы с клавиатуры вводилось вещественное число, а на экран это число выводилось с точностью до 3 знаков после запятой.


Лекция 3. Операции языка С#

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

Замечание. Операции можно классифицировать по количеству операндов на: унарные - воздействуют на один операнд, бинарные - воздействуют на два операнда, тернарные - воздействует на три операнда. Некоторые символы используются для обозначения как унарных, так и бинарных операций. Например, символ "минус" используется как для обозначения унарной операции - арифметического отрицания, так и для обозначения бинарной операции вычитание. Будет ли данный символ обозначать унарную или бинарную операцию, определяется контекстом, в котором он используется.

3.1 Некоторые операции С#

  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 44 34 35 2

Задание.Выясните, допустимы ли следующие способы записи ++(++i), (i--)--, ++(i--) и т.д. И почему.

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

  1. Операция new.Используется для создания нового объекта. С помощью ее можно создавать как объекты ссылочного типа, так и размерные, например:
3. object z=new object();4. int i=new int(); // то же самое, что и int i =0;
  1. Отрицание:
    • Арифметическое отрицание (-) - меняет знак операнда на противоположный.
    • Логическое отрицание (!) - определяет операцию инверсия для логического типа.

Рассмотрим эти операции на примере.

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 4False True

Задание.Выясните, допустимы ли следующие способы записи !(-i), -(!a). И почему.

  1. Явное преобразование типа.Используется для явного преобразования из одного типа в другой. Формат операции:
7. (тип) выражение;

Рассмотрим эту операцию на примере.

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

Задание.Объясните, почему операция (byte)i вместо ожидаемого значения -4 дала нам в качестве результата значение 252.

  1. Умножение (*), деление (/) и деление с остатком (%).Операции умножения и деления применимы для целочисленных и вещественных типов данных. Для других типов эти операции применимы, если для них возможно неявное преобразование к целым или вещественным типам. При этом тип результата равен "наибольшему" из типов операндов, но не менее 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 1049.7 4.05714285714286 0.1999999999999999

Задание.Выясните, чему будет равен результат операции:

    • 1.0/0;
    • 1/0

И объясните, как получился данный результат.

  1. Сложение (+) и вычитание (-). Операции сложения и вычитания применимы для целочисленных и вещественных типов данных. Для других типов эти операции применимы, если для них возможно неявное преобразование к целым или вещественным типам.
  2. Операции отношения ( <, <=, >, >=, ==, !=). Операции отношения сравнивают значения левого и правого операндов. Результат операции логического типа: true - если значения совпадают, false - в противном случае. Рассмотрим операции на примере:
static void Main() { int i = 15, j = 15; Console.WriteLine(i<j); //меньше Console.WriteLine(i<=j); //меньше или равно Console.WriteLine(i>j); //больше Console.WriteLine(i>=j); //больше или равно Console.WriteLine(i==j); //равно Console.WriteLine(i!=j); //не равно } Результат работы программы: FalseTrueFalse TrueTrueFalse
  1. Задание.Выясните, чему равен результат данного выражения:
    • i<j<k
    • true<false

И объясните, как получился данный результат.

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

Логические операции применяются к операндам логического типа.

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

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

Рассмотрим операции на примере:

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 или yFalse False False FalseFalse True False TrueTrue False False TrueTrue True True True

Замечание. Фактически была построена таблица истинности для логических операций И и ИЛИ.

Задание.Объясните, какое значение примет переменная t в данном фрагменте программы: int a=10, b=3; bool t=(a>=b && a!=2*b || a<0);

  1. Условная операция.

Формат: (<операнд1>)? <операнд2> : <операнд3>;

Операнд1 - это логическое выражение, которое оценивается с точки зрения его эквивалентности константам true и false. Если результат вычисления операнда1 равен true, то результатом условной операции будет значение операнда2, иначе - операнда3. Фактически условная операция является сокращенной формой условного оператора if, который будет рассмотрен позже.

Пример использования условной операции:

static void Main(){ int x=5; int y=10; int max = (x > y) ? x : y; Console.WriteLine(max);}

Задание.Измените программу так, чтобы:

    • вычислялось наименьшее значение из двух вещественных чисел x и y;
    • если число двузначное, то на экран выводилось "Да", и "Нет" в противном случае.
  1. Операции присваивания: =, +=, -= и т.д.

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

операнд_2 = операнд_1;

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

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

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

Задание.Объясните, какие значения примут переменные t и b после выполнения данного фрагмента программы: int a=10, b=3; int t=(a++)-b; int b+=t*a;

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

3.2 Выражения и преобразование типов

Выражение - это синтаксическая единица языка, определяющая способ вычисления некоторого значения. Выражения состоят из операндов, операций и скобок. Каждый операнд является в свою очередь выражением или одним из его частных случаев - константой, переменной или функций.

Замечание. Список математических функции, реализованных в С# приведен в приложении 2.

Примеры выражений:

(а + 0.12)/6 х && у || !z (t * Math.Sin(x)-l.05e4)/((2 * k + 2) * (2 * k + 3))

Операции выполняются в соответствии с приоритетами (см. приложение 1). Для изменения порядка выполнения операций используются круглые скобки. Если в одном выражении записано несколько операций одинакового приоритета, то унарные операции, условная операция и операции присваивания выполняются справа налево, остальные - слева направо. Например,

а = b = с означает a=(b=c),

a+b+c означает (а + b) + с.



<== предыдущая лекция | следующая лекция ==>
Замечания | Условный оператор if


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.01 сек.