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

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

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

Рік:
2024
Тип роботи:
Інші
Предмет:
Алгоритмічні мови та програмування
Група:
АВ

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

МІНІСТЕРСТВО ОСВІТИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”  АЛГОРИТМІЧНА МОВА ПРОГРАМУВАННЯ Сі ПРОГРАМИ З РОЗГАЛУЖЕНИМИ ТА ЦИКЛІЧНИМИ АЛГОРИТМАМИ ІНСТРУКЦІЯ ДО ЛАБОРАТОРНОЇ РОБОТИ № 5 З КУРСУ “АЛГОРИТМІЧНІ МОВИ І ПРОГРАМУВАННЯ” для студентів спеціальності 6.0914 “Комп’ютеризовані системи, автоматика і управління” та студентів спеціальності 7.1601 “Інформаційна безпека” Затверджено на засiданнi кафедри "Автоматика та телемеханiка" Протокол №3 від 12.09.2002 р. Львів 2003 Програми з розгалуженими та циклічними алгоритмами (мова Сі) : Інструкція до лабораторної роботи №5 з курсу “Алгоритмічні мови і програмування” для студентів спеціальності 6.0914 “Комп’ютеризовані системи, автоматика і управління” та студентів спеціальності 7.1601 “Інформаційна безпека” / Укл.: В.І.Отенко, А.Є. Лагун, Р.А. Гордійчук, І.Я. Тишик – Львів: НУЛП, 2002.- 19 с. Укладачі: В.І. Отенко, к.т.н, доцент, А.Є. Лагун, к.т.н, доцент, Р.А. Гордійчук, ст. викл., І.Я. Тишик, ст. викл. Відповідальний за випуск І. М. Ковела, к.т.н., доцент, Рецензент: В.В. Самотий, д.т.н., професор. Мета роботи – вивчити оператори мови Сі та основні функції введення-виведення даних, навчитися складати та відлагоджувати розрахункові програми з розгалуженими та циклічними структурами. ОСНОВНІ ТЕОРЕТИЧНІ ВІДОМОСТІ Оператори є основними елементами, із яких будується програма на мові Cі. Оператор є закінченою інструкцією для комп’ютера. Ознакою оператора є символ “ ; ”, що його завершує. Тому, наприклад, якщо number = 4 є виразом (який може бути частиною більшого виразу), то number = 4; є оператором. 1.1. Пустий оператор “ ; ”. Пустий оператор – це оператор, який складається лише із крапки з комою “ ; ”. Синтаксис: ; Даний оператор може з’являтися в довільній частині програми, де за синтаксисом може знаходитись оператор. Виконання пустого оператора не змінює стану програми. Пустий оператор найчастіше використовується тоді, коли за синтаксисом необхідна наявність оператора, який б не виконував ніяких дій, зокрема в операторах do, for, if, while. Приклад: for(i = 0; i < 10; i++) ; В наведеному прикладі у третьому виразі оператора циклу for значення змінної і інкрементується, доки і не стане рівним 10. 1.2. Оператор-вираз. Синтаксис: <вираз>; Оператор-вираз може бути записаний лише там, де по синтаксису допустимий оператор. Приклад: x = y + 3; /* приклад 1*/ x++; /* приклад 2*/ f(x); /* приклад 3*/ В першому прикладі змінній х присвоюється значення y + 3. В другому прикладі змінна х інкрементується. В третьому прикладі показанно вираз виклику функції. 1.3. Умовний оператор if. Умовний оператор дає змогу змінити хід виконання програми залежно від результату перевірки значення деякого виразу логічного типу. Синтаксис: if <вираз> <оператор1> [else <оператор2>] де if, else – ключові слова мови Cі; <вираз> – вираз логічного типу; <оператор1> – оператор, який виконується, якщо значення виразу <вираз> є істинне (true); <оператор2> – довільний оператор, який виконується, якщо значення виразу <вираз> не є істинне (false). Частина умовного оператора обмежена квадратними дужками є необов’язковою. Якщо значення виразу <вираз> є false, однак конструкція else пропущена, то керування передається на оператор, що знаходиться в програмі за оператором if. Приклад: if (a < 10) a = 10; else a = 15; В даному прикладі показано, що змінній а присвоюється значення 10 тоді, коли значення виразу (a < 10) – true, тобто умова виконується; в іншому випадку, якщо значення виразу false, (тобто (а > = 10) або (а > 10)), змінній а присвоюється значення 15. В одному операторі можна використовувати стільки конструкцій else if, скільки потрібно, що ілюструється на даному прикладі: if (a < 10) a = 10; else if (a < 15) a = 15; else if (a < 20) a = 20; else a = 25; Існує правило, яке говорить, що else відповідає найближчому if, крім тих випадків, коли присутні фігурні дужки. Приклад1: if (number > 6) if (number < 12) printf (“Вивід змінних … ”); else printf (“Вивід змінних завершено ! ”); При виконанні програми результат буде наступним: Число Результат 5 Немає 10 Вивід змінних … 15 Вивід змінних завершено ! Якщо ми хочемо, щоб else відповідав першому if , необхідно даний фрагмент оформити наступним чином: if (number > 6) { if (number < 12) printf (“Вивід змінних … ”); } else printf (“Вивід змінних завершено !”); Тепер результат виглядатиме так: Число Результат 5 Вивід змінних завершено ! 10 Вивід змінних … 15 Немає В мові Сі є короткий спосіб запису одного із видів оператора if else. Він називається “Умовним виразом” і використовує операцію умови ? : . Ця операція складається із двох частин і містить три операнда. Нижче наводиться приклад оператора, за допомогою якого знаходиться абсолютне значення числа: x = (y < 0 ) ? –y : y; Cенс оператора полягає у наступному: Якщо y < 0 то x = -y; в іншому випадку x = y. В загальному випадку умовний вираз можна записати наступним чином: <вираз1> ? <вираз2> : <вираз3>; 1.4. Оператор циклу з передумовою while. Оператор циклу while визначає ччоперації, які циклічно виконуються до тих пір, поки вираз, що перевіряється не стане false або рівним 0. Оператор while – це цикл з передумовою; рішення, чи виконувати в черговий раз тіло циклу, приймається перед початком його проходження. Оператор, що утворює тіло циклу, може бути або простим або складеним. Синтаксис простого оператора: while (вираз) /*простий оператор*/ <oператор> Приклад: while (i < 0) printf(“Значення змінної і від’ємне”); Оператор виконується в тому випадку, коли i < 0. Якщо значення і буде більшим чи рівним 0 ((i > 0) чи (і >= 0)), то тіло оператора while взагалі не буде виконуватись і управління зразу перейде на наступний за тілом циклу оператор програми. Синтаксис складеного оператора : while (вираз) /*складений оператор*/ { <oператор1> <oператор2> } Приклад: while (i < 10) { i = 0; i++; printf(“Значення змінної і = %d”, i ); } 1.5. Оператор покрокового циклу for. В операторі for використовуються три вирази, що керують роботою циклу; вони розділені символами “ ; ”. Синтаксис: for( [<ініціалізація>]; [<умовний вираз>]; [<корекція>]) <oператор> Тіло оператора циклу for виконується до тих пір, поки <умовний вираз> не стане false або рівним 0. Якщо він із самого початку false, то тіло циклу не буде виконано жодного разу. <Ініціалізація> і <корекція> використовуються для ініціалізації і модифікації параметрів циклу чи інших значень. Ініціалізуючий вираз (якщо він є) обчислюється тільки один раз до початку виконання якого-небудь із операторів циклу. Потім обчислюється умовний вираз і проводиться його оцінка наступним чином: Якщо вираз що перевіряється true (не рівний нулю), то тіло циклу виконується один раз. Потім обчислюється величина виразу що коректується, і значення виразу що перевіряється визначається знову. Якщо <умовний вираз> пропущений, то його значення приймається за істину і процес виконання продовжується. В цьому випадку оператор циклу for пердставляє собою безкінечний цикл, який може завершитись тільки при виконанні в його тілі операторів break, goto, return. Якщо умовний вираз не істинний, то виконання оператора for завершується і управління передається наступному за ним оператору в програмі. Оператор for – це цикл з передумовою: рішення, виконати в черговий раз тіло циклу чи ні, приймається до початку його проходження. Тому може бути так, що тіло циклу не буде виконано ні разу. Оператор, що утворює тіло циклу, може бути як простим (приклад 1), так і складеним (приклад2) Приклад1: for( n = 0; n < 10; n++) printf( “%d”, n); Приклад2: for( n = 0; n < 10; n++) { k = 5 * b; printf( “%d”, k); } В даних прикладах тіло циклу виконується до тих пір, поки умова що перевіряється (n < 10), не стане false чи рівна нулю. Операція “,” пов’язує два вирази в один і гарантує, що самий лівий вираз буде обчислюватись першим. Приклад: for( а = 1, в = 0; в < 10; a * = 2) b + = a ; 1.6. Оператор циклу з післяумовою do while . Оператор do while визначає дії, які циклічно виконуються до тих пір, поки вираз не стане false, чи рівним 0. Оператор do while – цикл з післяумовою; рішення, виконувати чи не виконувати в черговий раз тіло циклу, приймається після його проходження. Тому тіло циклу буде виконуватись по крайній мірі один раз. Оператор, що утворює тіло циклу, може бути як простим, так і складеним. Форма запису: do <оператор> while (вираз) Виконання оператора повторюється до тих пір, поки вираз не стане false, чи рівним 0. Наприклад: do scanf (“%d”, &number); while (number ! = 20) Оператори switch і break. Загальна структура оператора switch: switch(цілий вираз) { case константа1: <оператори> (необов’язкові) case константа2: <оператори> (необов’язкові) . . . . default: <оператори> (необов’язкові) } Управління в програмі передається оператору, у якого в якості міток використовується значення деякого виразу. Потім в процесі проходження програми будуть виконуватись оператори, що залишились, поки не відбудеться новий перехід. Як вирази, так і мітки повинні мати значення цілого типу (включаючи тип char); мітки повинні бути константами чи константними виразами. Якщо деякому значенню виразу не відповідає ніяка мітка, управління передається оператору з міткою default (якщо такий є в програмі). В протилежному випадку управління передається оператору, що знаходиться за оператором switch (приклад ). Приклад: switch(number) { case 1: printf(“Номер 1-ший”); break; case 2: printf(“Номер 2-гий”); break; . . . . default: printf(“Інші номера…”); break; } Цей приклад слугує ілюстрацією роботи оператора switch. Спочатку обчислюється вираз в дужках, розташованого за ключовим словом switch. В даному випадку значенням цього виразу буде символ, присвоєний змінній number, яким ми ввели перед цим. Далі програма переглядає список “міток” (в цьому прикладі case 1; , case 2: і т.д.) доки не знайде “мітку”, яка відповідає даному значенню, і виконує оператор розташований після “мітки”. Наступний етап – програма переходить до виконання оператора, що розташований в цій стрічці. Якщо такої “мітки” не знаходиться і якщо існує стрічка з “міткою” case default: , то буде виконуватись оператор, що позначений цією “міткою”. В іншому випадку відбудеться перехід до оператора, розташованому за оператором switch. Виконання оператора break приводить до того, що в програмі відбувається вихід із оператора switch і здійснюється перехід до наступного оператора, що знаходиться за даним. При відсутності оператора break будуть виконані всі оператори, починаючи з поміченого даною “міткою” і закінчуючи оператором switch. Ключові слова: break, continue, goto . Ці три команди викликають перехід від одного оператора програми до іншого, розташованого в іншому місці (в тілі програми). break Оператор break можна використовувати з любою із трьох форм циклу і з оператором switch. Вона приводить до того, що управління програмою “ігнорує” залишок циклу чи оператор switch, що містить цей залишок, і поновлює виконання програми з оператора, що знаходиться за циклом чи оператором switch (див. попередній приклад). Якщо оператор break знаходиться в середині деякої сукупності вкладених структур, його дія розповсюджується тільки на саму внутрішню структуру, в якій він безпосередньо знаходиться. continue Оператор continue може використовуватись в любій з трьох форм циклів, но не в операторі switch. Його виконання приводить до такої зміни логіки програми, що решту операторів циклу пропускаються. Для циклів while чи for в слід за цим починається новий крок, а для циклу do while перевіряється умова на виході, і потім, якщо вона виявляється істинною, виконується наступна ітерація. Приклад: while(number != 0) { if(number = = 2) continue; printf(“number = %d”, number); } goto Bиконання оператора goto викликає передачу управління в програмі оператору, поміченому вказаною міткою. Для відокремлення оператора від відповідної йому мітки використовується двокрапка “ : “ . Імена міток утворюються по тим же правилам, що й імена змінних. Позначений оператор може появитися в програмі текстуально до чи після goto. Форма запису: goto мітка; . . . . . мітка: оператор; Приклад: top : number = 1; . . . . . if(number = = 0) goto top; 2. ЗАВДАННЯ 2.1. Домашня пiдготовка до роботи 1. Вивчити синтаксис, призначення, принцип роботи і використання операторів мови СІ та основних функцій введення-виведення. 2. Скласти блок-схеми алгоритмів та програми мовою СІ для табулювання функцій. Забезпечити ввід значень інтервалу, кроку і похибки табулювання з клавіатури і вивід результатів на дисплей. Дані для роботи беруться з таблиць 1 і 2 за вказівкою викладача: а) табулювання функції (див. табл.1), що вибирається залежно від значення аргумента, на проміжку [a, b] з кроком табуляції h. Таблиця 1 № п/п Функції Умови для вибору функцій Крок, h Інтервал, [a,b]  1   0.02 [0.5, 0.9]  2   0.2 [2, 4]  3   0.2 [4, 6]  4   0.2 [2, 4]  5   0.05 [0.1, 0.7]  6   0.02 [0.5, 0.8]  7   0.2 [3, 6]  8   0.2 [1.5, 3.5]  9   0.2 [4, 7]  10   0.1 [2, 3]  11   0.2 [3, 6]  12   0.2 [0.5, 2]  13   0.01 [0.2, 0.5]  14   0.02 [0.4, 0.8]  15   0.2 [7.5, 10]  16   0.2 [2, 5]  17   0.05 [0.3, 0.9]  18   0.05 [-0.9, -0.4]  19   0.05 [0.3, 0.9]  20   0.3 [0.3, 3.5]  21   0.3 [3, 6]  22   0.2 [2, 5]  23   0.2 [3, 8]  24   0.2 [2, 5]  25   0.2 [6, 9]   б) табулювання функції, представленої рядом (див. табл.2), на інтервалі [a, b] з кроком табуляції h та абсолютною похибкою d. Оцінку похибки здійснювати за значенням модуля чергового члена ряду. Таблиця 2 № п/п Функція Інтервал, [a, b] Крок, h Похибка, d  1  [0.5, 0.7] 0.05 0.001  2  [0.1, 0.6] 0.05 0.001  3  [3, 4] 0.1 0.001  4  [0.2, 0.3] 0.01 10-6  5  [1.1, 2] 0.1 0.001  6  [-1, 1] 0.5 0.001  7  [-1, 1] 0.2 0.001  8  [-1, -0.9] 0.01 0.001  9  [-1, 1] 0.1 0.001  10  [0.1, 1] 0.1 0.001  11  [0, 1] 0.1 0.0001  12  [1, 2] 0.1 0.001  13  [3, 4] 0.1 0.001  14 , m=20 [0.1, 0.5] 0.05 0.001  15 , m=3 [0.1, 0.5] 0.05 0.001  16  [1, 1.2] 0.02 10-6  17  [1, 1.5] 0.05 10-5  18  [1, 1.5] 0.05 10-5  19  [0, 0.5] 0.05 0.001  20  [-0.5, 0] 0.05 0.001  21  [0.5, 0.9] 0.05 0.001  22  [0.5, 0.9] 0.05 0.001  23  [0, 0.2] 0.02 0.001  24 , m=20 [0, 0.5] 0.05 0.001  25 , m=9 [0, 0.5] 0.05 0.001   2.2. Робота в лабораторії Ввести в комп'ютер програму, написану мовою CI згідно з отриманим завданням. Відлагодити програму. При необхідності скоригувати блок-схему алгоритму та програму у відповідності з виявленими логічними та синтаксичними помилками. Остаточні версії блок-схеми, програми та отримані результати занести у звіт з лабораторної роботи. Здати звіт з лабораторної роботи. 3. ЗМIСТ ЗВIТУ Номер і назва лабораторної роботи. Повний текст завдання. Остаточна версія блок-схеми алгоритму. Список ідентифікаторів констант, змінних, функцій, використаних у блок-схемі алгоритму і програмі, та їх пояснення. Остаточна версія програми. Результати роботи програми. СПИСОК ЛIТЕРАТУРИ Керниган Б., Ритчи Д., Фоюэр А. Язык программирования Си. Задачи по языку Си: Пер. с англ. – М. : Финансы и статистика, 1985. Бочков С.О., Субботин Д.М. Язык программирования для персонального компьютера. – М.: СП «Диалог» «Радио и связь» 1990. Уэйт М., Прата С., Мартин Д. Язык Си. Руководство для начинающих: Пер. с англ. – М. : Мир, 1988. Проценко В.С., Чаленко П.Й., Ставровський А.Б. Техніка програмування мовою СІ. - Київ: Видавництво «Либідь», 1993. Навчальне видання АЛГОРИТМІЧНА МОВА ПРОГРАМУВАННЯ Сі ПРОГРАМИ З РОЗГАЛУЖЕНИМИ ТА ЦИКЛІЧНИМИ АЛГОРИТМАМИ ІНСТРУКЦІЯ ДО ЛАБОРАТОРНОЇ РОБОТИ № 5 З КУРСУ “АЛГОРИТМІЧНІ МОВИ І ПРОГРАМУВАННЯ” для студентів спеціальності 6.0914 “Комп’ютеризовані системи, автоматика і управління” та студентів спеціальності 7.1601 “Інформаційна безпека” Укладачі: В.І. Отенко, к.т.н, доцент, А.Є. Лагун, к.т.н, доцент, Р.А. Гордійчук, ст. викл., І.Я. Тишик, ст. викл. Львів: Національний університет “Львівська політехніка”
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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