Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторні роботи.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
6.67 Mб
Скачать

Лабораторна робота №6 «Вивчення операцій порівняння і реалізація циклічних операцій» Ціль роботи

  • вивчити методи реалізації циклів на мові асемблер для AVR-мікроконтролерів

  • вивчити методи реалізації порівнянь на мові асемблер для AVR-мікроконтролерів

Програма виконання роботи

- реалізувати аналог циклу for з інкрементуванням параметру мови програмування C у асемблері для AVR мікроконтролерів

- реалізувати аналог циклу for з декрементуванням параметру мови програмування C у асемблері для AVR мікроконтролерів

- реалізувати аналог циклу for довільною зміною параметру мови програмування C у асемблері для AVR мікроконтролерів

- реалізувати аналог циклу for з використанням операторами continue і break мови програмування C у асемблері для AVR мікроконтролерів. Використати операції порівняння

- реалізувати аналог циклу while мови програмування C у асемблері для AVR мікроконтролерів

- реалізувати аналог циклу do-while мови програмування C у асемблері для AVR мікроконтролерів

Додатковий теоретичний матеріал необхідний для виконання лабораторної роботи

Цикл while з передумовою мови програмування C

Цикл while з передумовою дозволяє виконати одну і ту ж послідовність дій поки перевіряєма умова ІСТИНА. При цьому умова записується до тіла циклу і перевіряється до виконання тіла циклу.

При виконанні циклу while спочатку перевіряється умова. Якщо воно НЕ ІСТИНА, то цикл не виконується і управління передається на наступну інструкцію після тіла циклу while. Якщо умова ІСТИНА, то виконується інструкція (блок інструкцій), після чого умова перевіряється знову. Так продовжується до тих пір, поки умова буде ІСТИНОЮ. Як тільки умова стане НЕ ІСТИНОЮ, робота циклу завершиться і управління передасться наступної інструкції після циклу.

Синтаксис

while (логічна умова)

{

блок операцій

}

Цикл do-while з післяумовою мови програмування C

Цикл do-while з післяумовою відрізняється від циклу з передумовою тим, що спочатку виконується блок циклу, а потім перевіряється умова. Якщо умова ІСТИНА, то цикл буде виконаний ще раз, і так до тих пір, поки умова буде ІСТИНОЮ.

Синтаксис циклу з післяумовою такий (зверніть увагу на обов'язкову крапку з комою після умови):

do

{

блок операцій

}

while (логічна умова);

Оскільки умова перевіряється після виконання тіла циклу, то блок циклу з післяумовою завжди буде виконаний хоча б один раз, незалежно від істинності умови. Це може привести до помилок, тому використовувати цикл do-while з післяумовою слід тільки тоді, коли це дійсно спрощує алгоритм.

Цикл for мови програмування C

Дуже часто виникає необхідність виконати одну і ту ж послідовність дій кілька разів: наприклад, для обчислення виразу необхідно виконати множення на величину a (n-1) раз. Для цього використовуються цикли – зокрема цикл for.

Розглянемо задачу обчислення суми всіх натуральних чисел від 1 до n. Для цього заведемо змінну s, і до неї будемо додавати значення змінної i, де i буде приймати всі значення від 1 до n. На мові C + + це можна зробити за допомогою циклу for наступним чином:

Синтаксис

for (ініціалізація початкових значень; умова виконання циклу; дії в кінці тіла кожного циклу)

{

блок операцій

}

При використанні циклу for необхідно задати три параметри (в круглих дужках через крапку з комою).

Перший параметр (ініціалізація початкового(их) значення(ь)) - початкове значення змінної, задається у вигляді привласнення змінній значення( наприклад i = 1).

Другий параметр (умова виконання циклу) - кінцеве значення змінної(их), задається у вигляді умови на значення змінної(х). (Наприклад, ) Цикл буде виконуватися, поки умова істинна.

Третій параметр – дія(ї) після виконання тіла кожного циклу – найчастіше це крок зміни змінної, яка об’явлена у першому параметрі. Запис означає, що змінна i буде збільшуватися на 1 з кожним новим виконанням циклу, запис - зменшуватися на одиницю.

Якщо хочеться, щоб значення змінної в циклі змінювалося не на 1, а на іншу величину, то це можна зробити, наприклад, так: .

Оператор break мови програмування C

Цей оператор відноситься до керуючих операторів. Він може використовуватися в операторі switch, де часто це просто необхідно, а також у циклах будь-якого з трьох типів. Коли в ході виконання програми зустрічається вказаний оператор, його виконання призводить до виходу з конструкцій switch, for, while або do-while, в яких він міститься, і переходу до наступного оператору (після вище вказаних контрукйцій програми (наприклад, на наступний оператор після циклу, якщо оператор break зустрівся у тілі цього циклу). Якщо оператор break знаходиться всередині певної сукупності вкладених структур, його дія поширюється тільки на саму внутрішню структуру, в якій він безпосередньо міститься.

Буває, що break використовується для виходу з циклу в тих випадках, коли задані два різних умови припинення його роботи (одна умова вказану у операторі циклу, а вихід по іншій умові здійснюється оператором break).

Наприклад:

while (умова 1)

{

if (умова 2) break;

}

Оператор continue мови програмування C

Цей оператор може використовуватися у всіх трьох типах циклів, але не використовуватися у операторі switch. Як і у випадку оператора break, він призводить до зміни характеру виконання програми. Однак замість завершення роботи циклу наявність оператора continue викликає пропуск "решти" частини ітерації і перехід до початку наступної.

Наприклад:

for (ініціалізація початкових значень; умова виконання циклу; дії в кінці тіла кожного циклу)

{

if (умова) continue;

}

Деталізований приклад:

for (unsigned int ; ; )

{

операції до оператора continue

if (умова) continue;

операції після оператора continue

}

У випадку, якщо умова оператора if справджується, то операції після оператора continue не виконуються, а параметр i інкрементується і перевіряється умова подальшого виконання циклу. Якщо при новій ітерації умова оператора if не справджується. то операції після оператора continue будуть виконуватися.