Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие NET.doc
Скачиваний:
26
Добавлен:
07.03.2016
Размер:
4.63 Mб
Скачать

Операнд_1 ? операнд_2 : операнд_3.

Перший операнд - вираз, для якого існує неявне перетворення до логічного типу. Якщо результат обчислення першого операнда рівний true, то результатом умовної операції буде значення другого операнда, інакше - третього операнда. Обчислюється завжди або другий операнд, або третій. Приклад застосування умовної операції представлений в лістингу 3.8.

Лістинг 3.8. Умовна операція

using System;

namespace Consoleapplicationl

{

class Classl

{

static void Main( )

{

int a = 11, b = 4;

int max = b > a ? b : a;

Console.WriteLine( max ); // Результат 11

}

}

}

Операції привласнення

Операції привласнення ( =, + =, -=, *= і т. д.) задають нове значення змінної. Ці операції можуть використовуватися в програмі як закінчені оператори.

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

Змінна = Вираз

Механізм виконання операції привласнення такий: обчислюється вираз і його результат заноситься в пам'ять за адресою, яка визначається ім'ям змінної, операцією, що знаходиться зліва від знаку. Те, що раніше зберігалося в цій області пам'яті, природно, втрачається. Схематично це корисно уявити собі так:

Змінна  Вираз

Приклади операторів привласнення:

а = b + с / 2;

b = а;

а = b;

х = 1;

х = х + 0.5;

Для правого операнда операції привласнення повинно існувати неявне перетворення до типу лівого операнда. Наприклад, вираз цілого типу можна привласнити дійсній змінній, тому що цілі числа є підмножиною дійсних, і інформація при такому привласненні не втрачається:

дійсна змінна = цілий_вираз;

Результатом операції привласнення є значення, записане в лівий операнд. Тип результату збігається з типом лівого операнда.

У складних операціях привласнення ( + =, * =, /= і т. п.) при обчисленні виразу, що стоїть в правій частині, використовується значення з лівої частини. Наприклад, при складанні з привласненням до другого операнда додається перший, і результат записується в перший операнд, тобто вираз а += b є компактнішим записом виразу а = а + b.

Результатом операції складного привласнення є значення, яке записане в лівий операнд.

Операції привласнення правоасоціативні, тобто виконуються справа наліво, на відміну від більшості інших операцій (а = b = с означає а = (b = с) ).

3.3. Лінійні програми (програмування лінійних обчислювальних процесів)

Лінійною називається програма, всі оператори якої виконуються послідовно в тому порядку, в якому вони записані. Простим прикладом лінійної програми є програма розрахунку по заданій формулі. Вона складається з трьох етапів: введення початкових даних, обчислення за формулою і виведення результатів.

3.3.1. Просте введення-виведення даних

Будь-яка програма при введенні початкових даних і виведенні результатів взаємодіє із зовнішніми пристроями. Сукупність стандартних пристроїв введення і виведення, тобто клавіатури і екрану, називається консоллю. У мові С# немає операторів введення і виведення. Замість них для обміну із зовнішніми пристроями застосовуються стандартні об'єкти. Для роботи з консоллю в С# застосовується клас Console, визначений в просторі імен System. Методи цього класу Write і Writeline вже використовувалися в наших программах. Розглянемо ці методи детальніше на прикладі лістингу 3.9.

Лістинг 3.9. Методи виведення

using System;

namespace ConsoleApplicationl

{ class Classl

{ static void Main()

{

int i = 3;

double y = 4.12;

decimal d = 600m;

string s = "Вася";

Console.WriteLine( "i = " + i ) ; //1

Console.WriteLine( "y = {0} \nd = {1}", y, d ); // 2

Console.WriteLine( "s = " + s ) ; //3

}

}

}

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

i= 3

y = 4,12

d = 600

s = Вася

На лістингу 3.9 в рядках 1 і 3 показано виведення пояснень і значень змінних. Коли метод Writeline викликаний з одним параметром, він може бути числом, символом або рядком. Якщо потрібно вивести в рядку не одну, а дві величини: текстове пояснення і значення змінної, необхідно їх “склеїти” в один рядок за допомогою операції “+”. Перед об'єднанням рядка з числом треба перетворити число з його внутрішньої форми уявлення в послідовність символів, тобто в рядок. Перетворення в рядок визначене у всіх стандартних класах С# - для цього служить метод ToString(). В даному випадку він виконується неявно, але можна викликати його і явним чином:

Console.WriteLine( "i = " + i.ToString( ));

Оператор 2 ілюструє виведення формату. В цьому випадку використовується інший варіант методу Writeline, який містить більше одного параметра. Першим параметром передається рядковий літерал, що містить окрім звичайних символів і послідовностей, що управляють, параметри у фігурних дужках. Параметри нумеруються з нуля, перед виведенням вони замінюються значеннями відповідних змінних в списку виведення: нульовий параметр замінюється значенням першої змінної (у даному прикладі - у), перший параметр - другою змінною (у даному прикладі - d) і так далі

Для кожного параметра можна задати ширину поля виведення і формат виведення. Це буде розглянуто нижче.

З послідовностей, що управляють, найчастіше використовуються символи переведення рядка (\n) і горизонтальної табуляції (\t).

Розглянемо прості способи введення з клавіатури. У класі Console визначені методи введення рядка і окремого символу, але немає методів, які дозволяють безпосередньо зчитувати з клавіатури числа. Введення числових даних виконується в два етапи: символи, що є числом, вводяться з клавіатури в рядкову змінну. Потім виконується перетворення з рядка в змінну відповідного типу. Перетворення можна виконати або за допомогою спеціального класу Convert, визначеного в просторі імен System, або за допомогою методу Parse, наявного в кожному стандартному арифметичному класі. У лістингу 3.10 використовуються обидва способи.

Лістінг 3.10. Методи введення

usingSystem;

namespace ConsoleApplicationl

{

class Classl

{

static void Main()

{

Console.WriteLine("Введите строку");

string s = Console.ReadLine( ); // 1

Console.WriteLine( "s = " + s );

Console.WriteLine("Введите символ" );

char с = (char)Console.Read( ); // 2

Console.ReadLine( ); // 3

Console.WriteLine( "c = " + с );

stringbuf; //рядок- буфер длявведеннячисел

Console.WriteLine( "Введите целое число" );

buf = Console.ReadLine( );

int i = Convert.ToInt32( buf ); // 4

Console.WriteLine( i );

Console.WriteLine( "Введите вещественное число" );

buf = Console.ReadLine( );

double x = Convert.ToDouble( buf ); // 5

Console.WriteLine( x );

Console.WriteLine( "Введите вещественное число" );

buf = Console.ReadLine( );

double y = double.Parse( buf ); // б

Console.WriteLine( y );

Console.WriteLine( "Введите вещественное число" );

buf = Console.ReadLine( );

decimal z = decimal.Parse( buf ); // 7

Console.WriteLine( z );

}

}

}