Ім'я файлу: звіт лаб 6_8.docx
Розширення: docx
Розмір: 2310кб.
Дата: 07.12.2022
скачати

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА"



Звіт

з лабораторної роботи № 6-8

З дисципліни «Програмування , частина 1»
Виконав:

Прийняв:

Доц. Каф.
Львів - 2022

Мета роботи: ознайомитися із загальною структурою побудови програм на мові С, навчитися використовувати функції введення та виведення даних а також ознайомитися з синтаксисом арифметичних операцій, їх пріоритетом застосувань, навчитися їх використовувати для обчислень математичних виразів, і звичайно навчитись здійснювати програмування обчислювального процесу з використанням арифметичних операцій та математичних функцій на мові С.

Теоретичні відомості

Програма на мові С складається з однієї або більше функцій і хоча б одна з них повинна називатися main( ).

Опис функції складається з заголовку та тіла. Заголовок у свою чергу містить директиви препроцесора типу #include тощо, що під’єднують бібліотечні файли та специфікують перетворення тексту програми перед компіляцією; а також ім’я функції.

Ознакою імені функції служать круглі дужки. Тіло функції поміщається в фігурні дужки та є набором операторів (команд), кожен із яких закінчується символом “ ; “- крапка з комою.

Елементом програми є коментар - частина тексту програми для пояснення окремих операторів, що входять до її складу. Коментар не впливає на виконання операторів і записується таким чином : //текст коментарю або так: /* текст коментарю*/ .

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

Оголошення змінної задає ім’я та атрибути змінної. Визначення змінної, крім задання імені та її атрибутів, приводить до виділення для неї пам’яті.

Програма може містити довільне число директив, вказівок компілятору, оголошень та визначень. Їх синтаксис розглядатиметься нижче. Порядок появи цих елементів у програмі є важливий.



В даному прикладі заголовочний файл stdio.h потрібен для використання стандартних функцій введення-виведення (printf - друк інформації на екран та scanf - введення з клавіатури).

Кожен стандартний заголовочний файл являє собою набір оголошень деяких функцій, а кожна стандартна функція оголошується в певному заголовочному файлі. Для того, шоб використати в програмі деяку стандартну функцію, потрібно напочатку програми підключити відповідний заголовочний файл. Iмена стандартних функцій та назви відповідних заголовочних файлів містяться в довідниках.

Наприклад:заголовочний файл math.h робить доступними математичні функції, в тому числі функцію cos.

У наведеній програмі значення змінних вводяться за допомогою операції присвоєння, що є не зовсім зручним, особливо коли змінних багато. Таке введення даних також вимагає наявності початкового тексту програми та його компіляції при кожній їх зміні.

Результат обчислення (змінні z i w) взагалі не візуалізується. Для здійснення цього необхідно застосувати засоби взаємодії з програмою – функції printf() і scanf(). Це не єдині функції, якими можна користуватися для введення і виведення даних з допомогою програм на мові С, але вони найбільш 4 універсальні.

Вказані функції не входять в опис мови С і реалізація операцій введеннявиведення покладається на розробників компілятора, що дає можливість більш ефективно організовувати їх на конкретних машинах. Функції printf() і scanf() працюють подібно – кожна використовує «керуючий рядок» і «список аргументів».

Функція printf(). Інструкції, що передаються функції printf(), якщо необхідно надрукувати деяку змінну, залежать від типу змінної. Наприклад, при виведенні на друк цілого числа застосовується формат %d, а при виведенні символа – %с.





Символ \n означає переведення на новий рядок: надрукувавши текст на екрані, машина переставить курсор на початок наступного рядку, отже те, що буде друкуватися далі, з'явиться на наступному рядку. Формат, що вказується при зверненні до функції printf() має наступний вигляд:

Printf(Керуючий рядок,аргумент1,аргумент2,.........,);

Аргумент1, аргумент2 і т.д. – це друковані параметри, які можуть бути змінними, константами або навіть виразами, що обчислюються спочатку, перед виведенням на друк.

Керуючий рядок – рядок символів, що показує як повинні бути надруковані параметри. Наприклад у операторі printf(“ %d метрів тканини коштувало %f гривень.\n”, a,c); керуючим рядком служить фраза в лапках (враховуючи попередні зауваження, це – рядок символів), а а і b аргументи або в даному випадку значення двох змінних.

