Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LabCi-IPPT_final.doc
Скачиваний:
4
Добавлен:
27.04.2019
Размер:
1.12 Mб
Скачать

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

Мова програмування С дає можливість реалізувати концепцію функціональної декомпозиції задачі. Функціональної декомпозиція полягає в розбитті задачі на окремі прості підзадачі. Ці підзадачі реалізуються за допомогою функцій. Окремі функції об’єднують у спільну програму. Відкомпільована програма утворює модуль.

Розрізняють стандартні функції (scanf(), cos(), sqrt(), strlen() тощо) та функції користувача. Стандартні функції описані у бібліотеках (stdio.h, math.h, stdlib.h, string.h тощо), прототипи яких підключаються до програми за допомогою директиви передпроцесора #include. Функції користувача перед використанням необхідно оголосити або створити прототип.

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

<тип> назва_функції(<список формальних параметрів>)

{

<Тіло функції>;

return (назва змінної);

}

Тип задає тип результату, який функція повертає у місце виклику. Якщо функція не повертає жодного результату, то її оголошують з ключовим словом void. Якщо тип результату не вказати, то функція за замовчуванням повертає дане цілого типу – int. У тілі функції записують оператори, які задають дію функції. Результат виконання функції передається в точку виклику за допомогою оператора return. Виклик функції можна здійснити з головної або любої іншої функції програми. Приклад оголошення функції price:

float price(float c, int n)

{ float s;

s=c*n;

return (s);

}

Формат опису (створення прототипу) функці:

<типї>назва_функції(<список формальних параметрів>);

Приклади опису прототипу функцій:

int rez1(int a, int b, int c);

float price(float c, int n);

void vyvid_rez(double, char);

Ф ормат оператора виклику функці:

назва_функції(<список фактичних параметрів>);

ідент. = назва_функції(<список фактичних параметрів>);

Список фактичних параметрів може містити константи, змінні, вказівники, вирази, оператори виклику інших функцій. Списки фактичних і формальних параметрів повинні бути узгодженими за кількістю елементів та їх типами. Приклад виклику функції: price(2.5, sqrt(а)+7).

Приклад виконання лабораторної роботи

Постановка задачі. Написати функцію, яка забезпечить рішення квадратного рівняння. Крім цього на екран повинно виводитися прізвище та ім'я автора, номер групи та назва програми.

Граф-схема алгоритму програми

Блок 1 – початок алгоритму.

Блок 2 – введення коефіцієнтів при невідомих і вільного члена квадратного рівняння.

Блок 3 – виклик функції розв’язку квадратних рівнянь.

Блок 4 - виведення коренів квадратного рівняння на екран.

Блок 5 – закінчення алгоритму.

Код програми мовою с

#include <stdio.h>

#include <stdlib.h>

void kvadratne (int a,int b,int c);

int main(int argc, char *argv[])

{

int a,b,c;

puts("(c) Yatsunda Y.V. KI-22");

puts("Rishenja kvadratnogo rivnjanja");

puts("Vvedit koeficientu kvadratnogo rivnjanja");

scanf("%d %d %d",&a,&b,&c);

kvadratne(a,b,c);

puts(" ");

puts("Press any key to exit");

system("PAUSE");

return 0;

}

void kvadratne(int a, int b, int c)

{

float D,x1,x2;

D=b*b-4*a*c;

if (D==0)

{

x1=-b/(2*a);

x2=x1;

printf("Koreni rivjanja\n x1=%f\n x2=%f",x1,x2);

}

else if (D<0) puts("Koreni kompleksni");

else {

x1=(-b+sqrt(D))/(2*a);

x2=(-b-sqrt(D))/(2*a);

printf("Koreni rivnjanja x1=%f x2=%f",x1,x2);

}

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]