Вы находитесь на странице: 1из 12

Лабораторная работа №1

студента группы ПИ-201


Милькович Миляна

Выполнение: Защита: _

РАБОТА В СРЕДЕ MICROSOFT VISUAL STUDIO 2010. РЕАЛИЗАЦИЯ


ЦИКЛИЧЕСКИХ АЛГОРИТМОВ СРЕДСТВАМИ ЯЗЫКА С/С++
Цель работы: получить навыки в создании, настройке и отладке консольных приложений
на языке программирования C/C++ в среде Visual Studio; ознакомиться с основными
библиотечными функциями ввода-вывода; получить навыки в составлении простейших
циклических алгоритмов и реализации их средствами языка С/С++.

Задания к лабораторной работе


1. Ознакомиться с теоретическим материалом.

2. В среде Visual Studio 2010 создать решение (консольное приложение).


Настроить его свойства по аналогии с примером, рассмотренным в
теоретических сведениях. В составе решения составить программу, которая
выводит на экран ФИО студента, выполняющего работу и номер группы. Также
программа должна содержать описание двух целочисленных переменных,
которые вводятся с клавиатуры, а затем их сумма выводится на экран.
Использовать сначала средства ввода-вывода языка С, затем С++.

3. При наборе программы отработать использование основных возможностей


редактора кода.

4. Произвести отладку программы в обычном и пошаговом режимах. В отчет


внести текст программы, а также скриншоты информационного окна после
построения и при пошаговом выполнении программы (со значениями
локальных переменных) и окна консоли с результатом работы программы.

5. Выбрать алгоритм, составить его блок-схему и программу с использованием


оператора цикла for для вычисления и вывода на экран в точках xi=a+ih,
i=0,1,2…,n, h=(b-a)/n промежутка [a,b] значений функции y=f(x), указанной в
варианте задания (см. ниже). Также программа должна определять наибольшее
и среднее значение функции. Предусмотреть проверку вычисляемых значений
аргумента на принадлежность области допустимых значений. Ввод исходных
данных (a, b, n) осуществлять с клавиатуры.

6. Составить аналогичные блок-схему и программу, но с использованием


оператора цикла while или do-while на выбор.

7. Создать новое решение, в которое в виде отдельных проектов включить


программы, созданные при выполнении пунктов 5 и 6. В отчет внести обе блок-
схемы и программы, а также результаты их тестирования.
Вариант 5

Ход работы

1. Познакомился с теоретическим материалом для выполнения лабораторной работы


№1.
2. Успешно установил среду разработки «Microsoft Visual Studio 2010 Professional».
Двойным щелчком по ярлыку приложения открываем начальное окно и нажимаем
на «создать проект» (см. Рис. 1).

Рис. 1 Начальная страница

В открывшемся окне выбираем тип проекта «Консольное приложение Win32».


Задаём имя проекта «Miljan» и нажимаем ОК. В настройках приложения поставим
галочку «Пустой проект» и нажимаем ОК. (см. Рис. 2)

Рис. 2 Мастер приложений Win32

Таким образом программа нам создаст нужные для работы файлы проекта. Проект состоит
из 4 папок. В папке «Файлы исходного кода» создаём файл типа «.срр» и называем его
«main». (см. Рис. 3)
Рис. 3 main.cpp

Пишем программу которая выводит имя студента, и выводить на экран сумму двух чисел
которые вводятся с клавиатуры. Пишем программу с помощью средствами ввода и вывода
С (см. Рис. 4), и С++ (см. Рис. 5).

Рис. 4 Средства "С"

Рис. 5 Средства "С++"

3. При наборе кода предыдущей программы, благодаря средствами среды разработки


«Microsoft Visual Studio 2010», служебные слова были подсвечены разными цветами.
Редактор также разделил программу на логические части (Часть функция «main» и часть
подключения заголовочных файлов). При наборе кода также пользовался технологией
«IntelliSense», которая при вводе определённых функций автоматически заканчивает
название функции и сообщает о типе параметров и назначению самой функции.

4. В Visual Studio имеется два варианта пошагового выполнения программы: с заходом


внутрь функций (F11) и с обходом (F10). Чтобы не заходить внутрь библиотечных
функций, нажмем F10. С левой стороны текста программы появится жёлтая стрелка,
которая показывает на какой строчки программы мы находимся. С каждым нажатием
кнопки F10 мы переходим к следующей строки программы и локальные значения
переменных изменяются (см. Рис. 6)
Рис. 6 Пошаговая отладка программы

5. Разбиваем наш вариант задания на три части:


a. P1 = cos2x
b. P2 = 1 + sin2x (>0)
3
c. P3 = √𝑥 − 1 (>0)
d. P4 = x/P3
e. P5 = ln2(P4)
Каждую часть сохраняем в отдельные переменные p1, p2, p3, p4, p5. Значение
функции y = p1/p2 – p5. (см. Рис. 7 Отдельные переменные)

Рис. 7 Отдельные переменные

