Размер
Методичка по C# / Часть 03. Основы программирования на языке C#
Play

Методичка по C# / Часть 03. Основы программирования на языке C#

2. Написать программу , которая запрашивает с клавиатуры два целых числа и выводит на экран выражение их сложения в прямом и обратном порядке :

3. Написать программу , которая запрашивает с клавиатуры три целых числа и выводит на экран сумму данных чисел :

4. Написать программу , которая запрашивает с клавиатуры два вещественных числа и выводит на экран произведение данных чисел ( вещественные числа выводятся с точностью до 1 знака после запятой ):

5. Написать программу , которая запрашивает с клавиатуры два вещественных числа , и выводит на экран результат деления первого числа на второе ( вещественные числа выводятся с точностью до 3 знаков после запятой ):

Основы программирования на языке C#

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

7. Написать программу , которая запрашивает с клавиатуры номинал купюры и количество купюр , и выводит экран следующее сообщение :

8. Написать программу , которая запрашивает с клавиатуры сумму вклада и процент по вкладу , и выводит на экран начисленную в конце года сумму :

9. Написать программу , которая запрашивает с клавиатуры сумму вклада и процент по вкладу , и выводит на экран итоговую сумму вклада в конце года :

10. Написать программу , которая запрашивает с клавиатуры имя человека и его возраст , и выводит на экран следующее сообщение ( в примере текущим годом считается 2009):

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

Основы программирования на языке C#

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

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

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

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

static void Main()

int i = 3, j = 4; Console.WriteLine(" ", i, j); Console.WriteLine(" ", ++i, --j); Console.WriteLine(" ", i++, j--); Console.WriteLine(" ", i, j);

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

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

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

object z = new object();

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

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

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

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

Основы программирования на языке C#

static void Main()

bool a = true, b=false; Console.WriteLine(" ", -i, -j); Console.WriteLine(" ", !a, !b);

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

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

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

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

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

static void Main()

int i = -4; byte j = 4;

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

// преобразование с потерей точности byte b = (byte)i; Console.WriteLine(" ", a, b);

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

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

В Pascal, C++ и других языках допускается неявное преобразование типов , которое в рамках предыдущего примера позволило бы записать : b=i. В этом случае происходит потеря точности вычислений , о чем компилятор либо либо " умалчивает ", либо сообщает в виде предупреждения . Возможность неявного преобразования чревата вычислительными ошибками , которые очень трудно найти . Чтобы избежать подобных ошибок , в C# запрещены некоторые виды неявных преобразований . Более подробно преобразование типов мы рассмотрим в следующем разделе .

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

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

Основы программирования на языке C#

« наибольшему » из типов операндов , но не менее int. Если оба операнда при делении целочисленные , то и результат тоже целочисленный .

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

static void Main()

int i = 100, j = 15; double a = 14.2, b = 3.5;

Console.WriteLine(" ", i*j, i/j, i%j); Console.WriteLine(" ", a * b, a / b, a % b);

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

49.7 4.05714285714286 0.1999999999999999

Выполните фрагмент программы :

double a=100, b=33; Console.WriteLine(a/b); double d=100/33; Console.WriteLine(d);

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

Выясните , чему будут равны результаты выполнения операций 1.0/0 и 1/0. Объясните полученные результаты .

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

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

Операции отношения сравнивают значения левого и правого операндов . Результат операции логического типа : 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); // не равно

Основы программирования на языке C#

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

Выясните , чему будут равны результаты вычисления выражений 10<25<30 и true<false. Объясните полученные ответы .

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

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

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

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

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

static void Main()

false, false, false&&false, false||false); Console.WriteLine(" ",

false, true, false&&true, false||true); Console.WriteLine(" ",

true, false, true&&false, true||false); Console.WriteLine(" ",

true, true, true&&true, true||true);

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

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

Объясните , какое значение примет переменная t в данном фрагменте программы :

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

Основы программирования на языке C#

Операнд 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;

Измените программу так , чтобы на экран выводилось « Да », если число двузначное и « Нет » в противном случае .

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

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

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

В результате выполнения этой операции вычисляется значение операнда _1, и результат записывается в операнд _2. Можно связать воедино сразу несколько операторов присваивания , записывая такие цепочки :

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

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

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

Объясните , какие значения примут переменные t и b после выполнения данного фрагмента программы :

int a=10, b=3; int t=(a++)-b; int b+=t*a;

Основы программирования на языке C#

Рассмотренные операции приведены с учетом убывания приоритета . Полный список операций приведен в приложении 1.

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

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

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

(t * Math.Sin(x)-l.05e4)/((2 * k + 2) * (2 * k + 3))

Вычисление значения выражения происходит с учетом приоритета операций ( см . Приложение 1), которые в нем участвуют . Если в выражении соседствуют операции одного приоритета , то унарные операции , условная операция и операции присваивания выполняются справа налево , остальные – слева направо . Например , а = b = с означает a=(b=c), a+b+c означает ( а + b) + с .

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

📎📎📎📎📎📎📎📎📎📎