Функція scanf(). Подібно до функції printf() для функції scanf() вказуються керуючий рядок і слідуючий за нею список аргументів. Основна відмінність цих двох функцій полягає в особливостях даного списку.

Функція printf() використовує імена змінних, константи та вирази, тоді як функція scanf() – тільки вказівники на змінні. Якщо необхідно ввести деяке значення та присвоїти його змінній одного з основних типів, то перед іменем змінної необхідно написати символ &. Якщо необхідно ввести значення рядкової змінної, використовувати символ & необов’язково.

Робота функції. Виконувана програма зупиняється і система переходить у режим очікування введення даного. В цей час монітор комп’ютера темний і 10 миготить курсор. Користувач набирає на клавіатурі значення змінної та натискає клавішу вводу Enter. В результаті виконання цієї функції змінній буде присвоєно певне значення, що введене з клавіатури. Для кращого розуміння функціонування створюваної програми перед функцією введення даних варто застосовувати функцію виведення на монітор, зокрема printf().

Функція scanf() використовує практично той самий набір символів специфікації перетворення , що й функція printf().

Головні відмінності для функції scanf() наступні:

1. Відсутня специфікація %g.

2. Специфікації %f і %e еквівалентні. Обидві специфікації допускають наявність (або відсутність) знаку, рядка цифр із десятковою точкою або без неї і поля показникастепені.

3. Для читання цілих чисел типу short застосовується специфікація %h.

Функції getchar() і putchar(). Функція getchar() отримує один символ, що поступає з пульта термінала і передає його програмі, що виконується в даний момент. Функція putchar() отримує один символ, що поступає з програми та пересилає його для виведення на екран.

Функція getchar() аргументів не має, тобто при її виклику в круглих дужках не поміщається жодна величина. Вона отримує черговий поступаючий символ і сама повертає його значення виконуваній програмі.

Функція putchar() має один аргумент. При її виклику необхідно в дужках вказати символ, який необхідно вивести на друк. Аргументом може бути одиночний символ (включаючи знаки, що представляються керуючими послідовностями, змінна або функція значенням якої є один символ).



Мова С була розроблена в процесі створення операційної системи UNIX, тому можна зрозуміти, які принципові можливості в ній реалізовані: це максимальна гнучкість при діалоговому режимі роботи комп’ютера, представлення повідомлень системи і користувача в максимально простій і зрозумілій формі і, водночас, спроможність вибору адекватної реакції в найскладніших ситуаціях. Мова С поєднує в собі можливості прямої адресації і побітових операцій, як в Ассемблері, з використанням великої кількості (декілька сотень) функцій найвищого рівня. При використанні бібліотеки графічних функцій мова С отримала практично необмежені можливості для розробки діалогових програмних засобів.

Проте, мова С має суттєвий недолік з точки зору потреб розробки радіотехнічних задач: тут недостатньо розвинені операції арифметики, зокрема, повністю відсутня комплексна арифметика, і ії імітація призводить до генерування недостатньо ефективних кодів, що значно збільшує потреби часу при проведенні значних за обсягом математичних обчислень.

Сервісна оболонка мови C призначена для розробки та відладки програм і включає в себе засоби роботи з файлами, їх редагування, запуску виконуваних файлів, а також різноманітні режими компіляції і збірки виконуваного модуля, розвинуті засоби відлагоджування програми - детальна діагностика помилок, 2 можливість виконання по кроках з переглядом проміжних результатів, можливість прослідковувати вміст певних змінних тощо.

Всі дані, якими оперує мова С, підрозділяються на типи. Кожен тип даних 4 має свій спосіб запису в пам’яті ЕОМ, і, отже, займає чітко визначену ділянку. Компілятор мови С вимагає попереднього визначення типів абсолютно всіх даних, які використовуються в програмі, для того, щоб визначити спосіб і місце розміщення їх у пам’яті. При недотриманні цих вимог робота компілятора припиняється.

Коли в програмі застосовуються ідентифікатори змінних величин, перед їх використанням обов'язково повинний бути опис типу кожної змінної, наприклад:

char ch;

int count = 1;

char* name = "Bob";

float f; double df[20];

Дані розрізняються числові та текстові. Однобайтне представлення цілого числа може бути використане як за прямим призначенням, так і для ідентифікації коду символа текстових даних.

