Установка точек останова (Add breakpoint)



 

Выполните щелчок мышью на вертикальной полоске серого цвета идущей по левому краю окна редактора кода. На ней появится кружок красного цвета (рис. 4). Это и есть точка останова. Она находится в начале выделенной красным цветом строки программы.

 

 

Рис. 4 Установка точки останова

 

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

 

- Пошаговое выполнение программы. Для этого следует нажать кнопку Step Over на панели управления или клавишу клавиатуры F8. Программа будет выполняться построчно. Функции пользователя будут выполняться целиком. Для построчного выполнения внутреннего кода функций пользователя следует нажать кнопку Trace Into на панели управления или клавишу клавиатуры F7. Тогда пошаговое выполнение будет включать и строки функций;

- Продолжение выполнения программы до конца. Для этого следует нажать кнопку запуска программы (зеленый треугольник) или клавишу F9 (до строки с курсором F4);

- Ввод дополнительных точек останова. После ввода нажимается кнопка запуска для достижения следующего останова или конца программы;

 

Во время прерывания программы в точке останова можно просматривать содержимое переменных и изменять их значение. Просмотр удобно выполнять, останавливая курсор мыши над соответствующей переменной в тексте программы. Изменить переменную можно в окне диалога, запускаемом через меню Run>Evaluate/Modify (Ctrl F7).

Эксперименты с меню Run и Project могут подсказать еще ряд приемов по отладке программы. Следует постепенно изучать эти приемы, тогда все будет легко и просто.

 

Минимальные правила редактирования текста программы

 

Правила совпадают с правилами для любого текстового редактора, например, Word. Особенно эффективно использование операций с текстовыми блоками: Сut – вырезать выделенный блок (Ctrl X), Copy – копировать выделенный блок (Ctrl C), Paste – вставить выделенный блок (Ctrl V). При этом поддерживаются комбинации клавиш Ctrl Ins – копировать, Shift Ins – вставить.

 

Прерывание выполнения программы

 

Иногда программа в каком-либо месте выполнения ведет себя непредсказуемо, например, требует введения дополнительных данных, не заканчивается, где надо или вовсе не заканчивается. Тогда ее можно прервать нажатием комбинации клавиш Ctrl Break или переключиться в окно исходного кода и нажать Ctrl F2.

 

Основы языка Си

 

Алфавит языка

 

Алфавит C++ включает:

- прописные и строчные латинские буквы, причем прописная и строчная буквы – это разные символы;

- знак подчеркивания;

- арабские цифры от 0 до 9;

- специальные знаки:

- " { } , | [ ] ( ) + - / % * . \ : ‘ ? < = > ! & # ~ ; ^

- пробельные символы: пробел, символы табуляции, символы перехода на новую строку.

- Из символов алфавита формируются лексемы языка:

- идентификаторы;

- ключевые (зарезервированные) слова;

- знаки операций;

- константы;

- разделители (специальные знаки, пробельные символы).

Границы лексем определяются другими лексемами, такими, как разделители или знаки операций.

 

Идентификаторы

 

Идентификатор – это имя программного объекта ( имя переменной, имя функции, метка). В идентификаторе могут использоваться латинские буквы, цифры и знак подчеркивания. Прописные и строчные буквы различаются, например, sysop, SySoP и SYSOP – три различных имени. Первым символом идентификатора может быть буква или знак подчеркивания, но не цифра. Пробелы внутри имен не допускаются.

Для улучшения читаемости программы следует давать объектам осмысленные имена. Существует соглашение о правилах создания имен, называемое венгерской нотацией (поскольку предложил ее сотрудник компании Microsoft венгр по национальности), по которому каждое слово, составляющее идентификатор, начинается с прописной буквы, а вначале ставится префикс, соответствующий типу величины, например, iMaxLength, lpfnSetFirstDialog. Другая традиция – разделять слова, составляющие имя, знаками подчеркивания: max_length, number_of_galosh.

Длина идентификатора по стандарту языка не ограничена, но компиляторы и компоновщики налагают на нее ограничения. При выборе идентификатора необходимо иметь в виду следующее:

- идентификатор не должен совпадать с ключевыми словами и именами используемых стандартных объектов языка;

- не рекомендуется начинать идентификаторы с символа подчеркивания, поскольку они могут совпасть с именами системных функций или переменных;

 

Ключевые слова

 