Чтобы при работы созданной нами программы не возникали ошибки значений


(возникают, когда пытаемся делить на 0 или когда определённые функции
принимают неправильные значения) перед тем как вычитать значение функции
«y», поставим условие которое проверяет делители выражения (должны отличатся
от ноля) и значение функции «ln» (должно быть больше 0) (см. Рис. 8).

Рис. 8 условие задачи

Алгоритм программы с циклом for (см. Рис. 9):


Рис. 9 Алгоритм с циклом "for"

Текст программы с циклом «for»:


#include <iostream>
#include <math.h>
#include <locale>
using namespace std;

int main()
{
setlocale(LC_CTYPE, "RUS");
//ввод a,b,n
//а - начальное значение, b - конечное значение, n - количество итераций
double a, b, n;
cout << "Введите а, b, n \n";
cin >> a >> b >> n;
cout << "а: начальное значение = " << a << "\n";
cout << "b: конечное значение = " << b << "\n";
cout << "n: число итераций = " << n << "\n";
double h, x, max=-1000000, value=0.0;
h = (b - a) / n; //шаг приращения
cout << "шаг прирашения = " << h << "\n\n";
for (int i = 0 ; i <= n; i++){
x = a + i*h;
cout << "x=" << x << "\n";
double p1,p2,p3,p4;
bool flag = false;
p1 = pow(cos(x),2);
p2 = 1 + pow(sin(x),2);
p3 = pow(x-1, 1.0 / 3.0);
p4 = x/p3;
if (p2 == 0 || p3 ==0 || p4 < 0)
flag = true;
if (!flag) {
double p5, y;
p5 = pow(log10(p4),2);
y = p1/p2 - p5;
cout << "y=" << y << "\n\n";
value += y;
if (max < y){max = y;}
}
else {
cout << "Значение y неопределённо, так как нельзя делить на 0.";} }
value /= n;
cout << "наибольшее значение функции:" << max << "\n";
cout << "\nсреднее значение функции:" << value << endl;
system("pause");
}
Результат выполнения программы (см. Рис. 10):

Рис. 10 Результат выполнения программы


6. Заменил цикл «for» с циклом «while» (см. Рис. 11).

Рис. 11 Алгоритм с циклом "while"


Текст программы с циклом while:
#include <iostream>
#include <math.h>
#include <locale>
using namespace std;

int main()
{
setlocale(LC_CTYPE, "RUS");

//ввод a,b,n
//а - начальное значение, b - конечное значение, n - количество итераций
double a, b, n;
cout << "Введите а, b, n \n";
cin >> a >> b >> n;

cout << "а: начальное значение = " << a << "\n";


cout << "b: конечное значение = " << b << "\n";
cout << "n: число итераций = " << n << "\n";

double h, x, max=-1000000, value=0.0;


h = (b - a) / n; //шаг приращения
cout << "шаг прирашения = " << h << "\n\n";
int i = 0;
while (i < n){

x = a + i*h;
cout << "x=" << x << "\n";
double p1,p2,p3,p4;
bool flag = false;

p1 = pow(cos(x),2);
p2 = 1 + pow(sin(x),2);
p3 = pow(x-1, 1.0 / 3.0);
p4 = x/p3;

if (p2 == 0 || p3 ==0 || p4 < 0)


flag = true;

if (!flag) {
double p5, y;
p5 = pow(log10(p4),2);
y = p1/p2 - p5;
cout << "y=" << y << "\n\n";
value += y;

if (max < y){max = y;}


}
else {
cout << "Значение y неопределённо, так как нельзя делить на
0.";
}
i++;
}
value /= n;
cout << "наибольшее значение функции:" << max << "\n";
cout << "\nсреднее значение функции:" << value << endl;
system("pause");
}

Цикл с постусловием (do while)(см. ):

Рис. 12 Цикл с постусловием (do-while)


Текст программы с постусловием:
#include <iostream>
#include <math.h>
#include <locale>
using namespace std;
int main()
{
setlocale(LC_CTYPE, "RUS");
//ввод a,b,n
//а - начальное значение, b - конечное значение, n - количество итераций
double a, b, n;
cout << "Введите а, b, n \n";
cin >> a >> b >> n;

cout << "а: начальное значение = " << a << "\n";


cout << "b: конечное значение = " << b << "\n";
cout << "n: число итераций = " << n << "\n";

double h, x, max=-1000000, value=0.0;


h = (b - a) / n; //шаг приращения
cout << "шаг прирашения = " << h << "\n\n";
int i = 0;
do {
x = a + i*h;
cout << "x=" << x << "\n";
double p1,p2,p3,p4;
bool flag = false;

p1 = pow(cos(x),2);
p2 = 1 + pow(sin(x),2);
p3 = pow(x-1, 1.0 / 3.0);
p4 = x/p3;

if (p2 == 0 || p3 ==0 || p4 < 0)


flag = true;

if (!flag) {
double p5, y;
p5 = pow(log10(p4),2);
y = p1/p2 - p5;
cout << "y=" << y << "\n\n";
value += y;

if (max < y){max = y;}


}
else {
cout << "Значение y неопределённо, так как нельзя делить на 0.";
}
i++;
} while(i<n);
value /= n;
cout << "наибольшее значение функции:" << max << "\n";
cout << "\nсреднее значение функции:" << value << endl;
system("pause");
}

