- •А.П. Новоселов программирование на языке Си
- •1.1. Порядок создания программы
- •1.2. Ввод и выполнение программы
- •1.3. Модификация программы
- •1.4. Пошаговое выполнение программы
- •1.5. Сообщения компилятора и компоновщика
- •1.6. Действия в случае ошибки выполнения
- •1.7. Ошибки в форматах ввода/вывода
- •1.8. Вычисления с вещественными числами
- •2.1. Лексемы
- •2.2. Идентификаторы
- •2.3. Ключевые слова
- •2.4. Константы
- •3.2. Арифметические операции
- •3.3. Операции отношения и логические операции
- •3.4. Операции присваивания
- •3.5. Поразрядные операции
- •3.6. Библиотека функций
- •1. Вычисление площади и периметра геометрической фигуры
- •2. Вычисления по формулам с вещественными числами
- •3. Арифметические операции для целочисленных данных
- •4. Циклы с заданным числом повторений
- •5. Алгоритмы с разветвлениями
- •6. Циклы с условием окончания
- •7. Последовательная обработка данных
- •8. Поразрядные операции
- •9. Обработка массивов
- •10. Обработка матриц
- •11. Сортировка массивов
- •12. Сортировка матриц
- •1.1. Математическая постановка
- •1.4.2. Содержание результатов работы программы на экране
- •Выполнил: Иванов и.П., гр. Ут – 11, вариант 13(2)
- •1.4.3. Текст программы
- •Выводы по работе
1.3. Модификация программы
Внесём три изменения в программу:
Запишем вычисление значения переменной sum в две строки:
sum = x + y;
sum = sum + z;
Дополним строку printf("\n The results: "); названием программы:
printf("\n The results Program1: ");
В строке getch(); добавим комментарий:
getch(); // ожидание ввода символа для просмотра результатов
Проверьте и сохраните изменения в программе (кн_Save All). Выполните пуск программы и посмотрите результаты в окне Output.
1.4. Пошаговое выполнение программы
Выполним по шагам программу Program1 и просмотрим по ходу работы программы значения всех переменных. Значение переменной указывает всплывающая подсказка от курсора на этой переменной (рис. 4). Цепочка действий приведена в табл. 2. Обратите внимание на то, что операторы выделенной строки выполняются только после нажатия кл_ F8 (или M_File -> Run -> Step Оver, или кн_Step Оver) для перехода на следующую строку.
Пошаговое выполнение программы можно прервать командой кл_F9 или кн_ Run, после чего выполняются все операторы до останова программы.
Рис. 4. Всплывающая подсказка от курсора на переменной z после ввода данных функцией scanf()
Таблица 2. Пошаговое выполнение программы
Шаг Клавиши Выделенная строка, пояснение
F8 int main (int argc, char* argv[ ])
F8 printf( “\n Input x, y, z and + Enter: ”);
F8 scanf( ”%d%d%d”, &x, &y, &z);
F8 Перейти в окно Output (щелчок в окне),
Диалог ввода: Input x, y, z and + Enter: 1 10 100
Enter Ввод данных printf( “ Data: x = %d y = %d z = %d \n“, x, y, z);
Перейти в окно Редактора Кода,
F8 sum = x + y + z;
F8 pr = x * y * z;
F8 printf( “\n The results: ”);
F8 printf( “ x + y + z = %d x * y * z = %d \n“, sum, pr);
F8 getch();
Перейти в окно Результатов П
Enter Ввод символа (кл_Enter для функции getch() return 0;
F8 }
F8 Окончание выполнения программы
Другой способ пошагового выполнения программы – до позиции курсора: команда кл_F4 (или M_File -> Run to Cursor, или кн_Run to Cursor) выполняет программу до оператора, на котором расположен курсор в окне редактора кода. Команду кл_F4 можно повторять, предварительно устанавливая курсор на очередном выбранном операторе останова программы. На каждом шаге нужно просматривать результаты в окне Output.
Пошаговое выполнение программы с заходом в функции делается по команде кл_F7 (кн_Traсe Into или M_File -> Traсe Into).
Прерывание выполнения программы в любом режиме запуска выполняется командой кл_Ctrl + F2.
1.5. Сообщения компилятора и компоновщика
Внесём в программу три ошибки (рис. 5):
int x, y, K, sum, pr; // символ z заменим на К
scan( "%d%d%d", &x, &y, &z); // из слова scanf уберём букву ‘ f ’.
sum = x + y // уберём символ ‘;’ – конец оператора
Рис. 5. Сообщения компилятора об ошибках в программе и предупреждения
Установите режим при котором компилятор отображает все свои замечания: М_Project -> Options… (Проект|Опции) -> окно опций проекта -> вкладка Compiler (Компилятор) -> в группе опций Warnings (Предупреждения) включить опцию All (Все). Затем выполните команду Запуск кл_F9.
Внизу окна Редактора Кода появятся сообщения о замечаниях и ошибках (рис. 5) Перевод сообщений на русский язык:
[C++ Ошибка] модуль Program1.cpp строка 19: Е2268 Вызов неопределённой функции ‘scan’;
[C++ Ошибка] модуль Program1.cpp строка 19: Е2451 Необъявленный идентификатор ‘z’;
[C++ Ошибка] модуль Program1.cpp строка 22: Е2379 Отсутствующий оператор ‘;’ ;
[C++ Предупреждение] модуль Program1.cpp строка 25: W8013 Переменная ‘pr’ возможно используется до того как ей присвоено значение;
[C++ Предупреждение] модуль Program1.cpp строка 28: W8080 Объявленный идентификатор ‘К’ нигде не используется.
Чтобы узнать на какую строку указывает сообщение компилятора нужно дважды щелкнуть на этом сообщении, после чего в окне Редактора Кода выделится соответствующая строка.
Ошибки 1 и 2 и предупреждение 5 легко обнаружить по соответствующим сообщениям. Двойной щелчок на сообщении 3 выделяет строку sum = sum + z; и курсор указывает оператор присваивания ‘=’. При отсутствии символа ‘;’, указывающего конец оператора sum = x + y, компилятор рассматривает строки “sum = x + y” и “sum = sum + z;” как одну строку “sum = x + y sum = sum + z;” , в которой между идентификаторами ‘y’ и ‘sum’ нет знака операции.
Предупреждение 4 о том что переменная ‘pr’ не инициализирована и ее значение для вывода в строке 25 не определено
Задание: исправьте по порядку все ошибки и проверьте правильность работы программы