Процедурное программирование

Содержание

Слайд 2

Ця функція може бути описана, як абстрактна операція сортування даних, що

Ця функція може бути описана, як абстрактна операція сортування даних, що може
може бути частиною вирішення деякої підмножини задач. Функція, що реалізує цю операцію, може бути використана у багатьох програмах, якщо вона створена як абстракція, що не залежить від контексту програми.
Функції мають параметри, тому їх операції узагальнені для використання будь-якими фактичними аргументами відповідного типу. Що є вхідними даними для функції ? Вхідними даними для неї є аргументи та глобальні структури даних, що використовуються функцією. Вихідними даними є ті значення, які функція повертає, а також зміни глобальних даних, модифікації. Будь-яка програма на мові С складається з функцій, причому одна з яких обов'язково повинна мати ім'я main().

Слайд 3

Функції

Функціями називають самостійні, логічно завершені
фрагменти програм, що мають власне ім’я та

Функції Функціями називають самостійні, логічно завершені фрагменти програм, що мають власне ім’я

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

Слайд 4

Всі функції, включаючи main ( ), рівноправні.
Особливість main ( )

Всі функції, включаючи main ( ), рівноправні. Особливість main ( ) у
у тому, що вона розпочинає
роботу програми, а її завершення означає кінець
виконання усієї програми. Саме в функції main ( )
найчастіше вказують основні кроки алгоритму. Кожна
функція С-програми записується окремо, вкладати
функції одна в одну не можна.
Функцію програми ( або групу функцій ) можна
відкомпілювати автономно і зберігати в окремому
obj-файлі. Об’єктні коди долучаються до складу
виконавчого коду програми на етапі редагування
зв’язків (компонування).

Слайд 5

Структура функцій

Синтаксис опису функції :
тип_поверт_значення ім'я_функції ([список_аргументів]) { оголошення внутрішніх змінних
       оператори

Структура функцій Синтаксис опису функції : тип_поверт_значення ім'я_функції ([список_аргументів]) { оголошення внутрішніх
тіла функції }
У заголовку вказується тип значення, яке повертає функція в
точку її виклику після завершення виконання. Тип значення,
яке повертається функцією може бути будь-яким, за
виключенням масиву та функції (але може бути покажчиком на
масив чи функцію). Якщо функція не повертає значення, то
вказується тип void.
Ім’я функції формується за правилами запису ідентифікаторів.

Слайд 6

Після імені функції в круглих дужках оголошується список
параметрів - їх

Після імені функції в круглих дужках оголошується список параметрів - їх називають
називають формальними параметрами або
аргументами функції. Кожен з параметрів оголошується у
списку із окремим зазначенням типу. Функція може мати
порожній список, але круглі дужки ( ) вказуються обов’язково.
/* піднесення дійсного числа до цілого степеня */
double Pow (double base, int n)
{
double prod;
for ( prod = 1.0; n>0; n-- )
prod *= base;
return prod;
}

Слайд 7

Тіло функції реалізує дії, які повинна виконати ця функція.
Внутрішні змінні,

Тіло функції реалізує дії, які повинна виконати ця функція. Внутрішні змінні, що
що необхідні для роботи функції, називають
локальними змінними. Вони оголошуються на початку тіла
функції перед першим оператором. В прикладі – це змінна prod
Областю дії внутрішніх змінних функції та її формальних
параметрів є область тіла даної функції. Такі змінні
створюються на час виконання функції і стають невизначеними
після її завершення.
Функція завершує роботу, коли виконано всі оператори її тіла
або коли зустрінеться оператор return . Якщо функція повертає
певне значення ( її тип відмінний від void ), то це значення має
бути передане через вираз, записаний в операторі return.
Значення виразу заноситься у буфер обміну, звідки його можна
отримати у тій точці програми, з якої викликають функцію.

Слайд 8

Виклик функції. Прототипи функцій.

