Національний університет „Львівська політехніка”
Кафедра ЕОМ
Звіт
з дисципліни: “Основи алгоритмізації та програмування”
З лабораторної роботи №5
На тему « Засоби відлагодження інтегрованого середовища Visual C++ 2005: точки переривання покрокове виконання. Розв’язування на С задач, в яких використовуються числові масиви та визначення і виклик функцій»
Мета
познайомитися iз основними засобами вiдлагодження iнтегрованого середовища Visual C++ 2005;
познайомитися iз засобами опису функцiй та виклику їх в мовi програмування С;
познайомитися iз використанням масивiв в мовi програмування С.
Засоби відлагодження інтегрованого середовища Visual Studio
Iнтегроване середовище розробки програм Visual C++ має вбудований вiдлагоджувач призначений для виявлення помилок (їх локалiзацiї) у виконавчiй програмi. Процес вiдлагодження полягає в корекцiї чи модиф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шу покрокового виконання виконується один "крок" програми. "Кроком" вважається один рядок програми, якщо у цьому рядку розмiщається один чи декiлька оператолрiв програми, або декiлька рядкiв, якщо оператор записаний у декiлькох рядках.
У вiдлагоджувачi є два режими покрокового виконання: Step into i Step over. Рiзниця мiж ними полягає у способi трасування пiдпрограм. Коли виконується Step into i у поточному рядку зустручається звертання до функцiї, починається трасування операторiв цiєї функцiї, коли виконується Step over трасування операторiв функцiї не здiйснюється, всi її оператори виконуються в поточному кроцi.
Точку переривання можно створити наступним чином:
перемiстити курсор в те мiсце програми, де необхiдно встановити точку переривання ;
натиснути на клавiшу F9.
Мiсце встановлення точки переривання вiдзначається кружком злiва вiд вiдповiдного рядка програми у вiкнi з текстом програми. Для того, щоб вiдмiнити ("зняти") точку переривання, потрiбно повторно натиснути на клавiшу F9.
Встановивши точку переривання, можна запустити програму на виконання (вiдлагодження). Це здiйснюється при натисканнi на клавiшу F5. Якщо програма не була вiдкомпiльована, то здiйснюється компiляцiя та редагування зв'язкiв i виконання програми до найближчої точки переривання. При зупинцi програми в точцi переривання можна переглянути значення змiнних програми та продовжити виконання програми до наступної точки перивання чи в покроковому режимi.
Для виконання програми в покроковому режимi використовуються клавiшi F10 (Step over) чи F11 (Step into). Якщо пiд час трасування ми потрапили в оператори функцiї, а трасування її операторiв нам не потрiбне, то можна з допомогою клавiш Shift+F11 (Step out) припинити трасування операторiв функцiї таким чином якби це виконувалося трасування в режимi Step over.
Якщо вiдлагодження програми потрiбно взагалi припинити, то потрiбно натиснути на комбiнацiю клавiш Shift+F5.
На точку програми, яку трасується в даний момент вiдлагоджувач, вказує стрiлка жовтого кольору злiва вiд вiдповiдного рядка програми. При натисканнi на клавiшу покрокового виконання стрiлка змiщається на наступний рядок.
Основними засобами спостереження за зм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д час виконання програми.
Можна встановити декiлька вiкон Watch (до чотирьох).
Встановити вiкна спостереження можна з меню Debug/Windows, коли iнтегроване середовище знаходиться в режимi вiдлагодження.
Кожне з вiкон спостереження Autos, Locals, Watch i т.п. мають свої закладки i через цi закладки здiйснюється перемикання мiж цими вiкнами. Закрити зайвi вiкна можна стандартними засобами закривання вiкна.
Індивідуальні завдання
Текс програми
#include "stdio.h"
#include "math.h"
float f (float a, float b, float c);
int main ()
{
float s, t;
float res, res1, res2;
printf("Enter S\r\n");
scanf("%f", &s);
printf("Enter T\r\n");
scanf("%f", &t);
res1 = f(t,(-2*s),1.17);
res2 = f(2.2, t, (s-t));
res = res1 + res2;
printf("Result = %f\r\n", res);
return 0;
}
float f(float a, float b, float c)
{
float fun = (2*a-b-sin(c))/(5+fabs(c));
return fun;
}
Текс програми
#include "stdio.h"
#include "math.h"
int sum = 0, sum1 = 0;
int n=5;
int array[5];
int k;
float M;
void function1();
void function2();
int main()
{
for (k = 0; k < n; k++)
{
printf("Vvedit [%d]:", k);
scanf("%d", &array[k]);
}
function1();
function2();
return 0;
}
void function1()
{
for (k = 0; k < n; k++)
{
sum += array[k];
}
M = sum / n;
printf("%f\r\n", M);
}
void function2()
{
for(k = 0; k < n; k++)
{
sum1 += pow((array[k] - M),2);
}
float d = sqrtf(sum1 / (n-1));
printf("%f\r\n", d);
}
Задана квадратна матриця порядку 2n. Отримати нову матрицю,
переставляючи її блоки згідно із рисунком.
#include "stdio.h"
#include "math.h"
void ScanMat();
void PrintMat();
void Turn90();
void PrintTurnedMatrix();
int matrix[3][3];
int tm[3][3];
int main()
{
ScanMat();
PrintMat();
Turn90();
PrintTurnedMatrix();
return 0;
}
void ScanMat()
{
for(int i=0; i<=2; i++)
{
int z=0;
do
{
printf("Vvedit' [%d] [%d]:", i, z);
scanf("%d", &matrix[i][z]);
z++;
}
while (z<=2);
printf("\r\n");
}
}
void PrintMat()
{
printf("Your matrix is:\r\n");
for(int i=0; i<=2; i++)
{
int z=0;
do
{
printf("%d ", matrix[i][z]);
z++;
}
while (z<=2);
printf("\r\n");
}
}
void Turn90()
{
tm[0][0] = matrix[2][0];
tm[0][1] = matrix[1][0];
tm[0][2] = matrix[0][0];
tm[1][0] = matrix[2][1];
tm[1][1] = matrix[1][1];
tm[1][2] = matrix[0][1];
tm[2][0] = matrix[2][2];
tm[2][1] = matrix[1][2];
tm[2][2] = matrix[0][2];
}
void PrintTurnedMatrix()
{
printf("Your turned 90 matrix is: \r\n");
for(int i=0; i<=2; i++)
{
int z=0;
do
{
printf("%d", tm[i][z]);
z++;
}
while(z<=2);
printf("\r\n");
}
}
Висновок. Я познайомився із засобами відлагодження iнтегрованого середовища Visual C++ 2005; познайомитися iз засобами опису функцiй та виклику їх в мовi програмування С; познайомитися iз використанням масивiв в мовi програмування С.