Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции за I семестр конспект Гуревича для C++ B....doc
Скачиваний:
11
Добавлен:
21.11.2018
Размер:
1.3 Mб
Скачать

1.11. Ошибки

Ошибки, допускаемые при написании программ, разделяют на синтаксические и логические.

Синтаксические ошибки - нарушение формальных правил написания програм­мы на конкретном языке, обнаруживаются на этапе трансляции и могут быть легко исправлены.

Программа, содержащая синтаксическую ошибку, не может быть запущена. При попытке ее компиляции выдается сообщение, обычно содержащее указание того места в тексте, "дочитав" до которого, компилятор заметил ошибку; сама ошибка может быть как в этом месте, так и выше него (часто - в предыдущей строке).

Логические ошибки делят на ошибки алгоритма и семантические ошибки - могут быть найдены и исправлены только разработчиком программы.

Причина ошибки алгоритма - несоответствие построенного алгоритма ходу получения конечного результата сформулированной задачи.

Причина семантической ошибки - неправильное понимание смысла (сема­нти­ки) операторов языка.

Программа, содержащая логическую ошибку, может быть запущена. Однако она либо выдает неверный результат, либо даже завершается "аварийно" из-за попытки выполнить недопустимую операцию (например, деление на 0) - в таком случае выдается сообщение об ошибке времени выполнения. Поиск места в программе, содержащего логическую ошибку, является непростой задачей; он носит название отладки программы.

2. Переменные и константы. Типы данных

Для программиста на языке Си память компьютера представляется как набор ячеек, каждая из которых называется переменной, или константой, в зависимости от того, меняется ее значение в процессе работы или нет. Каждая переменная имеет имя (идентификатор, ID). Константа может иметь или не иметь имени.

Род информации, которую способна хранить ячейка, определяется ее типом.

2.1. Основные типы данных

Данные в языке Си разделяются на две категории: простые (скалярные), будем их называть базовыми, и сложные (составные) типы данных.

Тип данных определяет:

  • внутреннее представление данных в оперативной памяти;

  • совокупность значений (диапазон), которые могут принимать данные этого типа;

  • набор операций, которые допустимы над такими данными.

Основные типы базовых данных: целый – int, вещественный с одинарной точностью – float и символьный – char.

В свою очередь, данные целого типа могут быть короткими – short, а также длинными – long . Кроме того, при любой длине данные целых и символьного типов могут быть знаковыми - signed либо беззнаковыми – unsigned (по умолчанию они считаются знаковыми, поэтому слово signed необязательно и обычно опускается). Вещественные же данные могут иметь удвоенную точность – double.

Сложные типы данных – массивы, структуры – struct, объединения или смеси – union.

Данные целых и вещественных типов находятся в определенных диапазонах, т.к. занимают разный объем оперативной памяти. Вещественные типы при этом обладают еще конечной точностью хранения данных, т.е. верно хранят лишь первые несколько цифр числа; для хранения остальных (чье количество бывает даже бесконечным - например, у числа π , или у числа ⅓ ) не хватает места. В Табл. 1. приведены свойства различных типов для системы программирования C++ Builder. В других системах программирования, поддерживающих язык Си, может отличаться размер того или иного конкретного типа, например int, и соответственно будет отличаться его допустимый диапазон значений (например, тип long int может превосходить по размеру тип int). Однако последовательность возрастания размеров и точности для каждой группы типов всегда одинакова:

char ≤ short int ≤ int ≤ long int ≤ long long int

float ≤ double ≤ long double

Таблица 1.

Тип данных

Размер (байт)

Диапазон значений

Точность, десятичных знаков

сhar

1

-128 … 127

unsigned сhar

1

0 … 255

short int

2

-215… 215–1 (-32768…32767)

int

4

-231…231–1 (-2147483648…2147483647)

long int

4

-231…231–1 (-2147483648…2147483647)

long long int

8

–263... 263–1 (примерно )

unsigned short int

2

0…216–1 (0…65535)

unsigned int

4

0…232–1 (0…4294967295)

unsigned long int

4

0…232–1 (0…4294967295)

float

4

±3,14*10-38…±3,14*1038

7-8

double

8

±1,7 *10-308… ±1,7 *10308

15-16

long double

10

± 1,1 * 10-4932… ± 1,1 * 104932

19-20

Заметим, что для целочисленных типов данных, чье название содержит слово int и еще какое-либо слово перед ним, слово int можно не писать, и обычно оно опускается (в Табл.1 необязательное int указано мелким шрифтом).