Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
slaid_3_portal_2011.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
553.98 Кб
Скачать
  • ініціалізуйте всі об'єкти виразу до моменту його виконання;

  • не використовуйте R-вираз в операторі присвоювання;

  • використовуйте дужки для явного зазначення порядку виконання операцій в складних виразах;

  • використовуйте пробіли в позначенні виразу, наприклад, по одному пробілу з обох боків від позначень операцій для кращого розуміння виразів;

  • розміщуйте довгі описи виразів на кількох рядках, розбиваючи їх на прості підвирази для кращого розуміння виразів.

  • Суворо типізована мова

Мова програмування є суворо типізованою (restricted type language) , якщо виконуються такі умови:

- кожний об'єкт у програмі пов’язується з багатьма значеннями одного типу через використання явного опису типу (виняток становить вираз);

- тип об'єкта є синтаксичною властивістю і, тому його можна визначити, не виконуючи програми;

- перетворення типу здійснюється шляхом перетворення значення одного типу в іншій, і це перетворення зазначається у програмі явно;

- неявні перетворення шляхом інтерпретації подання значення одного типу значенням іншого типу заборонені.

Приклад на мові С

int nV;

char cV;

nV = 1;

cV = ‘A’;

nV = nV + cV; - успішно відкомпільований код

Приклад на мові Pascal

var

nV : integer;

cV : char;

begin|

nV : = 1;

cV : = 'A';

nV : = nV + cV; - код не компілюється

Зведення типів

Зведення типів (coercion casting types) – це перетворення значень одного типу до значень іншого типу.

Зведення може виконуватись як на наперед визначених, так і на визначуваних типах.

Розрізняють явне і неявне зведення типів. У суворо типізованих мовах дозволене тільки явне зведення типів. Якщо у суворо типізованій мові, потрібне неявне зведення типів, то для цього використовуються механізми уникнення суворої типізації.

Явне зведення типів

Явне зведення типів (explicit casting types) може використовуватися як у суворо, так і не суворо типізованих мовах.

Для явного зведення типів використовується кваліфікація виразу індикатором типу, наприклад, таким чином T(E), де Т - це індикатор типу, до якого необхідно звести значення; Е - вираз, що позначає значення, яке необхідно привести до типу Т. Наприклад, char(65) або int(‘A’), тут Т це char, int, а E це 65, ‘A’.

у мові Pascal:

var

nA : integer;

cB : char;

begin

cB : = ‘a’;

nA : = integer(cB);

end.

у мові С:

{

int nB;

float fA;

fA = 267.7;

nB = (int)fA;

}

Неявне зведення типів

Неявне зведення типів (implicit casting types) – це автоматичне зведення значень одного типу в значення іншого типу за правилами, передбаченими реалізацією мови.

Ці правила необхідно знати навіть в тому разі, коли програміст не використовує неявних зведень, оскільки вони можуть застосовуватися в тих конструкціях, які програміст бере готовими. Тому неявне зведення – це мовно-залежний механізм, застосування якого різко знижує мобільність програм.

У мові Pascal:

var

fA : real;

nB| : integer;

begin

nB : = 3248;

fA : = nB;

end.

У мові С:

{

float fA;

int nB;

nB = 253;

fA = nB;

}

Приклади правил неявних зведень в мові Сі

Вид типу

До типу

Дії

Char

short

доповнення знаком;

Char

long

доповнення знаком;

Char

unsigned char

збереження побітового уявлення;

старший біт втрачає функцію знакового біта

long

float

представляється як float;

можлива деяка втрата точності

long

double

представляється як double;

можлива деяка втрата точності

unsigned char

char

збереження побітового уявлення;

старший біт стає знаком

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]