Главная Обратная связь

Дисциплины:






Домашня пiдготовка до роботи. 1. Вивчити синтаксис, призначення, принцип роботи і використання операторів мови СІ та основних функцій введення-виведення



1. Вивчити синтаксис, призначення, принцип роботи і використання операторів мови СІ та основних функцій введення-виведення.

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

а) табулювання функції (див. табл.1), що вибирається залежно від значення аргумента, на проміжку [a, b] з кроком табуляції h.

Таблиця 1

№ п/п Функції Умови для вибору функцій Крок, h Інтервал, [a,b]  
0.02 [0.5, 0.9]  
0.2 [2, 4]  
0.2 [4, 6]  
0.2 [2, 4]  
0.05 [0.1, 0.7]  
0.02 [0.5, 0.8]  
0.2 [3, 6]  
0.2 [1.5, 3.5]  
0.2 [4, 7]  
           
0.1 [2, 3]  
0.2 [3, 6]  
0.2 [0.5, 2]  
0.02 [0.2, 0.5]  
0.02 [0.4, 0.8]  
0.2 [7.5, 10]  
0.2 [2, 5]  
0.05 [0.3, 0.9]  
0.05 [-0.9, -0.4]  
0.05 [0.3, 0.9]  
0.3 [0.3, 3.5]  
0.3 [3, 6]  
           
0.2 [2, 5]  
0.5 [3, 8]  
0.2 [2, 5]  
0.2 [6, 9]  
0.5 [0,6, 1,2]  
0.2 [3, 6]  
0.1 [1.5, 3]  
0.5 [0, 5]  
0.3 [3, 9]  
0.1 [2, 4]  
           
0.2 [1, 4]  
0.05 [0.2, 0.9]  
0.2 [4, 7]  
0.3 [3, 9]  

 

б) табулювання функції, представленої рядом (див. табл.2), на інтервалі [a, b] з кроком табуляції hта абсолютною похибкою d. Оцінку похибки здійснювати за значенням модуля чергового члена ряду.

Таблиця 2

№ п/п Функція Інтервал, [a, b] Крок, h Похибка, d
[0.5, 0.7] 0.02 0.001
[0.1, 0.6] 0.05 0.001
[3, 4] 0.1 0.001
[0.2, 0.3] 0.01 10-6
[1.1, 2] 0.1 0.001
[-1, 1] 0.5 0.001
[-1, 1] 0.2 0.001
[-1, -0.9] 0.01 0.001
[-1, 1] 0.1 0.001
[0.1, 1] 0.1 0.001
[0, 1] 0.1 0.0001
[1, 2] 0.1 0.001
[3, 4] 0.1 0.001
, m=20 [0.1, 0.5] 0.05 0.001
, m=3 [0.1, 0.5] 0.05 0.001
[1, 1.2] 0.02 10-6
[1, 1.5] 0.05 10-5
[1, 1.5] 0.05 10-5
[0, 0.5] 0.05 0.001
[-0.5, 0] 0.05 0.001
[0.5, 0.9] 0.05 0.001
[0.5, 0.9] 0.05 0.001
[0.1, 0.2] 0.01 0.001
, m=20 [0, 0.5] 0.05 0.001
, m=9 [0, 0.5] 0.05 0.001
[1, 5] 0.5 0.001
[0.1, 0.6] 0.05 0.001
[-1, 1] 0.2 0.001
[0.1, 0.5] 0.05 0.0001
[0.5, 1] 0.05 0.00001
[1, 2] 0.1 0.0001
[3, 4] 0.1 0.001
[0.5, 0.9] 0.05 0.001
[1, 1.5] 0.05 10-5

ІНСТРУКЦІЯ ДО ЛАБОРАТОРНОЇ РОБОТИ № 3



РОБОТА З МАСИВАМИ. ВИКОРИСТАННЯ ФУНКЦІЙ

 

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

 

 

1. ОСНОВНІ ТЕОРЕТИЧНІ ВІДОМОСТІ

 

1.1. Функції.

1.1.1. Оголошення функції (прототип)

Синтаксис:

[<специфікація класу пам’яті>] [<специфікація типу>] <оголошувач>

( [<список аргументів>] );

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

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

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

Деякі приклади оголошень функцій:

add(int, int); /* приклад 1 */

