У нас: 141825 рефератів
Щойно додані Реферати Тор 100
Скористайтеся пошуком, наприклад Реферат        Грубий пошук Точний пошук
Вхід в абонемент



Лабораторна робота - Функції
2

Лабораторна робота

Тема:

 

Функції

Мета роботи: вивчення засобiв мови Сi для програмування проце-

дур, оволодiння прийомами складання алгоритмiв i

програм з пiдпрограмами.

Завдання 1: Майстерня отримала замовлення на виготовлення циліндричних бочок різної висоти, але діаметр основи кожної з них d=80 см. Скласти програму для визначення кількості бляхи (в квадратних одиницях ); потрібної для випуску 10 бочок висотою 1м, 15 бочок - 0.9м, 20 бочок - 0.7м. Повна поверхня циліндра дорівнює:

, де R - родіус основи.

Обчислити як процедуру-функцію.

Завдання 2: Обчислити сполучення з n елементів по m (n<m)

Обчислення факторіала виконати у вигляді підпрограми.

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

Мова Сi дозволяє використовувати лише один вид пiдпрограми:

процедуру-функцiю з параметрами. Характерною особливiстю процедури-функцiї є наявнiсть багатьох вхiдних параметрiв i одного вихiдного, який присвоюється iменi функцiї. Всi пiдпрограми повиннi

бути оголошенi в головнiй або пiдпорядкованих програмах. Оголошення процедури-функцiї має такий вигляд:

ТПЗ IПФ(СТП);,

де ТПЗ – тип значення, яке повертає процедура-функцiя;

IПФ – iм’я процедури-функцiї, iдентифiкатор;

СТП – список типiв дiйсних параметрiв.

Крiм оголошення, функцiя має бути визначена, тобто має бути вказано, що ця функцiя власне виконує. Визначення функцiї має вигляд:

ТПЗ IПФ(СФП){ОЗП;ТПФ;},

де:СФП - список формальних параметрiв i їх типiв;

ОЗП - оголошення внутрiшнiх (власних) змiнних функцiї;

ТПФ - тiло процедури, оператори та вирази.

Тiло процедури-функцiї може мiстити один або декiлька операторiв return(вираз); Його виконання приводить до завершення процедури i повернення в програму, з якої функцiя викликалася. Якщо цей оператор має вираз, то його значення присвоюється iменi процедури i є результатом її виконання. Формальнi параметри функцiї,

якщо вони є, локалiзованi в її тiлi, пам’ять пiд них дублюється.

Локалiзованими є також внутрiшнi змiннi функцiї, їх значення теж

втрачаються пiсля виходу з процедури, якщо вони не мають клас пам’ятi static. Звернення до процедури-функцiї в головнiй програмi

вiдбувається шляхом вказування її iменi, пiсля якого в круглих

дужках дається список дiйсних параметрiв.

Забороняється передавати масиви в якостi параметрiв функцiї.

Натомiсть можна використовувати вказівники на масиви. Масиви в

процедурi не дублюються.

Звернення до процедури графiчно вiдображається за допомогою

прямокутника з подвоєними бiчними сторонами.

Завдання 1

Ідентифікація змінних:

Змінна | Висота |

Діаметр | Радіус | Площа | Кількість

бочок | р

Ідентифікатор | Н | d | r | S | n | Pi

Програма:

/*Програма*/

main()

{

int n[3]={10,15,20},i;

float plos(float),H[3]={1,0.9,0.7},S=0;

clrscr();

for(i=0;i<3;i++)

{

S+=plos(H[i])*n[i];

}

printf("Потрiбно %.3f м.кв.бляхи",S);

getch();

}

/*Функцiя*/

float plos(float H)

{

float Pi=3.14,d=0.8,r,y;

r=d/2;

y=2*Pi*r*(H+r);

return y;

}

Результати: Потрiбно 139.416 м.кв.бляхи.

Завдання 2

Ідентифікація змінних:

Змінна | n | m | x!

Ідентифікатор | Сnm | n | m | fact(x)

Програма:

/*Програма*/

main()

{

int n,m;

float fact(int),Cnm;

clrscr();

vvid:printf("Введiть n=");

scanf("%d",&n);

printf("Введiть m=");

scanf("%d",&m);

if(n>=m)

{

printf("Невiдповiдає умовi - n<m !!!\nПовторiть ввiд!\n");

goto vvid;

}

Cnm=fact(n)/fact(m)/fact(n-m);

printf(" C%d%d=%f",n,m,Cnm);

getch();

}

/*Функцiя-обчислення факторiала*/

float fact(int x)

{

int y,z=1;

if(x>0)for(y=1;y<=x;y++)z*=y;

else

if(x<0)for(y=-1;y>=x;y--)z*=y;

else

z=1;

return z;

}

Результати: C01=-1.000000; C02=0.250000; C03=-0.027778

C12=-0.500000; C13=0.083333; C14=-0.006944 і т.д.

Висновок: Я вивчив засоби мови Сi для програмування процедур, оволодiв прийомами складання алгоритмiв i програм з пiдпрограмами.

Блок-схема 1

Блок-схема 2