- •Лабораторные работы по курсу" "Основы программирования и алгоритмические языки" часть I
- •2. Порядок выполнения лабораторных работ
- •2.1. Подготовка к выполнению
- •2.2. Задания для выполнения.
- •2.3. Выполнение задания
- •2. Подготовка каталога и запуск системы программирования
- •3. Отчет к лабораторной работе
- •4. Литература
- •Лабораторная работа ╧1 Работа в системе программирования Borland с
- •1. Цель работы
- •3. Настройка рабочей среды
- •3.1. Установка каталогов
- •3.2. Параметры компиляции
- •3.3. Параметры программы Make
- •3.4. Параметры компоновщика
- •3.5. Параметры отладчика
- •3.6. Сохранение параметров среды
- •4. Пользование подсказкой
- •5. Создание, редактирование и сохранение программы
- •6. Компиляция и выполнение программы
- •7. Диагностика ошибок и предупреждения компилятора и компоновщика
- •8. Отладка программы
- •9. Выводы
- •5. Пример решения задачи (вариант 30)
- •5.1. Разработка алгоритма решения
- •5.2. Определение переменных программы
- •5.3. Разработка текста программы
- •5.4. Отладка программы
- •5.5. Результаты работы программы
- •5.6. Выводы
- •Приложение 1. Базовые типы данных языка с
- •Приложение 2. Некоторые функции стандартного ввода-вывода
- •4. Варианты индивидуальных заданий
- •5. Пример решения задачи (вариант 30)
- •5.1. Разработка алгоритма решения.
- •5.2. Определение переменных программы
- •5.3. Разработка текста программы
- •5. Пример решения задачи (вариант 30)
- •5.1. Программа упаковки
- •5.2. Программа распаковки
- •5.3. Выводы
- •5. Пример решения задачи (вариант 30)
- •5.1. Разработка алгоритма решения.
- •5.2. Определение переменных программы
- •5.3. Разработка текста программы
- •5.4. Отладка программы
- •5.5. Результаты работы программы
- •5.6. Выводы
- •5. Пример решения задачи (вариант 30)
- •5.1. Разработка алгоритма решения.
- •5.2. Определение переменных программы
- •5.3. Разработка текста программы
- •5.4. Отладка программы
- •5.5. Результаты работы программы
- •5.6. Выводы
- •5. Пример решения задачи (вариант 30)
- •5.1. Разработка алгоритма решения.
- •5.2. Определение переменных программы
- •5.3. Разработка текста программы
- •5.4. Отладка программы
- •5.5. Результаты работы программы
- •5.6. Выводы
- •4. Варианты индивидуальных заданий
- •5. Пример решения задачи (вариант 30)
- •5.1. Разработка алгоритма.
- •5.2. Определение переменных программы
- •5.3. Разработка текста программы
- •5.4. Отладка программы
- •5.5. Результаты работы программы
- •5.6. Выводы
- •4. Варианты индивидуальных заданий
- •5. Пример решения задачи (вариант 30)
- •5.1. Разработка алгоритма решения.
- •5.2. Определение переменных программы
- •5.3. Разработка текста программы
- •5.4. Отладка программы
- •5.5. Результаты работы программы
- •5.6. Выводы
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' без прототипа".