Існують стандартні (ASCII, а також декілька альтернативних) таблиці символів, які містять 256 цілих кодів, що відповідають найбільш поширеним текстовим символам. Можна вважати, що текстові дані представляються в пам'яті посимвольно послідовністю цілих однобайтових чисел. Таким чином, в мові "С" визначаються дані типу «char», які мають довжину 1 байт і можуть містити беззнакове ціле число від 0 до 255 (або від 0 до 127 зі знаком) або символьний код з таблиці.

Більшість цілих чисел в залежності від своєї величини та від апаратної реалізації ЕОМ можуть мати тип:

char - 1 байт; (символьний);

int - 2 байти;

long int - 4 байти.

Беззнакові цілі представляються модифікаціями типів «unsigned».:

unsigned char;

unsigned short int;

unsigned int;

5 unsigned long int.

Арифметичні операції над числами в мові С записуються за синтаксисом, що звичний для всіх. Проте існує погодження про пріоритет виконання арифметичних операцій.

За пріоритетом можна виділити такі групи (всередині груп пріоритет однаковий, кожна подальша група має нижчий пріоритет) як в даній таблиці



Розглянемо деякі приклади. Операція додавання повертає суму чисел



Операції *, /, % мають більший пріоритет, ніж + , - , і інші операції.



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



Операції присвоювання. В мові С знак = не означає дорівнює, він означає операцію присвоювання деякого значення змінній. Тобто зміст рядка виду «а=1024» не виражається словами «а дорівнює 1024», замість цього потрібно казати так: «привоїти змінній а значення 1024».

Перелік операцій присвоювання мови представлено в даній таблиці



У стандартну математичну бібліотеку мови С входить безліч спеціальних математичних функцій, які потрібно знати і вміти використовувати. Для того, щоб використовувати ці функції в своїй програмі, необхідно підключити заголовний файл, який містить опис цих функцій, що робиться рядком на початку програми:

#include <math.h>.

math.h — заголовний файл стандартної бібліотеки мови програмування С, який надає прототипи функцій, розроблених для виконання простих математичних операцій.

Функція від одного аргументу викликається, наприклад, так: sin (x). Замість числа x може бути будь-яке число, змінна або вираз. Функція повертає значення, яке можна вивести на екран, привласнити іншій змінній або використовувати у виразі.





Усі функції, які приймають або повертають значення кута, працюють з радіанами.

Розглянемо приклади використання деяких математичних функцій.

У наступному прикладі розраховується косинус від 1.23 радіана за допомогою функцій cos і cosl .

Аргумент і значення, що повертається функції cos, задаються числом з плаваючою точкою подвійної точності (тип double, точність не менше десяти значущих десяткових цифр, розрядність - 64). Аргумент і значення, що повертається функцією cosl, є числами з плаваючою комою з високою точністю (тип long double, точність не менше десяти значущих десяткових цифр, розрядність - 80).



Зверніть увагу на точність отриманих результатів. У косинуса, розрахованого за допомогою функції cos, буде менша точність, а у розрахованого за допомогою функції cosl - більша.

У наступному прикладі розглянуто використання функції pow, яка підносить аргумент x до ступеня y. При цьому аргументи і значення, що повертає функція pow, задаються числами з плаваючою точкою подвійної точності (тип double, точність не менше десяти значущих десяткових цифр, розрядність - 64).

Аргументи і значення, що повертає функція powl, задаються числами з плаваючою комою з високою точністю (тип long double, точність не менше десяти значущих десяткових цифр, розрядність - 80).

У прикладі число 2.6 зводиться до степеня 3.45 за допомогою функцій pow і powl.



Хід роботи: 6

1.



2.

3.

4.

5.

6.

7.

Хід роботи: 7

1.



2.

3.

4.

5.

6.

7.

8.

9.

Хід роботи: 8

1.

2.

3.

4.

5.

Висновок: на цих лабораторних роботах я ознайомився із загальною структурою побудови програм на мові С, навчився використовувати функції введення та виведення даних а також ознайомився з синтаксисом арифметичних операцій, і їх пріоритетом застосувань, навчився їх використовувати для обчислень математичних виразів, і звичайно навчився здійснювати програмування обчислювального процесу з використанням арифметичних операцій та математичних функцій на мові С.


скачати

© Усі права захищені
написати до нас