КаталогИндекс раздела
НазадОглавлениеВперед


Лабораторная работа ╧1
Работа в системе программирования Borland С

1. Цель работы

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

    В ходе этой лабораторной работы студенту предлагается выполнить ряд действий, которые должны познакомить его с использованием системы программирования для подготовки, компиляции, выполнения и отладки программ.

    Выполнение этой работы не требует отчета. В случае недобросовестного отношения и плохого усвоения студентом материала этой работы, это неизбежно проявится при выполнении следующих работ.

2. Подготовка каталога и запуск системы программирования

    Система программирования Borland C++ состоит из большого числа файлов, хранение которых структурировано по каталогам. В то время, когда готовятся эти материалы, корневой каталог системы программирования в нашей лаборатории:

    S:\DOS\BC

    Остальные каталоги являются подкаталогами в этом каталоге. Основные из них:

S:\DOS\BC\BIN - в этом подкаталоге размещены программные модули системы программирования, подсказка и т.д.
S:\DOS\BC\INCLUDE - в этом подкаталоге размещены файлы-заголовки с описаниями стандартных функций системы программирования.
S:\DOS\BC\LIB - в этом подкаталоге размещены у библиотеки стандартных функций системы программирования.

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

    Для того, чтобы иметь возможность создавать и сохранять собственные параметры среды, Вы должны выполнить такие действия:

    После выполнения этих действий для запуска системы программирования Вы можете запускать на выполнение файл bc.bat. Те настройки параметров среды, которые Вы сделаете, выполняя следующий пункт, сохранятся в вашем рабочему каталоге и будут восстанавливаться при следующих запусках системы программирования.

3. Настройка рабочей среды

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

    3.1. Установка каталогов

    Выберите в Главном Меню пункт Options, в том меню, которое выплывет затем, выберите пункт Directories... (далее последовательность выборов из меню мы представляем в виде: Главное Меню -> Options -> Directories...) .

    В том окне, которое затем появится на экране, установите такие значения в полях:

Поле Значение
Include Directories S:\DOS\BC\INCLUDE
Library Directories S:\DOS\BC\LIB
Output Directory <пусто>
Source Directory <пусто>

    После установки значений "нажмите" кнопку OK.

    Установленные значения будут задавать поиск файлов-заголовков и библиотек в стандартных каталогах системы программирования. Те же программные модули, которые будете создавать Вы - текстовые, объектные и загрузочные - будут размещаться в Вашем текущем каталоге.

    3.2. Параметры компиляции

    Для настройки параметров компиляции выполните такие действия:

    1). Выберите: Главное Меню -> Options -> Compiler -> Code generation...

    В том окне, которое затем появится на экране, установите такие значения в полях:

Поле Значение
Model Small
Options <пусто>
Assume SS equal DS Default for memory model
Defines <пусто>

    После установки значений "нажмите" кнопку OK.

    2). Выберите: Главное Меню - > Options - > Compiler -> Advanced code generation...

    В том окне, которое затем появится на экране, установите такие значения в полях:

Поле Значение
Floating Point 8087
Instruction Set 8088/8086
Options Generate underbase
Debug info in OBJ's
Fast floating point

    После установки значений "нажмите" кнопку OK.

    3). Выберите: Главное Меню -> Options -> Compiler -> Entry/Exit Code...

    В том окне, которое затем появится на экране, установите такие значения в полях:

Поле Значение
Prolog/epilog Code Generation DOS standard
Calling Convention C
Stack Options Standard stack frame
Test stack overflow

    После установки значений "нажмите" кнопку OK. 4). Выберите: Главное Меню -> Options -> Compiler -> Source...

    В том окне, которое затем появится на экране, установите такие значения в полях:

Поле Значение
Keywords Borland C++
Source Options Nested comments
Identifier Length 32

    После установки значений "нажмите" кнопку OK.

    3.3. Параметры программы Make

    Выберите: Главное Меню -> Options -> Make ...

    В том окне, которое затем появится на экране, установите такие значения в полях:

Поле Значение
Break Make On Errors
After Compiler Run Linker
Generate Import Library No

    После установки значений "нажмите" кнопку OK.

    3.4. Параметры компоновщика

    1). Выберите: Главное Меню -> Options -> Linker -> Settings ...

    В том окне, которое затем появится на экране, установите такие значения в полях:

Поле Значение
Map File Off
Output Standard DOS EXE
Options Default libraries
"No stack" warning
Case-sensitive link

    После установки значений "нажмите" кнопку OK.

    2). Выберите: Главное Меню -> Options -> Linker -> Libraries ...

    В том окне, которое затем появится на экране, установите такие значения в полях:

Поле Значение
Libraries <пусто>
Container Class Library None
ObjectWindows Library None
Standard Run-Time Libraries Static

    После установки значений "нажмите" кнопку OK.

    3.5. Параметры отладчика

    Выберите: Главное Меню -> Options - > Debugger...

    В том окне, которое затем появится на экране, установите такие значения в полях:

Поле Значение
Source Debugging On
Display Swapping Smart
Program Heap Size 64 Kbytes

    После установки значений "нажмите" кнопку OK.

    3.6. Сохранение параметров среды

    Выберите Главное Меню -> Options -> Save...

    В том окне, которое затем появится на экране, "нажмите" кнопку OK.

4. Пользование подсказкой

    Система программирования Borland C++ имеет мощную систему онлайновой подсказки, которая очень полезна, особенно- для начинающего программиста.

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

    Первая возможность обращения к подсказке - через Главное Меню -> Help. В том меню, которое выплывает затем, самыми полезными являются пункты Contents и Index.

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

    Выбор любого из этих разделов приводит к появлению списка подразделов и так далее.

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

    Другая возможность обращения к подсказке - через клавиши F1 и комбинацию клавиш Ctrl+F1. Эта подсказка - контекстно-зависимая, то есть, подсказка, которая появляется на экране, относится именно к тому состоянию системы программирования, в котором она сейчас находится.

    По клавише F1 Вы получаете подсказку по активному на данный момент меню или окну.

    Комбинацией Ctrl+F1 можно пользоваться только в активном окне редактора. Если при нажатии этой комбинации курсор находится на каком-то ключевом слове или на функции, то на экран выводится подробная подсказка по этому ключевому слову или функции. В противном случае действие этой комбинации аналогично Главное Меню -> Help -> Index.

5. Создание, редактирование и сохранение программы

    Выберите Главное Меню -> File -> New. У вас на экране откроется пустое окно редактора с заголовком 00.CPP. В этом окне наберите текст программы, приведенный ниже (нумерацию строк, которая дана слева, набирать не надо).

 1   #include <stdio.h>
 2   int main(void) {
 3    int a, b, c, d, x, y;
 4      a=1;
 5      b=2;
 6      c=a+b;
 7      d=a*b;
 8      if (c==d) {
 9         x=100;
10         y=200;
11         }
12      else {
13         x=200;
14         y=100;
15         }
16      printf("%d %d\n",x,y);
17      return 0;
18   }

    При наборе и последующем редактировании текста шире используйте специальные клавиши и комбинации клавиш, такие как: Home, End, Ctrl<-, Ctrl->, Ctrl+Y и др. Также полезными могут быть блочные команды: Ctrl+K B (выделить начало блока), Ctrl+K K (выделить конец блока), Ctrl+K C (копировать блок), Ctrl+K V (переместить блок), Ctrl+K H (отменить выделение). Подробную подсказку по специальным клавишам и комбинациям можно получить по Главное Меню -> Help -> Contents -> Editor Commands.

    Текст, который Вы набираете, сохраняется в оперативной памяти, поэтому если во время набора возникнет какая-то авария (например, выключение питания), все, что Вы набрали, будет потеряно. Чтобы избежать такой опасности, нужно сохранить текст в файле на внешней памяти. Набрав несколько первых строк, сохраните текст. Для этого выполните: Главное Меню -> File -> Save as... . При этом у Вас на экране появляется окно Save File As. В верхнем поле этого окна наберите имя, под которым Вы хотите сохранить текст программы. Если Вы наберете только имя (без расширения) система автоматично добавит к имени Вашей программы расширение CPP - стандартное расширение для программ, написанных на языке C++. Мы рекомендуем явно задавать расширение C, например: myfile.c, так как программы, которые мы пишем в этой части лабораторного практикума, ограничиваются возможностями базового языка C. Набрав имя, нажмите на клавишу Enter или "нажмите" на кнопку OK.

    При первом сохранении программы Вы дали ей имя (обратите внимание - это имя теперь является заголовком окна редактора). Далее после каждого добавления нескольких строк или при внесении некоторого количества изменений в текст сохраняйте программу под тем же именем. Для этого достаточно выполнить: Главное Меню -> File -> Save или нажать клавишу F2.

    Впоследствии, если Вам нужно будет снова загрузить в редактор текст той же программы, выполните: Главное Меню -> File -> Open (или нажмите клавишу F3). Вы получите окно Open a File, которое очень похоже на окно Save File As. В верхнем поле этого окна выводится маска для файлов, из которых можно выбирать файл для открытия, в нижнем - список файлов, имена которых соответствуют этой маске. Меняя маску в верхнем поле, Вы изменяете состав списка в нижнем. Достигнув того, что ы нижнем поле будет именно тот список, который Вам нужен, перейдите в нижнее поле. Выберите нужный файл и нажмите на клавишу Enter или "нажмите" на кнопку OK. Файл, который Вы выбрали, откроется в окне редактора.

