Міністерство освіти і науки, молоді та спорту України
Національний університет „Львівська політехніка”
Кафедра ЕОМ
Лабораторна робота
з дисципліни: “Основи логарифмізації та програмування”
на тему: “Засоби вiдлагодження iнтегрованого середовища Visual C++ 2005: точки переривання, покрокове виконання. Розв'язування на С задач, в яких використовуються числовi масиви та визначення i виклик функцій”
Львів – 2012
Мета роботи:
познайомитися iз основними засобами вiдлагодження iнтегрованого середовища Visual C++ 2005;
познайомитися iз засобами опису функцiй та виклику їх в мовi програмування С;
познайомитися iз використанням масивiв в мовi програмування С.
Теоретичні відомості:
Засоби вiдлагодження iнтегрованого середовища Visual Studio 2005
У Visual Studio основними можна вважати такi засоби:
точки переривання;
покрокове виконання програми;
вiкно спостереження за змiнними класу auto;
вiкно спостереження за локальними змiнними;
вiкно спостереження за змiнними чи виразами (вiкно Watch).
Точка переривання - це мiсце в програмi, в якiй виконання програми буде призупинине. В програмi можна встановити довiльну кiлькiсть точок переривання.
Точку переривання можно створити наступним чином:
перемiстити курсор в те мiсце програми, де необхiдно встановити точку переривання ;
натиснути на клавiшу F9.
Масиви в мовi програмування С
Оператори будь-якої програми на мовi С розмiщенi у функцiях. Кожна функцiя виконує певне завдання. iм'я main( ) є спецiальним iменем тiєї функцiї, з якої починається виконання програми. iншi функцiї є пiдпрограмами функцiї main( ). Кожна функцiя описується лише один раз. В програмi може бути описано довiльна кiлькiсть функцiй. Кожна описана функцiя може викликатися стiльки раз скiльки необхiдно.
Опис функцiї складається iз заголовку функцiї та блоку - тiла функцiї. В заголовку функцiї задається iм'я функцiї та тип результату, який функцiя повертає, i тип та iмена її параметрiв (якщо вони потрiбнi). Оператори тiла функцiї визначають, якi дiї виконує функцiя. Загальний формат опису функцiї:
тип iм'я ( опис_параметрiв ) { оператори_тiла_функцiї }
Тут iм'я задає iм'я функцiї, а тип складається з принаймнi одного специфiкатора формату, який визначає тип результату, який повертає функцiя. Тип результату, що повертається, може бути типу void чи будь-якого типу об'єкта крiм масиву. Крiм того тип може включати специфiкатори класу пам'ятi extern i static .
Функцiя не може повертати, як результат, функцiю чи масив, проте вона може повертати вказiвник на функцiю чи масив.
Опис_параметрiв - це список описiв параметрiв функцiї роздiлених комами. Якщо функцiя не має параметрiв, то цей список може бути порожнiй чи складатися з єдиного слова void.
Масиви в мовi програмування
Масиви мiстять об'єкти заданого типу, якi послiдовно розмiщенi в неперервному блоцi пам'ятi. Окремi об'єкти називаються елементами масиву. Тип елементiв може бути будь-яким об'єктим типом.
Масиви є об'єктами також; їх тип є типом його елементiв. Точнiше, тип масиву визначається типом i числом його елементiв.
Формат опису масиву є наступним:
тип iм'я [ кiлькiсть_елементiв ];
Кiлькiсть_елементiв мiж квадратними дужками ([ ]) мусить бути цiлим виразом, значення якого має бути бiльшим за нуль.
Розмiр пам'ятi, яку займає масив можна визначити з допомогою операцiї sizeof. Розмiр масиву в пам'ятi завжди рiвний розмiру одного елемента помноженого на кiлькiстьелементiв масиву. Так для масиву buffer iз нашого прикладу вираз sizeof(buffer) рiвний величинi 2048 * sizeof(char). iншими словами, масив займає 2048 байт пам'ятi, тому що sizeof(char) завжди рiвний одиницi.
Доступ до окремих елементiв масиву здiйснюється з допомогою операцiї iндексацiї [ ]. Якщо myArray це iм'я масиву, а i - змiна цiлого типу, то myArray[i] позначає елемент масиву з iндексом i. Елементи масиву iндексується починаючи з 0. Таким чином, якщо кiлькiсть елементiв в масивi рiвний len, то останнiй елемент масиву буде мати iндекс len-1. Індекс масиву може бути будь-яким виразом цiлого типу. Операцiя iндексацiї не виконує жодних перевiрок виходу за межi масиву. Вiдповiдальнiсть за вихiд за межi масиву покладається на програмiста.
Порядок роботи:
Використовуючи вище приведений опис, познайомитися iз основнимизасобами вiдлагодження iнтегрованого середовища Visual C++ 2005.
Навчитися користуватися цими засобами.
Використовуючи вище приведений опис, познайомитися зi засобами опису функцiй та виклику функцiй в мовi програмування С.
Використовуючи вище приведений опис, познайомитися зi засобами опису масивiв та операцiями доступу до окремих елементiв масиву в мовi програмування С.
З допомогою вбудованого текстового редактора пiдготувати тексти програм, у яких використовують засоби опису масивiв та iндексацiї масивiв, вiдлагодити їх та отримати результати роботи програм.
Індивiдуальнi завдання:
1)
/
2) Задані дійсні числа x1, x2, . . . , x55. Обчислити x1(x2+x3)(x4+x5+x6)(x7+x8+x9+x10) . . . (x46+x47+ . . . +x55)
3) Заповнити матрицю випадковими числами. Вiдобразити матрицю симетрично вiдносно головної дiагоналi.
Тексти програм та результати їх роботи:
#include <stdio.h>#include <conio.h>double g(double a, double b);int main(){double s;double t;double res;printf("Vvedit s:\n");scanf("%lf", &s);printf("vvedit t:\n");scanf("%lf", &t);res = g(1.2,s)+ g(t,s)+g(2*s,s*t);printf("%lf", res);getch();return 0;}double g(double a, double b){return (a*a+b*b)/(a*a+2*a*b+3*b*b+4);}
Ввідні дані: s = 21, t = 9 Ввідні дані: s = 7, t = 54
Результат: 0.913495 Результат: 1,399206
2) #include <stdio.h>
#include <stdlib.h>
#define N 55
int main (void)
{
int x[N];
int i,j,k, sum, num;
long long int y;
srand (78);
printf ("Before:\n");
for (i = 0; i < N; i++)
{
x[i] = (rand () / (float)RAND_MAX) * 10 + 1;
printf ("%-8d ", x[i]);
}
i = 1;
k = 0;
y = 1L;
while (k < N)
{
sum = 0;
for (j=0; j<i; j++)
{
if (k < N)
{
sum += x[k];
k++;
}
}
i++;
y *= sum;
}
printf ("\n%lld", y);
return 0;
}
Результат:
Before:
1 9 2 4 9 8 7 1 7
3 9 10 8 4 5 8 2 7
5 5 9 9 5 5 4 4 7
3 1 6 3 4 2 8 8 5
7 10 3 6 10 6 3 2 9
8 4 3 5 3 9 8 9 3
4
23134972557312Press any key to continue . . .
3)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define row 9
#define column 9
int main()
{
int a[row][column];
int i, j;
srand(time(NULL));
printf("Pochatkova matrutsya:\n\n");
for(i=0; i<row;i++)
{
for(j=0; j<column;j++)
{
a[i][j]=1+rand()%9;
printf("%d\t",a[i][j]);
}
printf("\n");
}
printf("\nObernena matrutsya:\n\n");
for(i=0; i<column; i++)
{
for(j=0;j<row; j++)
{
printf("%d\t",a[j][i]);
}
printf("\n");
}
return 0;
}
Результат:
Pochatkova matrutsua: Obernena matrutsua:
9 3 6 2 6 1 1 9 5 9 7 2 7 3 5 1 6 9
7 7 2 5 3 8 4 3 4 3 7 3 6 3 9 3 4 8
2 3 4 4 4 9 3 1 8 6 2 4 7 2 5 4 4 6
7 6 7 8 2 2 5 2 5 2 5 4 8 3 3 4 2 7
3 3 2 3 8 8 6 3 3 6 3 4 2 8 8 8 6 5
5 9 5 3 8 4 4 7 6 1 8 9 2 8 4 2 5 2
1 3 4 4 8 2 9 1 2 1 4 3 5 6 4 9 4 3
6 4 4 2 6 5 4 9 1 9 3 1 2 3 7 1 9 4
9 8 6 7 5 2 3 4 2 5 4 8 5 3 6 2 1 2
Висновок:
на цій лабораторній роботі я познайомився iз основними засобами вiдлагодження iнтегрованого середовища Visual C++ 2005, познайомився iз засобами опису функцiй та їх виклику, і познайомився iз використанням масивiв в мовi програмування С.