Міністерство освіти і науки України
Національний університет «Львівська політехніка»
Кафедра ЕОМ
/
Звіт
до лабораторної роботи № 5
з дисципліни «Основи алгоритмізації та програмування, частина 1»
на тему:
«Засоби вiдлагодження iнтегрованого середовища Visual C++ 2005: точки переривання, покрокове виконання. Розв'язування на С задач, в яких використовуються числовi масиви та визначення i виклик функцiй»
Мета:
познайомитися iз основними засобами вiдлагодження iнтегрованого середовища Visual C++ 2005;
познайомитися iз засобами опису функцiй та виклику їх в мовi програмування С;
познайомитися iз використанням масивiв в мовi програмування С.
Хід виконання роботи
Iнтегроване середовище розробки програм Visual C++ має вбудований вiдлагоджувач призначений для виявлення помилок (їх локалiзацiї) у виконавчiй програмi. Процес вiдлагодження полягає в корекцiї чи модифiкацiї програми таким чином, щоб програма виконувалася правильно i вiдповiдала поставленiй задачi.
У Visual Studio основними можна вважати такi засоби:
точки переривання;
покрокове виконання програми;
вiкно спостереження за змiнними класу auto;
вiкно спостереження за локальними змiнними;
вiкно спостереження за змiнними чи виразами (вiкно Watch).
Точка переривання - це мiсце в програмi, в якiй виконання програми буде призупинине. В програмi можна встановити довiльну кiлькiсть точок переривання.
Точку переривання можно створити наступним чином:
перемiстити курсор в те мiсце програми, де необхiдно встановити точку переривання ;
натиснути на клавiшу F9.
/
Рис. 1. – приклад встановлення точки переривання
Мiсце встановлення точки переривання вiдзначається кружком злiва вiд вiдповiдного рядка програми у вiкнi з текстом програми. Для того, щоб вiдмiнити ("зняти") точку переривання, потрiбно повторно натиснути на клавiшу F9.
Основними засобами спостереження за змiнимим вiдлагоджуваної програми є вiкно Autos, вiкно Locals та вiкно Watch.
У вiкнi Autos вiдображаються значення змiнних iз класом пам'ятi Auto. Попереднiй малюнок це iлюструє.
У вiкнi Locals вiдображаються значення локальних змiнних виконуваної функцiї.
У вiкнi Watch можна задати iдентифiкатори змiнних чи вирази значення яких виводяться у цьму вiкнi пiд час виконання програми.
Індивідуальне завдання
4.9 Задані дійсні числа, які визначають відрізки a, b, c і d. Для кожної трійки тих відрізків, з яких можна побудувати трикутник, обчислити площу даного трикутника. Обчислення площі трикутника описати з допомогою функції мови С.
#include <stdio.h>
#include <conio.h>
#include <Windows.h>
#include <math.h>
float f1(float a, float b, float c)
{
float p = (a + b + c)/2;
return sqrt(p*(p - a)*(p - b)*(p - c));
}
float f2(float a, float b, float d)
{
float p = (a + b + d)/2;
return sqrt(p*(p - a)*(p - b)*(p - d));
}
float f3(float a, float c, float d)
{
float p = (a + c + d)/2;
return sqrt(p*(p - a)*(p - c)*(p - d));
}
float f4(float b, float c, float d)
{
float p = (b + c + d)/2;
return sqrt(p*(p - b)*(p - c)*(p - d));
}
int main(void)
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
float a, b, c, d;
printf("Введіть сторони трикутника\n");
scanf("%f%f%f%f", &a,&b,&c,&d);
if (a > 0 && b > 0 && c > 0)
printf("%f ", f1(a, b, c));
if (a > 0 && b > 0 && d > 0 )
printf("%f ", f2(a, b, d));
if (a > 0 && c > 0 && d > 0)
printf("%f ", f3(a, c, d));
if (b > 0 && c > 0 && d > 0 )
printf("%f ", f4(b, c, d));
printf("Для продовження нажміть на будь-яку клавішу....");
getch();
return 0;
}
/
Рис. 2. – результат виводу програми, знаходить площу трикутника
5.9 Задані дійсні числа x1, x2, . . . , x25. Визначити, скільки із них приймають найбільше значення.
#include <stdio.h>
#include <conio.h>
int main()
{
int array[25];
int c, iter, jter, x;
int N = sizeof (array) / sizeof (array[0]) ;
for(c=0; c<25; c++)
{
scanf("%d", &array[c]);
}
for (iter=1; iter<N; iter++) /* зовнішній цикл */
{
for (jter=N-1; jter>=iter; jter--) /* внутрішній цикл */
{
if (array[jter]<array[jter-1]) /* умова перебору */
{
/* міняємо місцями значення масиву*/
/* зберігаємо значення більшого елементу в змінну */
x = array[jter-1] ;
/* переміщамо менший елемент на одну позицію вліво */
array[jter-1] = array[jter] ;
/* більший елемент переміщаємо на одну позицію вправо */
array[jter] = x ;
}
}
}
printf("%d\n", *(array + 24));
getch();
return 0;
}
/
Рис. 3. – результат виводу програми, що знаходить максимальне значення масиву
Заповнити матрицю значеннями вектора b1, b2, ... , b81 вiд лiвого верхнього кута по спiралi: вниз - вправо - вверх - влiво. ( Примiтка. На малюнку вказанi iндекси елементiв вектора b.)
#include <stdio.h>
#include <conio.h>
int main()
{
const int n = 9;
int A[9][9];
int b[9 * 9];
for (int i = 0; i < n * n; i++)
{
b[i] = i + 1;
}
int a = 0;
for (int i = 0; i < n - 2; i++)
{
for (int j = i; j < n - i; j++) //вниз
{
A[j][i] = b[a];
a++;
}
for (int j = i + 1; j < n - i - 1; j++) //вправо
{
A[n - i - 1][j] = b[a];
a++;
}
for (int j = n - 1 - i; j > i; j--) //вверх
{
A[j][n - i - 1] = b[a];
a++;
}
for (int j = n - 1 - i; j > i; j--) //вліво
{
A[i][j] = b[a];
a++;
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
printf("%2d", A[i][j]);
}
printf("\n");
}
getch();
}
/
Рис. 4. – результат виводу програми.
Висновок: познайомитися iз основними засобами вiдлагодження iнтегрованого середовища Visual C++ 2015; познайомитися iз засобами опису функцiй та виклику їх в мовi програмування С;познайомитися iз використанням масивiв в мовi програмування С.