Вывод: В отличии от Паскаля, в языке программирования С++ цикл с постусловием


прекратится, как только условие станет ложным. Также, в языке С++ в отличии от многих
языках, цикл for может выполнятся без условия выхода.
Ответы на контрольные вопросы
1. Что в среде Visual Studio называется решением? Чем решение отличается от
проекта? Ответ: решение - это контейнер, который используется для упорядочения
одного или нескольких связанных проектов, например, проекта библиотеки
классов и соответствующего тестового проекта. В решении может находиться
несколько проектов.

2. Как создать решение?


Перейти в Файл – Создать – Проект, и выбрать Консольное приложение

3. Как в готовое решение добавляется еще один проект?


В контекстном меню, вызываемом щелчком правой кнопкой мыши элемента в
Обозревателе решений, необходимо выберать Добавить > Новый проект

4. Как в состав проекта добавляются новые файлы?


Чтобы добавить новый файл в состав проекта нужно в «обозревателе решений»
нажать прямой кнопкой мыши на какую-либо папку проекта и выбрать «добавить |
создать элемент». Затем нужно выбрать тип файла (на пример: .cpp).

5. Какие типы файлов входят в состав решение, проекта?


 Файлы проекта и решения
 Проекты CLR
 Программа ATL или управление файлами исходного кода и заголовков
 Программа MFC или управление файлами исходного кода и заголовков
 Файлы предкомпилированных заголовков
 Файлы ресурсов
 Файлы справки (WinHelp) 8
 Файлы указаний

6. Каким образом в среде Visual Studio настраиваются свойства проекта?


Чтобы настроить свойства проекта нужно выполнить команду меню Проект |
Свойства или нажать Alt+F7.

7. Перечислите основные возможности редактора кода в среде Visual Studio?


 подсветка служебных слов языка и комментариев;
 разбиение кода на логические группы. Редактор автоматически объединяет
фрагменты кода в группы, которые можно свернуть или развернуть
воспользовавшись значками с символами «-» и «+» слева от кода (рис. 1.9).
Примером таких логических групп кода может быть блок комментариев или
составной оператор тела функции;
 автоматическое создание отступов в коде. Для улучшения читабельности текста
программы редактор автоматически добавляет отступы при вводе содержимого
составного и некоторых других операторов. Также автоматически устанавливаются
позиции самих открывающей и закрывающей фигурных скобок (с одинаковым
отступом);
 удобное перемещение между началом и концом составного оператора. Если
курсор расположен на открывающей фигурной скобке, то после нажатия Ctrl+] он
автоматически перемещается на закрывающую скобку;
 демонстрация отладочной информации: выделение в тексте ошибок, размещение
точек прерывания, закладок и т.п.
 поиск и замена фрагментов кода;
 вывод информации об определении элементов кода;
 использование технологии автодополнения IntelliSense.

8. Что такое конфигурация проекта? Как ее можно изменить?


Конфигурацию проекта определяют параметры компоновки приложения и
свойства устанавливаются для каждой из них отдельно. Изначально каждый проект
в решении Visual Studio имеет две конфигурации — Debug (Отладка) и Release
(Выпуск). Каждая из них создается (автоматически) в отдельном каталоге. Чтобы
изменить конфигурацию проекта нужно выполнить команду меню Проект |
Свойства или нажать Alt+F7.

9. Как можно произвести локализацию создаваемого консольного приложения?


Для этого надо подключить библиотеку и использовать функцию setlocale.

10. Каким образом в среде Visual Studio производится отладка создаваемого


приложения? Какие средства отладки вы знаете?
Для того, чтобы запустить набранную программу на выполнение можно
использовать команду Отладка | Начать отладку или нажать F5. С заходом внутрь
функции и с обходом.

11. Формат записи оператора цикла for.


for (<выражение_1>; <выражение_2>; <выражение_3>)
<оператор>

12. Формат записи оператора цикла while.


while (<выражение>)
<оператор>

13. Формат записи оператора цикла do-while.


Do <оператор>while (<выражение>);

14. Каким образом можно включить несколько операторов в тело цикла?


Чтобы выключить несколько операторов в тело цикла нужно заключить их в
фигурные скобки.

15. Может ли управляющая переменная в цикле for быть вещественной?


Да, может.

16. Допустима ли форма записи цикла for, в которой отсутствует условие выхода?
Если да, то сколько раз выполнится такой оператор?
Да, допустима. В этом случае цикл будет повторятся бесконечно много раз.

17. Отличия оператора цикла while от do-while.


Цикл while - это цикл с предусловием, а цикл do while - это цикл с постусловием.
Цикл while может не выполнится, цикл do-while выполняется хоть один раз