Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Перерахуйте і опишіть літерали мови C#.

Поиск

Літералами, або константами, називають незмінні величини. У C# є логічні, цілі, дійсні, символьні і строкові константи, а також константа null. Компілятор, виділивши константу як лексему, відносить її до одного з типів даних за її зовнішнім виглядом. Програміст може задати тип константи і самостійно.

Логічні літерали: true і false.

Цілі літерали можуть бути представлені або в десятковій, або в шістнадцятковій системі числення, а дійсні — лише в десятковій системі, але в двох формах: з фіксованою крапкою і з порядком.

Константа null є значенням, що задається за замовчанням для величин посилкових типів.

В C# литералами называются постоянные значения, представленные в удобной для восприятия форме. Например, число 100 является литералом

В C# литералы могут быть любого простого типа. Как пояснялось ранее, символьные литералы заключаются в одинарные кавычки. Например, 'а' и '%' являются символьными литералами.

Целочисленные литералы указываются в виде чисел без дробной части. Например, 10 и -100 — это целочисленные литералы. Для обозначения литералов с плавающей точкой требуется указывать десятичную точку и дробную часть числа. Например, 11.123 — это литерал с плавающей точкой, допускается также использовать экспоненциальное представление.

У литералов должен быть также конкретный тип, поскольку C# является строго типизированным языком. Если вас не устраивает используемый по умолчанию тип литерала, вы можете явно указать другой его тип с помощью суффикса.

Так, для указания типа long к литералу присоединяется суффикс l или L. Например, 12 — это литерал типа int, a 12L — литерал типа long. Для указания целочисленного типа без знака к литералу присоединяется суффикс u или U. Следовательно, 100 — это литерал типа int, a 100U — литерал типа uint. А для указания длинного целочисленного типа без знака к литералу присоединяется суффикс ul или UL. Например, 984375UL — это литерал типа ulong.

И наконец, для указания типа decimal к литералу присоединяется суффикс m или М. Например, 9.95М — это десятичный литерал типа decimal.

Шестнадцатеричные литералы

Шестнадцатеричные литералы должны начинаться с символов 0x, т.е. нуля и последующей латинской буквы "икс".

Перетворення з рядкового типу в арифметичний.

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

Класи бібліотеки FCL надають два способи явного виконання таких перетворень:

· Метод Parse;

· Методи класу Convert.

Метод Parse

Всі скалярні типи (арифметичний, логічний, символьний) мають статичний метод Parse, аргументом якого є рядок, а результатом об'єкт відповідного типу.

static void InputVars()

{

string strInput;

Console.WriteLine(INPUT_BYTE);

strInput = Console.ReadLine();

byte b1;

b1 = byte.Parse(strInput);

}

Перетворення з арифметичного типу у тип string

Перетворення в тип string завжди визначені, оскільки всі типи є нащадками базового класу object і успадковують метод ToString().

Для всіх підтипів арифметичного типу метод ToString() повертає рядок, який задає відповідне значення арифметичного типа. Метод ToString завжди потрібно викликати явно. Його можна опускати при виконанні операції конкатенації. Якщо один з операндів операції «+» є рядком, то операція сприймається як конкатенація рядків і другий операнд неявно перетвориться до цього типу. Ось відповідний приклад:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace Lab2_3

{

class Program

{

static void Main(string[] args)

{

string name;

int age;

double salary;

name = "Василь Іванов";

age = 20;

salary = 2700;

string s = "Ім'я: " + name +

". Вік: " + age.ToString() +

". Зарплата: " + salary;

Console.WriteLine(s);

Console.ReadKey();

}

}

}

Клас Convert і його методи

Для перетворень усередині арифметичного типа можна використовувати кастинг - приведення типа. Для перетворень строкового типа в скалярний тип можна використовувати метод Parse, а у зворотний бік – метод ToString.

У всіх ситуаціях, коли потрібно виконати перетворення з одного базового вбудованого типа в інший базовий тип, можна використовувати методи класу Convert бібліотеки FCL, вбудованого в простір імен System, - універсального класу, статичні методи якого спеціально спроектовані для виконання перетворень.

Серед інших методів класу Convert є загальний статичний метод ChangeType, що дозволяє перетворення об'єкту до деякого заданого типа. Існує також можливість перетворення у системний тип DateTime, який хоча і не є базисним типом мови C#, але допустимий в програмах, як і будь-який інший системний тип.

Методи класу Convert підтримують загальний спосіб виконання перетворень між типами. Клас Convert містить 15 статичних методів вигляду To<Type> (ToBoolean(),.ToUInt64()), де Type може набувати значень від Boolean до UInt64 для всіх вбудованих типів. Єдиним виключенням є тип object, – методу ToObject немає із зрозумілих причин, оскільки для всіх типів існує неявне перетворення до типа object.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace Lab1_2

{

class Program

{

static void Main(string[] args)

{

string s;

byte b;

int n;

double x;

bool flag;

char sym;

DateTime dt;

sym = '7';

s = Convert.ToString(sym);

x = Convert.ToDouble(s);

n = Convert.ToInt32(x);

b = Convert.ToByte(n);

flag = Convert.ToBoolean(b);

x = Convert.ToDouble(flag);

s = Convert.ToString(flag);

s = "300";

n = Convert.ToInt32(s);

s = "14.09";

s = "14.09.2008";

dt = Convert.ToDateTime(s);

 

}

}

}

Система типів C#.

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

Тип даних однозначно визначає:

· внутрішнє представлення даних, а отже і множину їх можливих значень;

· допустимі дії над даними (операції і функції).

Наприклад, цілі і дійсні числа, навіть якщо вони займають однаковий об'єм пам'яті, мають абсолютно різні діапазони можливих значень.