6. Компиляция и выполнение программы

    Закончив набор текста и сохранив файл программы на диске, выполните компиляцию программы. Для этого выполните: Главное Меню -> Compile -> Compile или нажмите комбинацию клавиш Alt+F9. На экране появляется окно Compiling, в котором отображается ход компиляции. При нормальном завершении компиляции в нижней строке этого окна должно быть выведено:

    Success:      Press any key

    Если там выводится:

    Errors:      Press any key
или:

    Warnings:      Press any key
- ваша программа требует коррекции.

    Работу с диагностикой ошибок мы подробнее рассмотрим в следующем разделе. После того, как Вы откомпилировали программу без ошибок, запустите ее на выполнение. Для этого выполните: Главное Меню -> Run -> Run или нажмите комбинацию клавиш Ctrl+F9. На экране появляется окно Linking, в котором отображается ход компоновки. При нормальном завершении компоновки это окно пропадает само собой и выполняется программа.

    Если же в этому окне выводится:

    Errors:      Press any key
- ваша программа требует коррекции.

    Если Ваша программа не требует ввода данных (а именно такова та программа, с которой мы сейчас работаем), Вы даже не успеете заметить, как эта программа выполняется. Чтобы посмотреть результаты, которые программа выдала на экран, выполните: Главное Меню -> Window -> User screen или нажмите комбинацию клавиш Alt+F5. Вы увидите черный экран с тем, что вывела Ваша программа (в нашем случае это должно быть: 200 100). Чтобы выйти из режима просмотра результатов, нажмите любую клавишу.

    Проверьте содержание Вашего рабочего каталога. Если текст Вашей программы был сохранен в файле myfile.c, то после компиляции в каталоге должен появится файл myfile.obj, а после выполнения - еще и myfile.exe.

7. Диагностика ошибок и предупреждения компилятора и компоновщика

    На этом этапе выполнения лабораторной работы мы предлагаем Вам поэкспериментировать с сообщениями компилятора и компоновщика. Предварительно рекомендуем сделать копию файла программы. Для этого выполните Главное Меню -> File -> Save as... и введите какое-то новое имя программы, например: myfilex.c. Теперь у Вас есть две копии программы в двух файлах (myfile.c и myfilex.c). Одна копия (пусть это будет myfile.c) будет хранить правильную версию программы, а в другую (это будет myfilex.c) мы нарочно будем вводить ошибки.

    Откройте в текстовом редакторе файл myfilex.c. Внесите такие изменения в текст программы (тут и далее мы указываем номера строк, в которые нужно внести изменения):

 6         c=a+b1;
 9         x=100; a123
