Міністерство освіти і науки
Національний університет “Львівська політехніка”
Кафедра ЕОМ
Звіт
з лабораторної роботи № 6
з дисципліни: “Основи алгоритмізації та програмування”
на тему: “Засоби вiдлагодження iнтегрованого середовища: вiкно спостереження за вмiстимим пам'ятi (Memory windows) i вiкно спостереження за за стеком викликiв (Call Stack). Розв'язування на С задач, в яких використовуються масиви типу char i рядки”
Мета лабораторної роботи
Познайомитися iз засобами вiдлагодження Memory windows та Call Stack iнтегрованого середовища Visual C++ 2005.
Познайомитися iз використанням масивiв типу char i рядкiв у мовi програмування С.
Теоретичні відомості
Засоби вiдлагодження Memory windows та Call Stack
З допомогою Memory windows можна спостерiгати за значеннями комiрок пам'ятi комп'ютера, в яких зберiгаються данi, пiд час виконання програми.
Для встановлення вiкна (чи вiкон) спостереження за пам'яттю використовується меню Debug/Windows/Memory iнтегрованого середовища Visual Studio.
Для перегляду конкретної областi пам'ятi потрiбно задати адресу цiєї областi. Отримати таку адресу можна у вiкнi Autos чи Locals. Для масивiв у цих вiкнах видається адреси першого елемента масиву, для простих змiнних адресу можна отриматм записуючи у вiкнi Watch вираз з операцiєю отримання адреси (операцiя &).
Вiкно Call Stack встановлюється з допомогою меню Debug/Windows/Call Stack. У виконавчих програмах побудованих компiлятором Visual C++ 2005 (до речi, як створених iншими компiляторами) передача параметрiв у функцiї здiйснюється через стек. З допомогою вiкна Call Stack можна вiдслiдковувати ланцюжок викликiв функцiй та значення параметрiв що передаються.
Символьнi масиви та рядки в мовi програмування С
Рядок це неперервна послiдовнiсть символiв, яка завершується символом '\0', так званим нуль-символом. Довжиною рядка вважається кiлькiсть символiв за винятком нуль-символа. В мовi С вiдсутнiй спецiальний рядковий тип, а тому вiдсутнi оператори для роботи з рядками.
Замiсть того рядки зберiгаються в масивах, елементами яких є елементи типу char. Бiблiотека стандартних функцiй С мiстить багато функцiй для виконання найвживанiших операцiй з рядками, таких як порiвняння, копiювання, об'єднання рядкiв тощо.
В наступнiй таблцi перелiченi найвживанiшi стандартнi функцiї для роботи з рядковими даними.
Призначення функцiї
Функцiя
Визначення довжини рядка
strlen( )
Копiювання рядка
strcpy( ), strncpy( )
Конкатенацiя рядкiв
strcat( ), strncat( )
Знаходження першого чи останнього входження заданого символа
strchr( ), strrchr( )
Знаходження першого входження деякого рядка
strstr( )
Встановлення всiх символiв блоку в задане значення
memset( )
Індивідуальне завдання
7-14. 7-14с(П.6.27). Задана послідовність символів, яка має наступний вигляд: d1± d2± . . . ± dn (di – цифри, n>1), за якими знаходиться крапка. Обчислити значення цієї алгебраїчної суми.
Хід виконання роботи
Використовуючи вище приведений опис, познайомитися iз засобами вiдлагодження: Memory windows та Call Stack середовища Visual C++ 2005.
Навчитися користуватися цими засобами.
Використовуючи вище приведений опис, познайомитися зi символьними масивами та рядками в мовi програмування С.
З допомогою вбудованого текстового редактора пiдготувати тексти програм, у яких використовують рядковi данi, вiдлагодити їх та отримати результати роботи програм.
Текст програми
7-14
#include <stdio.h>
#include<string.h>
#include<conio.h>
int main()
{
char c[100]="1,5,3,7,4,7,3,6,2,4.";
int s=0, i=0;
while(c[i-1]!='.')
{
switch (c[i])
{
case '0':case',':case'.':break;
case'1': {s+=1;break;}
case'2': {s+=2;break;}
case'3': {s+=3;break;}
case'4': {s+=4;break;}
case'5': {s+=5;break;}
case'6': {s+=6;break;}
case'7': {s+=7;break;}
case'8': {s+=8;break;}
case'9': {s+=9;break;}
default: break;
}
i++;
}
printf("%d",s);
_getch();
return 0;
}
Результат роботи програми
7-14
Висновок
Я познайомився iз засобами вiдлагодження Memory windows та Call Stack iнтегрованого середовища Visual C++ 2005, познайомився iз використанням масивiв типу char i рядкiв у мовi програмування С. Я написав програму, в якій використовується масиви типу char і рядки.