Оператори тіла функції виконуються тоді, коли здійснюється
звертання

Виклик функції. Прототипи функцій. Оператори тіла функції виконуються тоді, коли здійснюється звертання
до функції. Виклик функції:
ім’я_функції ( список фактичних параметрів )
тут список фактичних параметрів – це послідовність виразів,
кожен з яких задає значення відповідного формального параметра
Значення, повернене функцією, можна використовувати у всіх
виразах як звичайний операнд, тип якого збігається з типом
значення функції.
Приклад звертання до функції Pow ( ) , оголошеної вище:
r = ( Pow (x, 3) – Pow (y, 4) )/2
Дозволяється автономно (через окремий оператор) викликати
функції, які повертають певне значення. У цьому випадку
значення, яке повертає функція, ігнорується. Приклад – виклик
бібліотечної функції printf (), яка повертає значення типу int.

Слайд 9

       Функції типу void (ті, що не повертають значення), подібні до процедур Паскаля.

Функції типу void (ті, що не повертають значення), подібні до процедур Паскаля.
Оператор func(); виконує функцію
void func() , тобто передасть керування функції, доки не виконаються усі її оператори. Коли функція поверне керування в основну програму, тобто завершить свою роботу, програма продовжить своє виконання з того місця, де розташовується наступний оператор за оператором func().
#include void func1(void); void func2(void); void main() {     func1();     func2(); } void func1 (void) {   /* тіло */ } void func2 (void) {    /* тіло */ }

Слайд 10

  Звернемо увагу на те, що текст програми починається з оголошення прототипів

Звернемо увагу на те, що текст програми починається з оголошення прототипів функцій
функцій - схематичних записів, що повідомляють компілятору ім'я та форму кожної функції у програмі. У великих програмах це правило примушує Вас планувати проекти функцій та реалізовувати їх таким чином, як вони були сплановані. Будь-яка невідповідність між прототипом (оголошенням) функції та її визначенням (заголовком) призведе до помилки компіляції. Кожна з оголошених функцій має бути визначена у програмі, тобто заповнена операторами, що її виконують. Спочатку йтиме заголовок функції, який повністю співпадає з оголошеним раніше прототипом функції, але без заключної крапки з комою. Фігурні дужки обмежують тіло функції. В середині функцій можливий виклик будь-яких інших функцій, але неможливо оголосити функцію в середині тіла іншої функції. Нагадаємо, що Паскаль дозволяє працювати із вкладеними процедурами та функціями. Прототипи стандартнних бібліотечних функцій записані у заголовочних файлах * .h

Слайд 11

       Приклад програми, що розв'язує тривіальне завдання - обчислює корені звичайного квадратного рівняння:

Приклад програми, що розв'язує тривіальне завдання - обчислює корені звичайного квадратного рівняння:

#include #include #include #include float A,B,C; /*функція прийому даних*/ void GetData() {        clrscr();        printf("Input A,B,C:");        scanf("%f%f%f",&A,&B,&C); }
/*функція запуску основних обчислень*/ void Run() {        float D;        float X1, X2;

Слайд 12

     
  if ((A==0) && (B!=0))        {               X1 = (-C)/B;               printf("\nRoot: %f",X1);               exit(0);        }        D = B*B - 4*A*C;        if (D<0)

if ((A==0) && (B!=0)) { X1 = (-C)/B; printf("\nRoot: %f",X1); exit(0); }
printf("\nNo roots...");        if (D==0)        {               X1=(-B)/(2*A);               printf("\nTwo equal roots: X1=X2=%f",X1);        }        if (D>0)        {               X1 = (-B+sqrt(D))/(2*A);               X2 = (-B-sqrt(D))/(2*A);               printf("\nRoot X1: %f\nRoot X2: %f",X1,X2);        } }
Имя файла: Процедурное-программирование-.pptx
Количество просмотров: 273
Количество скачиваний: 1