double calc( ); /* приклад 2*/

voiddraw(void); /* приклад 3 */

voidbul(int a[n][n]); /* приклад 4 */

В першому прикладі оголошується функція з іменем add,яка приймає два аргументи типу int і повертає значення типу int.

В другому прикладі оголошується функція з іменем calc,яка повертаєзначення типуdouble.Список типів аргументів пустий.

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

В четвертому прикладі оголошується функція bul з типом що повертає значення void.Аргумент функції – двомірний масив (n – розмірність масиву) елементів цілого типу.

1.1.2. Оголошення функції

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

Крім явного оголошення, функція може бути оголошена неявно, по контексту її виклику. Неявне оголошення має місце в тому випадку, коли функція викликається без попереднього оголошення чи визначення. В цьому випадку компілятор мови Сі вважає, що функція, яка викликається, має тип значення що повертається int і клас пам’яті extern. Визначення функції, якщо воно є далі в тому ж самому файлі, може перевизначити тип значення що повертається і клас пам’яті.

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

Наприклад:

Main( )

{

int a = 0, b = 1;

float x = 2.0, y = 3.0;

doublerealadd(double, double);

a = intadd(a, b);

x = realadd(x, y);

}

intadd(a, b)

int a, b;

{

return(a + b); /* повертає значення типу int */

}

doublerealadd(x, y)

doublex, y;

{

return(x + y); /* повертає значення типу double */

}

 

В прикладі функція intadd оголошена неявно з типом значення що повертається int, оскільки вона викликана до свого визначення. Компілятор не перевірятиме типи аргументів при виклику даної функції, тому що список типів аргументів для неї не заданий.

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

1.1.3. Виклик функції.

Виклик функції передає управління і фактичні аргументи (якщо вони є) заданій функції.

Синтаксично виклик функції має вигляд:

<вираз> ([<список виразів>]);

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

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

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

Приклад:

Main( )

{

intadd(2, 3); /*Виклик функції intadd з передачею фактичних

аргументів 2, 3 заданій функції */

}

intadd(a, b) /*Визначення функції intadd з формальними аргументами

а, b */

int a, b;

{

. . . .

}

 

В даному прикладі показано присвоєння фактичних аргументів 2, 3 формальним аргументам a, b функції intadd. Виклик функції в такому випадку робить наступні дії:

a = 2;

b = 3;

 

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

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

1.1.4. Визначення функції.

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

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

Синтаксис визначення функції:

[<специфікація класу пам’яті>] [<специфікація типу>] <ім’я функції>

( [<список аргументів>] )

[<оголошення аргументів>]

<тіло функції>

У визначенні функції допускається вказівка специфікації класу пам’яті static чи extern (див. клас пам’яті).

Наявність списку аргументів і оголошень не є обов’язковою. Змінні, відмінні від аргументів, оголошуються в середині тіла функції.

Наприклад:

diff(x, y) /* функціяdiff з аргументами x, y */

intx, y;/* оголошення аргументів x, y */

{

inta, b; /*оголошення змінних а, b */

. . . .

}

 

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

Наприклад:

Main( )

{

float q, x, duff( );/* оголошення в програмі що викликається */

intn;

. . . .

q = duff(x, n);

. . . .

}

float duff(u, k)/* оголошення у визначенні функції */

float u;

intk;

{

float tor;

. . . .

return(tor);/* повертає значення типу float */

}

 

1.1.5. Передача значень функції

Аргументи використовуються для передачі значень із програми що викликається в функцію. Якщо значення змінних aі bбудуть 5 і 2, то при виклику

с = diff(a, b);

здійснюється передача цих значень змінним x і y. Значення 5 і 2 називаються фактичними аргументами, а змінні x і y,вказані в оголошені функціїdiff( ),–формальними аргументами.

Наприклад

Main( )

{

int c;

c = diff(5, 2);

}

diff(x, y)

intx, y;

{

int z;

z = x – y;

return(z);

}

 

Використання ключового слова returnдозволяє передавати у викликаючу програму одне значення із функції що викликається. В нашому прикладі змінній сприсвоюється значення змінноїzщо рівне3.





sdamzavas.net - 2020 год. Все права принадлежат их авторам! В случае нарушение авторского права, обращайтесь по форме обратной связи...