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

2.3. Рекомендації по програмуванню

Поняття, введені в цьому розділі, є базою для всього подальшого матеріалу. На перший погляд, вивчення видів лексем може здаватися зайвим (нехай їх розрізняє компілятор!), проте це абсолютно не так. При розробці програми необхідно розуміти, з яких елементів мови вона складається. Це допомагає і при пошуку помилок, і при зверненні до довідкової системи, і при вивченні нових версій мови. Більш того, вивчення будь-якої нової мови рекомендується починати саме з лексем, які в ній підтримуються.

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

Нові мови і засоби програмування з'являються безперервно, тому програміст вимушений вчитися все життя і повинен уміти:

  • грамотно поставити завдання;

  • вибрати відповідні мовні засоби;

  • вибрати найбільш відповідні для представлення даних структури;

  • розробити ефективний алгоритм;

  • написати і документувати надійну і таку, що легко модифікується програму;

  • забезпечити її вичерпне тестування.

Розділ 3. Змінні, іменовані константи, операції і вирази

3.1. Змінні і іменовані константи

Змінна - це іменована область пам'яті, призначена для зберігання даних певного типу. Під час виконання програми значення змінної можна змінювати. Всі змінні, що використовуються в програмі, мають бути описані явним чином. При описі змінною задаються ім'я і тип. Ім'я змінної служить для звернення до області пам'яті, в якій зберігається значення змінної. Ім'я повинне відповідати правилам іменування ідентифікаторів С#, відображати сенс величини, що зберігається, і бути легко розпізнаваним. Тип змінної вибирається, виходячи з діапазону і необхідної точності представлення даних. Наприклад, немає необхідності заводити змінну дійсного типу для зберігання величини, яка може набувати тільки цілих значень, - хоч би тому, що цілочисельні операції виконуються набагато швидше.

При оголошенні можна привласнити змінній деяке початкове значення, тобто ініціалізувати її, наприклад:

int а, b =1;

float x = 0.1, у = 0.1f;

Тут описані:

  1. змінна а типу int, початкове значення якої не привласнюється;

  2. змінна b типу int, її початкове значення дорівнює 1;

  3. змінні х і у типу float, яким привласнені однакові початкові значення 0.1. Різниця між ними полягає в тому, що для ініціалізації змінної х спочатку формується константа типу double (це тип, що привласнюється за умовчанням літералам з дробовою частиною), а потім вона перетвориться до типу float; змінній у значення 0.1 привласнюється без проміжного перетворення.

При ініціалізації можна використовувати не тільки константу, але і вираз - головне, щоб на момент опису він був обчислюваним, наприклад:

int b = 1, а = 100;

int х = b * а + 25;

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

Втім, іноді цю роботу робить за програміста компілятор, це залежить від місцезнаходження опису змінною. Як вже наголошувалося, програма на C# складається з класів, усередині яких описують методи і дані. Змінні, описані безпосередньо усередині класу, називаються полями класу. Їм автоматично привласнюється так зване “значення по умовчанню”- як правило, це 0 відповідного типу.

Змінні, описані усередині методу класу, називаються локальними змінними. Їх ініціалізація покладається на програміста. У даному розділі розглядаються тільки локальні змінні простих вбудованих типів даних.

Так звана зона дії змінної, тобто область програми, де можна використовувати змінну, починається в точці її опису і триває до кінця блоку, усередині якого вона описана. Блок - це код, взятий у фігурні дужки. Основне призначення блоку - угрупування операторів. В С# будь-яка змінна описана усередині якого-небудь блоку: класу, методу або блоку усередині методу.

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

class X // початок опису класу X

{

int А; // поле А класу X

int В; // поле В класу X

void Y( ) // метод Y класу X

{

int С; // локальна змінна С, зона дії - метод Y

int А; // локальна змінна А (НЕ конфліктує з полем А)

{// ============ вкладений блок 1 ============

int D; // локальна змінна D, зона дії - блок

//int А; Неприпустимо! Помилка компіляції

С = В; // привласнення змінній С поля В

С = this.A; //привласнення змінній С поля А

}// ============ кінецьблоку1 ===============

{ // ============ вкладений блок 2 ============

int D; // локальна змінна D, зона дії - блок

} // ============ кінецьблоку2 ===============

} // кінець опису метода Y класу X

} //кінець опису класу X

У лістингу 3.1 приведений приклад програми, в якій описуються і виводяться на екран локальні змінні.

Лістинг 3.1. Опис змінних

using System;

namespace ConsoleApplicationl

{

class Classl

{

static void Main( )

{

int i = 3;

double у = 4.12;

decimal d = 600m;

string s = "Вася";

Console.Write( "i = " ); Console.WriteLine( i );

Console.Write( "y = " ); Console.WriteLine( у );

Console.Write( "d = " ); Console.WriteLine( d );

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

}

}

}

У розглянутому прикладі використовується метод Write. Він робить те ж саме, що і Writeline, але не переводить рядок.

Можна заборонити змінювати значення змінної, задавши при її описі ключове слово const, наприклад:

const int b = 1;

const float x = 0.1, у = 0.1f; // const розповсюджується на обидві змінні

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

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

Іменовані константи повинні обов'язково ініціалізуватися при описі. При ініціалізації можна використовувати не тільки константу, але і вираз - головне, щоб він був обчислюваним на етапі компіляції, наприклад:

const int b = 1, а = 100;

const int х = b * а + 25;