Ключевые слова – это зарезервированные идентификаторы, которые имеют специальное значение для компилятора. Их можно использовать только в том смысле, в котором они определены. Список ключевых слов C++ приведен в табл. I.1 Приложения I.

 

Знаки операций

 

Знак операции – это один или более символов, определяющих действие над операндами. Операндами называются объекты, на которые направлена операция. Например:

Здесь x и 5 операнды, + операция, а y – результат операции.

 Внутри знака операции пробелы не допускаются. Операции делятся на унарные (действия с одним операндом), бинарные (действия с двумя операндами) и тернарные(действия с тремя операндами). Один и тот же знак может интерпретироваться по-разному в зависимости от контекста. Все знаки операций за исключением [ ], ( ) и ? : представляют собой отдельные лексемы.

Знаки операций C++ описаны в разделе 2.10.

 

Константы

 

Константами называют неизменяемые величины. Константы бывают литеральными (литералами) и типизированными. Литеральные константы характеризуются только своей величиной и неадресуемы. Типизированные константы имеют адрес и величину. Литеральные константы различаются на целые, вещественные (с плавающей точкой), символьные и строковые константы. Компилятор, выделив литеральную константу в качестве лексемы, относит ее к одному из типов по ее внешнему виду.

Форматы констант, соответствующие каждому типу, приведены в табл. I.2 Приложения I. Просмотрите их прямо сейчас.

Если требуется сформировать отрицательную целую или вещественную константу, то перед константой ставится знак унарной операции изменения знака (-), например: -218, -022, -0хЗС, -4.8, -0.1е4.

Вещественная константа в экспоненциальном формате представляется в виде мантиссы и порядка. Мантисса записывается слева от знака экспоненты (Е или е), порядок – справа от знака. Значение константы определяется как произведение мантиссы и возведенного в указанную в порядке степень числа 10. Пробелы внутри числа не допускаются, а для отделения целой части от дробной используется не запятая, а точка.

Символьные константы, состоящие из одного символа, занимают в памяти один байт и имеют стандартный тип char. Двухсимвольные константы занимают два байта и имеют тип int, при этом первый символ размещается в байте с меньшим адресом (о типах данных рассказывается в разделе 2.7).

Последовательности символов, начинающиеся с обратной косой черты, называют управляющими, или escape-последовательностями (табл. I.3 Приложения I). Символ обратной косой черты используется для представления:

- кодов, не имеющих графического изображения (например, \а – звуковой сигнал, \n – перевод курсора в начало следующей строки);

