перейти к полному списку дипломных проектов
Ссылка на скачивания файла в формате .doc находится в конце странички
Ознакою кінця списку фактичних параметрів служить параметр з нульовим значенням
В останньому випадку перед використанням функції у програмі необхідно розмістити її опис, або прототип, інакше виникатимуть проблеми. Компілятор передусім послідовно перевіряє коректність виклику та використання об(єктів у програмі, при виявленні функції, яка не була описана чи визначена раніше, видасть повідомлення про помилку і вказівку про те, що функція повинна містити прототип. Те саме повідомлення Ви побачите на екрані, якщо використаєте у програмі функцію зі стандартних бібліотек і не під(єднаєте заголовний файл, у якому вона описана. Прототип функції користувача багато в чому нагадує заголовок функції і має наступний формат:
<тип><ім’я_функції>(<список_формальних_параметрів>);
Головною відмінністю є наявність в кінці опису крапки з комою.
Так, прототипи функцій з прикладів 1 та 2 матимуть вигляд:
cube(float);
op(char c, int, int);
Прототип надає компіляторові інформацію про тип та ім(я функції, а також про типи, кількість та порядок розміщення параметрів, які їй можна передавати. Зважаючи на це, імена формальних параметрів зазначати необов(язково. Прототип являє собою зразок для здійснення синтаксичної перевірки компілятором.
9.2 ПЕРЕДАЧА МАСИВІВ У ФУНКЦІЮ
Якщо в якості параметру функції використовується позначення масиву, необхідно передати до функції його розмірність.
Приклад 3: Обчислення суми елементів масиву
int sum (int n, int a[] )
{ int i, s=0;
for( i=0; i
s+=a[i];
return s;
}
void main()
{ int a[]={ 3, 5, 7, 9, 11, 13, 15 };
int s = sum( 7, a );
cout<
}
Рядки в якості фактичних параметрів можуть визначатися або як одновимірні масиви типу char[], або як вказівники типу char*. На відміну від звичайних масивів, для рядків немає необхідності явно вказувати довжину рядка, оскільки будь-який рядок обмежується нуль-символом.
При передачі у функцію двовимірного масиву в якості параметру так само необхідно задавати кінцеві розміри масиву у заголовку функції. Робити це можна:
а) явним чином (а[3][4] тоді функція працюватиме з масивами лише заданої розмірності);
б) можна спробувати для квадратної матриці через додатковий параметр ввести розмірність (void matrix(double x[][], int n)), де n – порядок квадратної матриці, а double x[][] – спроба визначення двовимірного масиву зі заздалегідь невизначеними розмірами. В результаті на таку спробу компілятор відповість: Error…: Size of type is unknown or zero;
в) найзручнішим вважається спосіб представлення та передачі двовимірної матриці за допомогою допоміжних масивів вказівників на одновимірні масиви, якими в даному випадку виступають рядки двовимірного масиву. Всі дії виконуються в межах рядків, розмір яких передається у функцію за допомогою додаткового формального параметру або з використанням глобальних змінних.
Приклад 4.
include
//Функція транспонування квадратної матриці
void trans (int n, double*p[])
{double x;
for (int i=0; i
for(int j=i+1; j
{x=p[i][j];
p[i][j]=p[j][i];
p[j][i]=x;
}
}
void main(){
// Задано масив для транспонування
double A[4][4]={11, 12, 13, 14
21, 22, 23, 24
31, 32, 33, 34
41, 42, 43, 44};
// Допоміжний двовимірний масив вказівників
double * ptr[]={(double*)A[0], (double*)A[1],
(double*)A[2], (double*)A[3]};
// Виклик функції
int n=4;
trans(n, ptr);
for(int i=0; i
{cout<<”\n Рядок ”<<(i+1)<<”:”;
for(int j=0; j
cout<<”\t”<< A[i][j];
}
}
9.3 ПЕРЕВАНТАЖЕННЯ ФУНКЦІЙ У С++
Перевантаження полягає в тому, що функція з одним іменем по різному виконується і повертає значення різних типів при передачі до неї фактичних параметрів у різній кількості та з різними типами. Для забезпечення перевантаження функцій необхідно для одного імені функції визначити заголовок і набір операторів для всіх функцій, що пов’язані з ним.
Приклад 5:
include
int max_element ( int n, int a[])
// знаходить максимальний елемент для масиву типу int
{
int max=a[0];
for ( i=1; i
if (a[i]>max) max=a[i];
return max;
}
long max_element ( int n, long a[])
// знаходить максимальний елемент для масиву типу long
{
long max=a[0];
for ( i=1; i
if (a[i]>max) max=a[i];
return max;
}
double max_element ( int n, double a[])
// знаходить максимальний елемент для масиву типу double
{
double max=a[0];
for ( i=1; i
if (a[i]>max) max=a[i];
return max;
}
float max_element ( int n, float a[])
// знаходить максимальний елемент для масиву типу float
{
float max=a[0];
for ( i=1; i
if (a[i]>max) max=a[i];
return max;
}
void main ( )
{
int x[]={10, 20, 30, 40, 50, 60};
long y[]={12L, 44L, 22L, 37L,30L};
int m1=max_element(6, x );
long m2=max_element(5, y);
}
9.4 ФУНКЦІЇ ЗІ ЗМІННОЮ КІЛЬКІСТЮ ПАРАМЕТРІВ
У мовах С та С++ допускаються функції, кількість параметрів у яких при компіляції не визначена. Крім того, можуть бути невідомими і типи параметрів. Кількість і типи параметрів стають відомими лише в момент виклику функції, коли явно задається список фактичних параметрів. Формат заголовку функції зі змінним переліком параметрів має вигляд:
<тип> <ім’я> (<специфікація_формальних_параметрів, …>)
Проте, кожна функція зі змінним переліком параметрів повинна мати механізм визначення їх кількості або типу. Для цього використовують два основні підходи:
1) Передача у функцію значення реальної кількості фактичних параметрів за допомогою одного або декількох обов’язкових параметрів;
2) Додавання до списку фактичних параметрів спеціального параметру-індикатора з унікальним значенням, яке буде сигналізувати про кінець списку.
Підхід (1) демонструє програма у прикладі 6, яка містить функцію зі змінним списком параметрів, перший з яких визначає кількість фактичних параметрів, що використовуються при викликанні функції:
Приклад 6:
include
// Функція сумує значення параметрів типу int
long summa (int k,…)// k – кількість параметрів, що додаються
{int *pik=k;// вказівник, що звертається до параметрів функції
long total = 0;
for (;k;k--)// поки не вичерпано список параметрів
total+=*(++pik);// відбувається додавання
return total;// повернення результату
}
void main()
{// додаватимуться два параметри
cout<<”\n summa(2, 6, 4)=”<< summa(2,6,4);
// кількість параметрів, які потрібно додати - 6
cout<<”\n summa(6, 1, 2,3,4,5,6)= ”<< summa(6, 1,2,3,4,5,6);
}
Результат виконання:
summa(2,6,4)=10
summa(6,1,2,3,4,5,6)=21
Наступний приклад 7 ілюструє 2-й підхід до обмеження змінного списку параметрів. Програма містить функцію для визначення добутку змінної кількості параметрів. Ознакою кінця списку фактичних параметрів служить параметр з нульовим значенням.
скачать бесплатно Мова програмування С
Содержание дипломной работы
Вказівними та операції над ними
5
h повинен бути залучений для всіх програм, що виводять дані на екран монітора або вводять дані з клавіатури
2) include< ім(я заголовного файла > - передбачена для залучення до тексту програми тексту файлу з каталогу “Заголовних файлів” INCLUDE, які постачаються разом зі стандартними бібліотеками
h>:
рrintf (<керуючий рядок>, <список аргументів>);
Керуючий рядок береться у лапки і вказує компілятору вигляд інформації, що виводиться
h>: clrscr() – очищує екран; textcolor(Колір) – задає колір символів; textbackground (Колір) – встановлює колір фону
2 ОПЕРАТОРИ РОЗГАЛУЖЕННЯ
Оператор умовного переходу if використовується для спрямування ходу програми за однією з гілок обчислень в залежності від певної умови
Цикл з післяумовою do – while:
Основна форма запису:
do
оператор;
while (умова);
де оператор – це простий, складовий чи порожній оператор
Різницею двох вказівників одного типу є відстань між двома областями пам’яті, кратна довжині (в байтах) об’єкта того типу, якому відповідає вказівник
Так, для збереження у масиві рядкової константи “Лабораторна робота з рядками”, необхідно описати масив char s[29]
h>) визначені наступні функції:
int getchar() - здійснює введення одного символу з вхідного потоку і повертає один байт інформації (символ) у вигляді значення типу int
Якщо в рядку вихідних даних більше за n-1 символів, наступне введення буде виконуватися з того ж рядка, починаючи з першого символу, що не був зчитаний
Якщо функція повертає значення, її виклик можна використати у правій частині операції присвоювання з метою передачі результату функції змінній, тип якої співпадає з типом функції, що викликається
Ознакою кінця списку фактичних параметрів служить параметр з нульовим значенням
Структури, пам’ять під які виділяється на етапі компіляції, можна ініціалізувати, перераховуючи значення їх елементів:
lab Lab10={10, “Структури”}
Язык программирования С++
Не обладая моделью АПО, мы, конечно, можем создать модель АТ