Пам'ять, в якій зберігаються дані під час виконання програми, ділиться на дві області: стек (stack) і динамічна область, або хіп (heap), частіше називається купою. Стек використовується для зберігання величин, пам'ять під які виділяє компілятор, а в динамічній області пам'ять резервується і звільняється під час виконання програми за допомогою спеціальних команд.

Всі типи можна розділити на прості (які не мають внутрішньої структури) і структуровані (складаються з елементів інших типів). За своїм "творцем" типи можна розділити на вбудовані (стандартні) і типи, які визначаються програмістом. За способом зберігання значень типи діляться на типи-значення (статичні), і посилкові (динамічні).

Вбудовані типи

Вбудовані типи не вимагають попереднього визначення. Для кожного типу існує ключове слово, яке використовується при описі змінних і констант. Вони однозначно відповідають стандартним класам бібліотеки.NET, яка визначена в просторі імен System.

Таблиця 2.2. Вбудовані типи C#
Назва Ключове слово Тип.NET Діапазон значень Опис Розмір, бітів
Логічний тип bool Boolean true, false    
Цілі типи sbyte SByte від –128 до 127 Зі знаком  
byte Byte від 0 до 255 Без знака  
short Int16 від –32768 до 32767 Зі знаком  
ushort UInt16 від 0 до 65535 Без знака  
int Int32 від –2 × 109 до 2 × 109 Зі знаком  
uint UInt32 від 0 до 4 × 109 Без знака  
long Int64 від –9 × 1018 до 9 × 1018 Зі знаком  
ulong UInt64 від 0 до 18 × 1018 Без знака  
Символьний тип char Char від U+0000 до U+ffff Unicode-символ  
Дійсні числа float Single від 1.5 × 10-45 до 3.4 × 1038 7 цифр  
double Double від 5.0 × 10-324 до 1.7 × 10308 15–16 цифр  
Фінансовий тип decimal Decimal від 1.0 × 10-28 до 7.9 × 1028 28–29 цифр  
Строковий тип string String Довжина обмежена об'ємом доступної пам'яті Рядок із Unicode-символів  
Тип object object Object Можна зберігати все, що завгодно Загальний предок  

Дійсні типи і фінансовий тип є знаковими. Для них в стовпчику "діапазон значень" наведені абсолютні величини допустимих значень.

Дійсні типи, або типи даних, з плаваючою крапкою зберігаються в пам'яті комп'ютера інакше, ніж цілі. Внутрішнє представлення дійсного числа складається з двох частин - мантиси і порядку, причому кожна частина має знак. Довжина мантиси визначає точність числа, а довжина порядку - його діапазон. Тип decimal призначений для грошових обчислень, в яких критичні помилки округлення. Величини типа decimal дозволяють зберігати 28–29 десяткових розрядів. Тип decimal не відноситься до дійсних типів, у них різне внутрішнє представлення.

Будь-який вбудований тип C# відповідає стандартному класу бібліотеки.NET, визначеному в просторі імен System.


Прикладами типів в С# є:

Типи-Значення (value types ):

– прості (базові): int і; float х;

– перечислення: enum State { Off, On }

– структури: struct Point {int х,у;}

Посилкові типи (reference types):

– кореневі: object

– рядкові: string

– класи: class Foo: Bar, IFoo {...}

– інтерфейси: interface IFoo: IBar {...}

– масиви: string[] = new string[10];

– делегати: delegate void Empty();


 

Тернарний оператор.

<логiчний вираз>? <вираз1>: <вираз2>

Спочатку обчислюється логiчний вираз. Якщо вiн iстинний, то обчислюється вираз1, в iншому випадку – обчислюється вираз2.

 

Присваивать переменной результат выполнения оператора? совсем не обязательно. Например, значение, которое дает оператор?, можно использовать в качестве аргумента при вызове метода. А если все выражения в операторе? относятся к типу bool, то такой оператор может заменить собой условное выражение в цикле или операторе if.

static void Main(string[] args)

{

int a;

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

a = Convert.ToInt32(Console.ReadLine());

Console.WriteLine(a % 2 == 0? "Число чётное": "Число нечётное");

Console.ReadKey();

}

«?:» также можно использовать для присваивания значений. Пример программы, которая находит большее число из двух вводимых:

static void Main(string[] args)

{

int a, b, max;

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

a = Convert.ToInt32(Console.ReadLine());

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

b = Convert.ToInt32(Console.ReadLine());

max = a > b? a: b;

}

Цикл з передумовою while.

while (умова)

{список операторів}

Семантика оператора while:

Оператори в тілі циклу виконуються до тип пір, поки умова має значення true.

Умова в операторі while перевіряється до входження в цикл. Це гарантує, що цикл не буде виконуватися, якщо умова зразу має значення false.

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

Назвемо початкове значення аргументу Xn, кінцеве значення аргументу — Xk, крок зміни аргументу — dX і параметр t. Всі величини дійсні числа (double). Програма повинна виводити таблицю, що складається з двох стовпців: значень аргументу і відповідних ним значень функції.

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

double Xn = -2, Xk = 12, dX = 2, t = 2, y;

Console.WriteLine("| x | y |"); // заголовок таблиці

double x = Xn;

while (x <= Xk)

{

y = t;

if (x >= 0 && x < 10) y = t * x;

if (x >= 10) y = 2 * t;

Console.WriteLine("| {0,6} | {1,6} |", x, y);

x += dX;

}

Console.ReadKey();

}

}

}



Поделиться:


Последнее изменение этой страницы: 2016-09-13; просмотров: 356; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.105.85 (0.009 с.)