Подводные камни

Lazarus IDE: Основы программирования в Windows Lazarus IDE: Основы программирования в Windows

Несмотря на то, что всё потихоньку уходит в сеть, программирование для настольных компьютеров остаётся востребованным. И будет таковым ещё долго. Ну а самая распространённая операционная система для настольных компьютеров – это по-прежнему Windows. Поэтому любой программист, даже если он собирается стать веб-разработчиком, должен знать хотя бы основы создания программ для Windows. Подробнее...

Как я уже говорил, при объявлении переменных в Паскале нужно обязательно указывать их типы. В некоторых других языках, таких как Visual Basic Script, JavaScript и т.п. это делать не обязательно. Но мы тренируемся на Паскале, поэтому вам нужно будет научиться заранее думать, где вы будете использовать объявленную переменную, чтобы выбрать для неё правильный тип.

Что же будет, если вы ошибётесь с выбором типа данных?

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

Однако есть более неприятные ситуации. Допустим, у нас есть такая программа:

Листинг 14.2. Проблемы с типами данных.
program vc;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils;
 
var x : byte;
    y : integer;

begin
  x := 0;
  y := 300;
  Writeln('x = ', x, ', y = ', y);
  x := x + y;
  Writeln('x + y = ', x);
  Readln;
end.

Как вы думаете, сколько будет 0+300? Правильно, 300. Однако это ваша точка зрения. А вот с точки зрения данной программы, 0 + 300 = 44. Не верите? Посмотрите рис. 14.1.


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

Рис. 14.1. Результат работы программы.

Почему так получилось? Давайте разберёмся.

Итак, переменная x у нас имеет тип Byte. Как вы уже знаете, переменная данного типа может принимать значения ТОЛЬКО в диапазоне 0…255. Поэтому число 300 «впихнуть» в эту переменную никак не получится!

Однако компилятор не выдаёт ошибки! Почему? Да потому что компилятор не знает, чего хочет программист. Может быть программист хочет, чтобы результат был именно 44, а не 300.

Но откуда взялось число 44?

А вот откуда.

Сначала переменная х хранила 0. Мы попытались прибавить к этому значению 300. Но переменная х не может хранить число, значение которого более 255. Поэтому к 0 прибавляется 255, а затем разность между 300 и 255.

Однако 300 – 255 = 45. Почему же тогда результат равен 44? А потому что значения начинаются с нуля. То есть 45-е число в диапазоне 0…255 это и будет 44. Если не верите, то можете посчитать.

Конечно, это упрощённые объяснения для начинающих. Однако пока этого достаточно. Если хотите знать больше, то изучайте информатику и системы счисления. Главное, что вы должны усвоить из этого урока – надо быть внимательным при выборе типов данных, и помнить о том, что результат какой-либо операции может не поместиться в тип данных, который имеет переменная, в которую записывается этот результат. А это, в свою очередь, может привести (и обязательно приведёт) к ошибкам в программе. К тому же такие ошибки довольно трудно искать.

Разумеется, это не все проблемы, с которыми может столкнуться программист. Это только начало проблем)))

Домашнее задание:

Подумайте, какие ещё проблемы может вызвать неправильный выбор типа данных. Проверьте ваши соображения на практике.


Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su

Яндекс.Метрика