Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
О
Факультет:
КН
Кафедра:
Кафедра ЕОМ

Інформація про роботу

Рік:
2024
Тип роботи:
Задача
Предмет:
Основи алгоритмізації та програмування

Частина тексту файла (без зображень, графіків і формул):

Національний університет „Львівська політехніка” Кафедра ЕОМ Звіт з дисципліни: “Основи алгоритмізації та програмування” З лабораторної роботи №6 На тему « Засоби відлагодження інтегрованого середовища: в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 програмування С. Засоби відлагодження Memory windows та Call Stack  Засоби Memory windows та Call Stack є бiльш "тонкими" iнструментами вiдлагодження. З допомогою 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 конкретної програми iз книжки Мартынов Н.Н. Информатика: С для начинающих.-М.:КУДИЦ-ОБРАЗ, 2006. Вiзьмемо програму Лiстинг 3.11: #include <stdio.h> #include <math.h> double ArrAver( int ar[], int size ); double ArrDisp( int ar[], int size ); int main( void ) { int size; double Disp; int Arr[] = { 1,6,3,2,5,1,77,-18,99,16,45,12,-45,54, 567,-123,5,9,-4,67,-17,44,2,3,9,5,34, 11,-11,234,67,82,91,3,7,5,-32,-56,-77, 678,-987,456,-123,555,3,78,1,93,-4,37, 2,33,6,543,-88,37,66,-66,777,12,-45,567, 999,888,3,-765,34,89,-37,41,333,56,-987 }; size = sizeof( Arr ) / sizeof( int ); Disp = ArrDisp( Arr, size ); printf( "Disp is %Lf\n", Disp ); return 0; } double ArrAver( int ar[], int size ) { int i, Sum = 0; for( i = 0; i < size; i++ ) Sum = Sum + ar[i]; return Sum / size; } double ArrDisp( int ar[], int size ) { double Aver, dSum = 0; int i; Aver = ArrAver( ar, size); for( i = 0; i < size; i++ ) dSum = dSum + ( ar[i] - Aver ) * ( ar[i] - Aver ); return sqrt( dSum / size ); } Вiдкомпiлювавши цю програму i зробивши декiлька крокiв Step over (чи Step into), отримаємо: Беремо аресу за якою в пам'ятi розмiщений масив Arr - 0x00012fe24 i заносимо її в поле Address вiкна Memory 1. Пiсля цього у ньому отримаємо значення елементiв масиву Arr. У вiкнi Memory 1 ми бачимо значення у внутрiшньому кодi процесора комп'ютера. Кожне число типу int у внутрiшньому представленнi займає 4 байти. Першим (злiва) є молодший байт числа, а останнiм (четвертим) - старший байт. Вiд'ємнi числа представленi у доповняльному кодi. Так число 1 представлене як 00 00 00 01 (у вiкнi Memory 1 навпаки - молодший байт злiва), число 6 - 00 00 00 06, число 77 - 00 00 00 4d, а число -18 - ff ff ff ee. Примiтка, тут для зручностi значення окремих байтiв роздiло пробiлом, а фактично це одне 32-розрядне число. В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я main викликає функцiю ArrDisp, а вона, в свою чергу, викликає функцiю ArrAver. Функцiя main, в свою чергу викликається iз iнтегрованого середовища, яка включає ще два виклики. Індивідуальні завдання Перевірити чи в задану послідовність символів входить кожна із букв слова key. #include "stdio.h" #include "string.h" int main() { char str1[] = "the first step in char massiv is key to the programming"; char k[] = "k"; char e[] = "e"; char y[] = "y"; char *ach; ach = strchr(str1, k[0]); if (ach!=NULL) printf("K in phrase\r\n"); ach = strchr(str1, e[0]); if (ach!=NULL) printf("E is phrase \r\n", ach); ach = strchr(str1, y[0]); if (ach!=NULL) printf("Y is phrase\r\n"); return 0; }  Висновок Я познайомитися iз засобами вiдлагодження Memory windows та Call Stack iнтегрованого середовища Visual C++ 2005 та з використанням масивiв типу char i рядкiв у мовi програмування С.
Антиботан аватар за замовчуванням

25.12.2017 11:12-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!