Лабораторная работа №1, страница 2
Описание файла
Документ из архива "Лабораторная работа №1", который расположен в категории "". Всё это находится в предмете "основы программирования" из 1 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "лабораторные работы", в предмете "основы программирования" в общих файлах.
Онлайн просмотр документа "Лабораторная работа №1"
Текст 2 страницы из документа "Лабораторная работа №1"
Если при компоновке многофайлового проекта посредством команды Build вы получаете сообщения об ошибках компиляции или сборки, которые вы не можете объяснить, то настоятельно рекомендуем вам воспользоваться командой Rebuild All.
□ Start Debugging (F5)— выполнение исполняемого файла, созданного в результате компоновки проекта в режиме отладки.
Рис. 1. Схема подготовки программы для исполнения в среде компилятора
Откомпилируйте проект, щелкнув на кнопке Build (F7). Диагностические сообщения компилятора и компоновщика отображаются в окне вывода Output. Мы надеемся, что у вас все будет в порядке и последняя строка в окне вывода будет выглядеть так:
First.exe - 0 error(s), 0 warning(s)
Теперь запустите приложение на выполнение, щелкнув на зеленом треугольнике (Ctrl+F5).
На приглашение ввести строку введите любую строку, например Hello, World!, и нажмите Enter.
Мы не будем здесь разбираться, почему программа вывела «обрезанную» строку Hello, (проблема ввода-вывода строк будет частично рассмотрена ниже).
Попробуйте заменить в программе оператор вывода
cout << "Welcome to C++ !" << endl;
следующим оператором:
cout << "Добро пожаловать в C++ !" << endl;
Откомпилируйте (точнее говоря, скомпонуйте) программу и запустите ее на выполнение. Результат будет настолько безобразным, что рисунок-копию экрана мы здесь приводить не станем.
1.4.2. Проблемы с вводом-выводом кириллицы
Работа в среде Visual C++ 2005 (в режиме консольных приложений) сопряжена с определенными неудобствами, вызванными различными стандартами кодировки символов кириллицы в операционных системах MS DOS и Windows. Напомним, что весь ввод-вывод в консольном окне идет в кодировке стандарта ASCII, а текст в исходных файлах, набираемый в текстовом редакторе Visual C++, имеет кодировку в стандарте ANSI. Символы кириллицы, в отличии от символов латинского алфавита, в этих стандартах имеют различную кодировку.
Для устранения неудобств работы с кириллицей можно включить в программу оператор #include “ConsolCyr.h”, предварительно поместив файл ConsolCyr.h в папку, в которую помещается файл с исходным текстом программы (файл находится в папке с заданиями на выполнение ЛР, которые вы можете получить у преподавателя). Это позволит вам при выполнении лабораторных работ (но не во всех случаях) устранить проблемы, связанные с использованием кириллицы.
Если в ЛР не требуется вводить с клавиатуры кириллицу (а только выводить символы кириллицы), то лучше вставить в начало функции main() оператор setlocale(0,”rus”), но при этом не использовать одновременно оба средства.
////////////////////////////////////////////
#include <iostream >
//#include "ConsolCyr.h"
using namespace std;
int main(){
//setlocale(0, "rus");
char str1[80];
cout << "Welcome to C++ !" << endl;
cout << "Введите строку:" << endl; //введите строку: Привет, мир!
cin >> str1;
// cout <<"The value str1 = " << endl;
cout << "Знaчение строки str1 = " << endl;
cout << str1 << endl;
return 0;
}
//////////////////////////////////////////////////////////
Ничего не принимайте на веру. Откомпилируйте эту программу и убедитесь, что она дает ожидаемый результат. Для того, чтобы можно было просмотреть результаты работы программы в окне DOS до его закрытия, удобно в конце программы перед оператором return вставить оператор system("pause").
1.5. Замечания по потоковому вводу-выводу
Ввод из буфера входного потока одного слова в символьный массив str1. Предварительно весь текст нужно набрать на клавиатуре и нажать клавишу Enter, после чего весь текст поступит в буфер входного потока cin, а оттуда его можно пословно считывать с помощью перегруженной для входного потока операции >>(поразрядный сдвиг вправо) в переменную, стоящую справа от >>, в данном случае это символьный массив str1. Одна операция считывает одно слово. Если повторить операцию, то из буфера будет считано следующее слово. Если буфер пустой, то на экран выведется запрос на ввод данных в виде мерцающего курсора. Программа остановится и будет ожидать ввода данных с клавиатуры.
Потоковый ввод-вывод автоматически выполняет форматирование данных в соответствии с типом переменной, стоящей справа от знака операции.
Потоковый ввод-вывод будет рассматриваться подробно при изучении объектно-ориентированного программирования, а пока вам нужно запомнить синтаксис операторов потокового ввода–вывода, чтобы использовать его в разрабатываемых программах.
Задание.
-
С целью освоения потокового ввода-вывода измените программу так, чтобы она печатала введенную строку Привет, мир! полностью, используя для хранения введенного текста только один буфер (массив символов str1). В остальном вид экрана должен остаться прежним. Строка вводится с клавиатуры только один раз.
-
Разработайте программу, которая вводит два целых числа и выводит их сумму.
1.6. Конфигурация проекта
Visual C++ позволяет строить проект либо в отладочной конфигурации (Win32 Debug), либо в выпускной конфигурации (Win32 Release). Мы рекомендуем вам всегда работать с проектами в отладочной конфигурации. Обычно она установлена по умолчанию. Все же не мешает проверить, с какой конфигурацией на самом деле идет работа. Для этого выберите в меню Project пункт Settings... Откроется диалоговое окно Project Settings. Проверьте, какое значение установлено в окне комбинированного списка Settings For:.. Если это не Win32 Debug, то переключитесь на нужное значение через команду меню Build ► Set Active Configuration...
1.7. Как закончить работу над проектом
Можно выбрать меню File, пункт Close Solution. А можно просто закрыть приложение Visual C++.
1.8. Как открыть проект, над которым вы работали ранее
1. Способ первый:
-
Запустите на выполнение Visual C++.
-
Выберите меню File, пункт Open ...
-
В открывшемся диалоговом окне найдите папку с вашим проектом, а в ней — файл ProjectName.vcproj.
-
Откройте этот файл, щелкнув по нему мышью.
2. Способ второй:
■ Запустите на выполнение Visual C++.
-
Выберите меню File, наведите курсор мыши на пункт Recent Workspaces.
-
Если в появившемся меню со списком последних файлов, с которыми шла
работа, вы найдете интересующий вас файл ProjectName.vcproj, то щелкните по
нему мышью.
3. Способ третий:
-
Не вызывая Visual C++, найдите папку с вашим проектом, а в ней — файл
ProjectName.vcproj.
-
Щелкните мышью на файле ProjectName.vcproj.
1.9. Встроенная справочная система
В IDE Visual С ++ имеется обширная справочная система, доступная через меню Help главного окна.
Кроме этого, очень удобно пользоваться интерактивной справкой: если вы находитесь в окне Editor, поставьте текстовый курсор на интересующий вас оператор или библиотечную функцию C++ и нажмите клавишу F1. Тотчас будет вызвана справочная система MSDN (если она установлена) с предоставлением необходимой информации. Если запрошенный термин встречается в разных разделах MSDN, то сначала появится диалоговое окно «Найденные разделы». В списке разделов выберите тот, в котором упоминается «Visual C++».
Задание.
Найдите в справочной системе информацию об операторе for. То, что она написана на английском языке, не должно вас останавливать.
Для программирования в среде Visual C++ Вам следует изучить английский на столько, чтобы понимать сообщения компилятора и тексты справочной системы! Поверьте, это не так уж сложно, так как число сообщений ограничено, а в справочной системе широко использованы копирование и вставка. Для ускорения работы установите на своем компьютере англо-русский словарь, например ABBYY Lingvo.
1.10. Работа с отладчиком
Полное описание возможностей встроенного отладчика Visual C++ и приемов работы с ним может потребовать отдельной книги, настолько объемна эта тема. Поэтому здесь приведены только начальные сведения о работе с отладчиком Visual C++. Проще всего это сделать, написав программу, заведомо содержащую несколько ошибок, а затем показав, как с помощью отладчика можно найти и исправить эти ошибки.
В частности, мы научимся устанавливать в программе точки прерывания и выполнять ее до заданной точки. Когда во время выполнения встречается точка прерывания, программа останавливается, а на экране появляется отлаживаемый код. Это дает возможность детально выяснить, что происходит в программе.
Кроме того, программу можно выполнять последовательно, строку за строкой — такой процесс называется пошаговым выполнением. Этот режим позволяет следить за тем, как изменяются значения различных переменных. Иногда он помогает понять, в чем заключается проблема: если обнаруживается, что переменная принимает неожиданное значение, то это может послужить отправной точкой для выявления ошибки. После обнаружения ошибки ее можно исправить и выполнить программу заново в отладочном режиме.
Назовем нашу программу (проект) именем Buggy. Программа должна вычислять среднее арифметическое первых пяти натуральных чисел: 1-5. Нетрудно догадаться, что ответ должен быть равен 3, однако из-за специально сделанных ошибок программа первоначально будет выдавать неправильный ответ.
Для создания программы выполните следующие действия:
-
Создайте проект типа «консольное приложение» с именем Buggy.
-
Добавьте к проекту файл buggy.срр и заполните его следующим текстом:
#include <iostream>
using namespace std;
int main()
{ const N = 5;
int a[N] = {1, 2, 3, 4, 5};
float sum, average;
int i;
for (i = 1: i < N: i++)
sum = sum+a[i];
average = sum / N;
cout << "average = " << average << endl;
return 0;
}
□ Откомпилируйте проект.
□ Запустите программу на выполнение.
Вы должны увидеть в консольном окне приложения нечто вроде следующего результата:
average = -2.14748e+007,
т. е. программа вычислила, что среднее арифметическое первых пяти целых чисел
равно -21474800 (на вашем компьютере может быть и другое число), а это мало
похоже на число 3.0.
Начнем отладку нашей злополучной программы.
1.10.1. Установка точки прерывания
Точка прерывания позволяет остановить выполнение программы перед любой выполняемой инструкцией (оператором) с тем, чтобы продолжать выполнение программы либо в пошаговом режиме, либо в непрерывном режиме до следующей точки прерывания.
Чтобы задать точку прерывания перед некоторым оператором, необходимо установить перед ним текстовый курсор и нажать клавишу F9. Точка прерывания обозначается в виде коричневого кружка на левом поле окна редактирования. Повторный щелчок на кружке снимает точку прерывания. В программе может быть несколько точек прерывания.
1.10.2. Выполнение программы до точки прерывания
Программа запускается в отладочном режиме с помощью команды Build ► Start Debug (или нажатием клавиши F5).
В результате код программы выполняется до строки, на которой установлена точка прерывания. Затем программа останавливается и отображает в окне Editor ту часть кода, где находится точка прерывания, причем желтая стрелка на левом поле указывает на строку, которая будет выполняться на следующем шаге отладки. Продолжим демонстрацию описываемых средств на примере программы Buggy:
-
Установите точку прерывания перед оператором for.
-
Запустите программу в отладочном режиме, нажав клавишу F5.
Обратите внимание — в Visual C++ на панели инструментов появилось меню Debug. Заглянем в него из любопытства.
Среди различных команд этого меню особый интерес представляют команды Step Into (F11), Step Over (F10), Step Out (Shift+F11), Run To Cursor (Ctrl+F10) и Stop Debugging (Shift+F5).
Выбор последней команды (или нажатие комбинации клавиш Shift+F5) вызывает завершение работы с отладчиком.
1.10.3. Пошаговое выполнение программы
Нажимая клавишу F10, можно выполнять один оператор программы за другим.
Предположим, что при пошаговом выполнении программы вы дошли до строки, в которой вызывается некоторая функция func1(). Если вы хотите пройти по коду вызываемой функции, то надо нажать клавишу F11. Если же внутренняя работа функции вас не интересует, а интересен только результат ее выполнения, то надо нажать клавишу F10.
Допустим, что вы вошли в код функции func1(), нажав клавишу F11, но через несколько строк решили выйти из него, т. е. продолжить отладку после возврата из функции. В этом случае надо нажать клавиши Shift+F11.