18   /*}*/

    Запустите программу на компиляцию (Ctrl+F9). Вы получите:

    Errors:      Press any key в окне Compiling. Когда Вы нажмете любую клавишу, внизу экрана откроется окно Message с таким содержимым:

Compiling MYFILEX.C:
Error MYFILEX.C 6: Undefined symbol 'b1'
Error MYFILEX.C 10: Undefined symbol 'a123'
Error MYFILEX.C 10: Statement missing ;
Error MYFILEX.C 17: Compound statement missing }

    Это сообщения компилятора про ошибки. Первая строка - заголовок. В следующих строках: признак ошибки, имя файла, в котором найдена ошибка, номер строки текста программы, в которой была обнаружена ошибка, диагностика ошибки.

    Сообщение к строке 6 - "Неопределенный символ 'b1'". В этом операторе используется переменная с таким именем, которой нет среди объявленных переменных.

    Первое сообщение к строке 10 - "Неопределенный символ 'a123'". Текст a123 похож на имя переменной, но такая переменная не объявлена. Другое сообщение к строке 10 - "В операторе отсутствует ;" . Текст a123 может быть отдельным оператором, но в нем нет признака конца оператора. Обратите внимание на то, что хотя ошибку мы внесли в строку 9, сообщение выдается к строке 10, поскольку ошибка была обнаружена только при обработке этой строки.

    Сообщение к строке 17 - "В составном операторе отсутствует }" - компилятор выявил непарность операторных скобок - { }. Где бы ни была пропущена закрывающая операторная скобка, ее отсутствие может быть обнаружено только на последнем операторе программы.

    Когда Вы перемещаетесь по списку сообщений об ошибках в окне Message, в окне редактора то место текста программы, к которому относится текущее сообщение, выделяется цветом. Когда Вы переключаетесь в окно редактора (клавиша F6), курсор устанавливается на это самое место.

    Восстановите правильное содержимое файла myfilex.c. (Это можно сделать, открыв в редакторе файл myfile.c и вновь сохранив его с именем myfilex.c. При этом Вы получите предупреждение о том, чтоо файл myfilex.c будет изменен, на которое Вам нужно ответить Yes.) Внесите такие изменения в текст программы:

 3    int a, b, c, d, x, y, z=2;
 4      a=b;
 8      if (c=d) {

    Запустите программу на компиляцию (Ctrl+F9). Вы получите:

    Warnings: Press any key
в окне Compiling. Когда Вы нажмете любую клавишу, внизу экрана откроется окно Message с таким текстом:

Compiling MYFILEX.C:
Warning MYFILEX.C 4: Possible use of 'b' before definition
Warning MYFILEX.C 8: Possible incorrect assignment
Warning MYFILEX.C 18: 'z' is assigned value that is never used
Warning MYFILEX.C 18: 'c' is assigned value that is never used

    Это - предупреждения компилятора.

    Предупреждение к строке 4 - "Возможно использование 'b' до определения". В этом операторе значение переменной b присваивается переменной a, но какое значение имеет b на этот момент выполнения программы - неизвестно.

    Предупреждение к строке 8 - "Возможно некорректное присваивание". Выражение c=d имеет смысл: "присвоить переменной с значение переменной d". Выражение c==d, которое применено в правильной программе, имеет смысл: "сравнить переменные c и d". Поскольку выражение включено в условный оператор, компилятор имеет основания предполагать, что тут должно быть сравнение, а не присваивания.

    Предупреждение к строке 18: "Переменной 'z' присваивается значение, которое нигде не используется". В операторе 3 мы дали переменной z начальное значение 2. Но далее в программе значение z нигде ничему не присваивается и ни с чем не сравнивается.

    Еще одно такое же предупреждение к строке 18 относится к переменной c. Присваивание значения этой переменной происходит в строке 8. Ситуация неиспользования значения может быть выявлена только в конце программы.

    Вы можете получить не все предупреждения из тех, которые тут перечислены. При настройке среды можно отменить или возобновить выдачу тех или иных предупреждений. Это делается через: Главное Меню -> Options -> Compiler -> Messages.

    Восстановите правильное содержание файла myfilex.c. Внесите такие изменения в текст программы:

 4      a=1; abc();

    Запустите программу на выполнение (F9).

    Вы получите:

    Errors: Press any key
в окне Linking. В окне Message будет:

Linking MYFILEX.EXE:
Linker Error: Undefined symbol _abc in module MYFILEX.C

    Это - сообщение компоновщика. "Неопределенный символ _abc в модуле MYFILEX.C". Синтаксически оператор abc(); является обращением к функции, именно так его трактует компилятор. Но когда компоновщик пытается найти функцию с таким именем в доступных ему модулях и библиотеках, он ее не находит, про что и сообщает нам.

    Если Вы запустите отдельным шагом компиляцию той же программы, Вы получите:

Compiling MYFILEX.C:
Warning MYFILEX.C 4: Call to function 'abc' with no prototype

    Компилятор предупреждает о том, что в программе есть "Вызов функции 'abc' без прототипа".

8. Отладка программы

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

    Откройте в текстовом редакторе файл myfile.c.

    Выполните: Главное Меню -> Debug -> Watches -> Add watch (или нажмите комбинацию клавиш Ctrl+F7). В окне Add Watch, которое появится на экране, введите в поле Watch Expression имя переменной a. "Нажмите" кнопку OK. В нижней части экрана появится окно Watch, а в нем - "a: Undefined symbol 'a'".

    Повторите эти действия несколько раз, вводя в поле Watch Expression имена b, c, d. В окне Watch будут добавляться аналогичные сообщения. Этими действиями мы даем системе программирования инструкцию отслеживать и отображать в окне Watch текущие значения выбранных переменных программы. Поскольку программа еще не выполняется, эти переменные пока еще "неизвестны" системе программирования, о чем и свидетельствуют сообщения.

    Сделайте активным окно редактора и нажмите клавишу F8. В окне редактора цветом (скорее всего - голубым) будет выделена строка 2 текста программы. Это мы начали отладку нашей программы в пошаговом режиме. Еще раз нажмите клавишу F8. Выделение сместится на строку 4, а в окне будут отображаться какие-то значения переменных. Выполнение программы началось и эти переменные уже "известны", но их значения еще не установлены, поэтому они - какие-то случайные числа. Со следующим нажатием клавиши F8 значение переменной a изменится на 1. Каждое следующее нажатие клавиши F8 будет продвигать выполнение программы на оператор вперед, и в соответствии с выполнением операторов программы будут меняться значения переменных.

    Обратите внимание на то, что после строки 8 выполнение сразу же "перепрыгнет" на строку 13. Поскольку условие в условном операторе 8 не выполняется, выполнение обходит строки 9 - 12. Если Вы измените:

 4    a=2;

    и снова выполните программу в пошаговом режиме, условие в строке 8 будет выполняться, следовательно, и выполнение программы пройдет через строки 9-10-11 и обойдет строки 12-15.

    Закончив выполнение программы, установите курсор на строку 8 и выполните: Главное Меню -> Debug -> Toggle breakpoint (или нажмите комбинацию клавиш (Ctrl+F8). Строка 8 выделится цветом (скорее всего - красным). Этим мы задали точку останова программы. Теперь запустите программу на выполнение (F9). Выполнение остановится на строке 8. При этом в окне Watch будут отображаться текущие значения переменных. Вы можете продолжить выполнение в пошаговом (F8) или в автоматическом режиме (F9).

    То меню, которое "выпадает" по Главное Меню -> Debug, дает возможность полностью управлять слежением за значениями и точками останова.

9. Выводы

    Выполнение этой лабораторной работы должно показать Вам некоторые возможности системы программирования Borland C++, которые помогают программисту создавать, выполнять и отлаживать программы. Эти возможности далеко не исчерпываются теми, которые мы здесь рассмотрели. Во время выполнения этой и других работ Вы должны самостоятельно познакомиться с другими возможностями (пользуясь онлайновой подсказкой) и выбрать для себя некоторый стиль работы в системе программирования. Чем активнее Вы будете овладевать возможностями системы программирования, тем более легким и эффективным будет для Вас выполнение всего лабораторного практикума.


КаталогИндекс раздела
НазадОглавлениеВперед