- символов апострофа ( ' ), обратной косой черты ( \ ), знака вопроса (?) и кавычки (");

- любого символа с помощью его шестнадцатеричного или восьмеричного кода, например, \073, \0xF5. Числовое значение должно находиться в диапазоне от 0 до 255.

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

Управляющие последовательности могут использоваться и в строковых константах, называемых иначе строковыми литералами. Например, если внутри строки требуется записать кавычку, ее предваряют косой чертой, по которой компилятор отличает ее от кавычки, ограничивающей строку:

"Издательский дом \"Питер\""

Все строковые литералы рассматриваются компилятором как различные объекты. Две одинаковые строки будут занимать две различные области памяти.

Длинную строковую константу можно разместить на нескольких строках, используя в качестве знака переноса обратную косую черту, за которой следует перевод строки. Эти символы игнорируются компилятором, а следующая строка воспринимается как продолжение предыдущей. Например, строка

"Никто не доволен своей \

 внешностью, но все довольны \

 своим умом"

полностью эквивалентна строке

"Никто не доволен своей внешностью, но все довольны своим умом".

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

 Пустая символьная константа недопустима.

 

Комментарии

 

Комментарии помогают при чтении программ. Их наличие в программе можно отнести к правилам хорошего тона программистов. В них можно сформулировать алгоритм функции, указать назначение переменных и пояснить, что выполняется в данной части программы. Комментарии не влияют на размер выполняемой программы. Компилятор удаляет их до генерации кода.

Комментарий либо начинается с двух символов // и заканчивается символом перехода на новую строку, либо заключается между символами-скобками /* и */. Примеры:

 

/ *

Простейшая консольная программа C++Builder.

Выводит на экран "Hello World" и ждет, пока

пользователь не нажмет какую-нибудь клавишу.

*/

getch(); //Ожидание нажатия клавиши.

 

 Пару символов, которая ограничивает комментарии обоих видов, нельзя разбивать пробелом. Внутри комментария можно использовать любые допустимые на данном компьютере символы, а не только символы из алфавита языка C++, поскольку компилятор комментарии игнорирует. Вложенные комментарии стандартом не допускаются, хотя в некоторых компиляторах разрешены.

Рекомендуется использовать для пояснений //, а скобки /* */ применять для временного исключения блоков кода при отладке.

 

2.7 Типы данных C++

 

Понятие типа данных

 

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

- внутреннее представление данных в памяти компьютера;

- множество значений, которые могут принимать величины этого типа;

- операции и функции, которые можно применять к величинам этого типа.

Все типы языка C++ можно разделить на основные и составные. В языке C++ определено шесть основных типов данных для представления целых, вещественных, символьных и логических величин. На основе этих типов программист может вводить описание составных типов. К ним относятся массивы, перечисления, функции, структуры, ссылки, указатели, объединения и классы.

 

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

 

Основные (стандартные) типы данных часто называют арифметическими, поскольку их можно использовать в арифметических операциях. Для описания основных типов определены следующие ключевые слова:

int (целый);

char (символьный);

wchar_t (расширенный символьный);

bool (логический);

float (вещественный);

double (вещественный с двойной точностью).

Первые четыре типа называют целочисленными (целыми), последние два – типами с плавающей точкой. Код, который формирует компилятор для обработки целых величин, отличается от кода для величин с плавающей точкой.

Существует четыре спецификатора типа, уточняющих внутреннее представление и диапазон значений стандартных типов:

short (короткий);

long (длинный);

signed (знаковый);

unsigned (беззнаковый).

 

Целый тип (int).

 

Размер типа int не определяется стандартом, а зависит от компьютера и компилятора. Для 16-разрядного процессора под величины этого типа отводится 2 байта, для 32-разрядного – 4 байта.

Для точного определения количества байт следует написать тестовую программу и включить в нее операцию:

 

s=sizeof(int);

 

Значение переменной s будет равно количеству байт занимаемому объектами указанного в скобках типа. Для определения диапазона значений целого типа данных следует воспользоваться формулой:

 для знаковых типов (int – знаковый тип) и

 для беззнаковых (unsigned) типов.

Спецификатор short перед именем типа указывает компилятору, что под число требуется отвести 2 байта независимо от разрядности процессора. Спецификатор long означает, что целая величина будет занимать 4 байта. Таким образом, на 16-разрядном компьютере эквиваленты int и short int, а на 32-разрядном – int и long int.

Внутреннее представление величины целого типа – целое число в двоичном коде. При использовании спецификатора signed старший бит числа интерпретируется как знаковый (0 – положительное число, 1 – отрицательное). Спецификатор unsigned позволяет представлять только положительные числа, поскольку старший разряд рассматривается как часть кода числа. Таким образом, диапазон значений типа int зависит от спецификаторов.

По умолчанию все целочисленные типы считаются знаковыми, то есть спецификатор signed можно опускать.

Константам, встречающимся в программе, приписывается тот или иной тип в соответствии с их видом. Если этот тип по каким-либо причинам не устраивает программиста, он может явно указать требуемый тип с помощью суффиксов L, l (long) и U, u (unsigned). Например, константа 32L будет иметь тип long и занимать 4 байта. Можно использовать суффиксы L и U одновременно, например, Ox22UL или 05Lu.

Типы short int, long int, signed int и unsigned int можно сокращать до short, long, signed и unsigned соответственно.

 

Символьный тип (char).

 

Под величину символьного типа отводится количество байт, достаточное для размещения десятичного кода любого символа из набора символов для данного компьютера, что и обусловило название типа. Как правило, это 1 байт. Тип char, как и другие целые типы, может быть со знаком или без знака. В величинах со знаком можно хранить значения в диапазоне от -128 до 127. При использовании спецификатора unsigned значения могут находиться в пределах от 0 до 255. Этого достаточно для хранения любого символа из 256-символьного набора ASCII. Величины типа char применяются также для хранения целых чисел, не превышающих границы указанных диапазонов.

 

Логический тип (bool).

 

Величины логического типа могут принимать только значения true и false, являющиеся зарезервированными словами. Внутренняя форма представления значения false – 0 (нуль). Любое другое значение интерпретируется как true. При преобразовании к целому типу true имеет значение 1.

 


Дата добавления: 2018-11-24; просмотров: 193; Мы поможем в написании вашей работы!

Поделиться с друзьями:






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