Основи програмування

Методичні вказівки щодо програмування лінійних та розгалужених обчислювальних процесів і задач циклічної структури. Опис перетворення та будування матриць. Робота з покажчиками та динамічними масивами. Програмування задач з використанням функцій.

Рубрика Программирование, компьютеры и кибернетика
Вид методичка
Язык украинский
Дата добавления 28.07.2017
Размер файла 40,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ

Запорізький національний технічний університет

Методичні вказівки

до лабораторних робіт

з дисциплін: “Основи програмування” та “Алгоритмізація та програмування”

для студентів професійних напрямків

6.050103 «Програмна інженерія»,

6.050101 «Комп'ютерні науки»

2013

Методичні вказівки до лабораторних робіт з дисциплін “Основи програмування” та “Алгоритмізація та програмування” для студентів професійних напрямків 6.050103 «Програмна інженерія», 6.050101 «Комп'ютерні науки» (Частина 1) / Укл.: Г.В. Неласа, Л.Ю. Дейнега - Запоріжжя: ЗНТУ, 2012. - 31 с.

Укладачі: Г.В. Неласа, доцент, канд. техн. Наук Л.Ю. Дейнега, старший викладач програмування матриця масив функція

Рецензент: Г.В. Табунщик, доцент, канд. техн. наук

Відповідальний за випуск: Г.В. Неласа, доцент, канд. техн. наук

Затверджено

на засіданні кафедри

програмних засобів

Протокол № 1

від “22” серпня 2013

ВСТУП

Дисципліна “Основи програмування” є базовою для подальшого вивчення більшості спеціальних дисциплін спеціальності “ Програмне забезпечення систем”.

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

Особливу увагу треба приділяти правильному оформленню звітів з лабораторних робіт. Звіт повинен містити: титульний аркуш (приклад титульного аркушу наведено в додатку А); мету, варіант i завдання роботи; лаконічний опис теоретичних відомостей; блок-схеми алгоритмів вирішення задач; текст програми, що обов'язково містить коментарі; вхiднi та вихiднi дані програми; змістовний аналіз отриманих результатів та висновки.

Звіт виконують на білому папері формату A4 (210 x 297 мм). Текст розміщують тільки з однієї сторони листа. Поля сторінки з усіх боків - 20 мм. Для набору тексту звіту використовують редактор MS Word: шрифт Times New Roman, 14 пунктів. Міжрядковий інтервал: полуторний - для тексту звіту, одинарний - для листингів програм і роздруківок скріншотів.

Індивідуальні завдання на лабораторні роботи взяти із [1] відповідно до варіанту. Ім'я файлу програми складається з трьох частин: номер лабораторної роботи, номер варіанту і номер завдання.(Наприклад:L1_18_456a - лабораторна робота № 1, 18 варіант, завдання 456а).

Лабораторна робота 1. Програмування лінійних та розгалужених обчислювальних процесів

Мета роботи

Одержати знання та навички, необхідні для програмування лінійних та розгалужених процесів; придбати та закріпити, на прикладі створення програм, елементарні знання з алгоритмічної мови програмування С++.

Завдання на лабораторну роботу

1. Ознайомитися зі змістом теоретичних відомостей даних методичних вказівок.

2. Скласти та виконати на ПЕОМ програми з таблиці 1.1 відповідно до варіанту.

3. Оформити звіт та захистити роботу.

Таблиця 1.1 - Індивідуальні завдання до лабораторної роботи 1

№ варіанта

Номери задач

№ варіанта

Номери задач

1

2, 67г, 53, 31к

15

23в, 44, 60г, 59з

2

11а, 67в, 29, 34а

16

23г, 43, 60в, 68а

3

11б, 67б, 33а, 32д

17

24, 76е, 60б, 67д

4

11в, 67а, 57а, 32е

18

25а, 41, 60а, 68б

5

11г, 66, 42, 32г

19

25б, 40, 57а, 72а

6

11д, 65, 59а, 32в

20

28, 39, 51, 74

7

11е, 64, 59б, 32б

21

30, 38, 50, 73

8

11ж, 63, 59в, 31л

22

31а, 36, 46, 76а

9

16, 62, 59г, 33а

23

31б, 35б, 45, 76б

10

17, 61, 59д, 57г

24

31в, 35а, 44, 76в

11

21, 47б, 59е, 57в

25

31г, 34б, 43, 76г

12

22, 47а, 59ж, 57б

26

31е, 33в, 41, 76д

13

23а, 46, 60е, 67д

27

31ж, 33б, 11е, 59і

14

23б, 45, 60д, 58а

28

32а, 20, 35б, 59к

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

Програма зберігається у файлі з розширенням .срр, заголовочні файли у файлах з розширенням .h.

Оголошення змінних

Змінна, це - іменована область пам'яті, в яку записуються значення відповідно до оголошеного типу під час виконання програми.

Змінна оголошується наступним чином:

тип ім'я_змінної;

Тип змінних визначає об'єм оперативної пам'яті, що буде виділено під змінну, діапазон допустимих значень та можливі операції над змінною. Типи даних, що використовуються у мовах С та С++ наведені у додатку Б.

Наприклад: int a;

float b, c, d;

В залежності від місця об'явлення змінної, вона може бути глобальною, або локальною.

#include <заголовочний файл>

int a; // глобальна зміна

int main () // ім'я основної функції

{

float b; // локальна зміна

return 0;

}

Основні конструкції операторів мови С++

Для виконання розрахунків в мовах С та С++ використовується оператор присвоєння “=”:

ім'я_змінної = вираз;

Наприклад:

int a=0; //Присвоєння а значення 0

a=((a+7)/236)*(769-a*9);

Математичні операції виконуються відповідно до пріоритету цих операцій.

В мові С++ додатково використовуються операції присвоєння, що наведені у таблиці 1.2.

Таблиця 1.2 - Операції присвоєння

Оператор

Опис

Приклад

=

Оператор присвоєння

int a=5;

+=

Пара операторів вказує компілятору присвоїти змінній суму існуючого значення змінної та вказанного числа

int a=0;

a+=5; //a=a+5;

-=

Присвоєння змінній її значення, яке буде зменшене на вказане число

int a=0;

a-=5; //a=a-5;

/=

Присвоєння змінній її значення, яке буде поділене на вказане число

s/=2*a; //s=s/2*a;

*=

Присвоєння змінній її значення, яке буде помножене на вказане число

s*=i; //s=s*i;

Введення/виведення даних

Для введення даних з клавіатури використовують операцію „>>”

cin >> a;

де cin - стандартна консоль введення, а - ім'я змінної.

Для виведення даних використовують операцію „<<”

cout << a << “\n”;

де cout - стандартна консоль виведення, а - ім'я змінної, “\n” - стрічний літерал, що позначає перехід на інший рядок.

Функції введення/виведення мови С наведені у додатку Д.

Умовний оператор if

Повна форма оператора if наступна:

if (умова) оператор1;

else оператор2;

або

if (умова) {оператор1;

……

операторN;}

else {група операторів}

де умова - це логічна операція (&&, ||, :)або операції порівняння (==, !=, >, <, >=, <=), або інший вираз, результатом якого є логічний тип.

Якщо значення умови «true», то виконується оператор1 (ним може бути складовий оператор - блок), наступний після умови. Якщо ж умова приймає значення «false», то виконується оператор2, що є наступним після else. Наприклад:

int a=5, b=6;

if (a>b) cout<<a;

else cout<<b;

Оператор множинного вибору switch

Це вбудований оператор множинного вибору. Основна форма оператора має вигляд:

switch (вираз) {

case constant1:

послідовність операторів

break;

case constant2:

послідовність операторів

break;

……

case constantN:

послідовність операторів

break;

default

послідовність операторів

}

Спочатку обчислюється вираз в дужках за ключовим словом switch. Потім продивляється список міток (case constant1 та ін.) до тих пір, поки не знаходиться мітка, що співпадає зі значенням обчисленого вираза. Далі виконується відповідна послідовність операторів, що слідують за двокрапкою. Якщо ж зі значенням вираза не співпадає жодна з міток оператору switch, то виконується послідовність операторів, що слідує за ключовим словом default.

Математичні функції мови С++

Для виконання різних математичних дій мови С та С++ містить різноманіття математичних функцій. Для їх використання необхідно додати заготовочний файл <math.h>. Приклад математичних функцій наведений у таблиці 1.3.

Таблиця 1.3 - Математичні функції

Функція

Призначення

float cos (float arg);

Кожна функція cos () повертає значення косинуса аргументу arg.

double exp(double arg) ;

Повертає значення експоненти від аргументу arg

double log(double num);

Повертає значення натурального логарифму для аргументу num

double round(double arg);

Повертає значення аргумента arg, округлене до цілого. Але значення що повертається є значення з плаваючою комою..

double sin(double arg);

Кожна функція sin() повертає значення синуса аргументу arg.

double sqrt(double num);

Повертає значення квадратного корня від аргументу лит.

double fabs(double пит);

Повертає модуль аргументу num

Контрольні запитання

1. Яка загальна структура програми на мові С++?

2. Що називається ідентифікатором?

3. Які типи даних вам відомі?

4. Що таке змінна?

5. Вкажіть операції по складу пріоритету?

6. З якою метою використовують модифікатори типів?

7. Коли використовують оператори вибору та множинного вибору?

8. Як додати коментарі до програми?

9. З якою метою використовують {}?

10. Дайте визначення алгоритму та алгоритмізації.

11. Наведіть схему компіляції програми.

12. Які математичні функції ви знаєте і як їх використовують?

Лабораторна робота 2. Програмування задач циклічної структури

Мета роботи

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

Завдання на лабораторну роботу

1. Ознайомитися з теоретичними відомостями даних методичних вказівок.

2. Скласти та виконати на ПЕОМ програми з таблиці 2.1 відповідно до варіанту.

3. Оформити звіт та захистити роботу.

Таблиця 2.1 - Індивідуальні завдання до лабораторної роботи 2

№ варіанта

Номери задач

№ варіанта

Номери задач

1

84б, 143, 106, 755д

15

108, 140, 113а, 119в

2

84в, 146, 107, 755г

16

115а, 150, 113б, 119г

3

77в, 144а, 143в, 755е

17

115б, 149, 116а, 119е

4

77г, 144б, 116в, 755ж

18

115в, 148, 116б, 119б

5

77д, 146, 116г, 753в

19

116в, 147, 102, 119а

6

77е, 152, 116д, 758а

20

78д, 156б, 103, 758д

7

77ж, 153, 116е, 758б

21

80, 157, 104, 758е

8

78в, 155, 115е, 758в

22

81, 158, 114а, 758ж

9

78г, 156а, 115ж, 758г

23

82, 166, 114б, 758в

10

85, 145в, 108, 755в

24

83а, 161, 114в, 759а

11

114а, 145б, 109, 755б

25

83б, 163, 114г, 759б

12

114б, 145а, 110, 755а

26

84а, 137в, 114д, 759в

13

114г, 142, 111, 119е

27

96, 137г, 114е, 759г

14

107, 141, 112, 119д

28

97, 136о, 114ж, 760б

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

Цикл -- це група операторів, що виконуються багаторазово.

Оператор while визначає операції, які циклічно виконуються до того моменту, поки вираз, що стоїть після while, стане хибним. Цей оператор називається оператором циклу з передумовою: спочатку перевіряються умови, і якщо умови виконуються, то потім виконується тіло оператору. Тому можлива ситуація, коли тіло циклу може бути не виконаним жодного разу. Форма запису оператора наступна:

while (вираз) оператор; або while (вираз) {група операторів}

де вираз - це умова виконання тіла циклу.

Наприклад:

const n=25;

int i=0;

while (i<n) i++;

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

В операторі for використовуються три вирази, що керують роботою цикла. Вони розділені символом ; . Початковий вираз обчислюється тільки один раз до початку виконання одного з операторів циклу. Якщо вираз-перевірка буде істинним (не рівним нулю), тіло циклу виконається один раз. Потім обчислюється величина виразу коректування і визначається знову величина виразу-перевірки. Оператор циклу for - оператор з передумовою, отже знову ж може трапитися, що тіло циклу не виконається жодного разу. Він має таку форму:

for (ініціювання; умова_виконання; вирази_корекції) оператор

ініціювання_циклу - послідовність визначень та виразів, розділених комами. Всі вирази, що входять до ініціалізації циклу розраховуються тільки один раз при вході до цикла;

вирази_корекції - розраховуються на кожній ітерації після виконання операторів тіла циклу і до наступної перевірки умови_виконання.

Наприклад:

int i;

for (i=0; i<n; i++) cout<<i;

Тіло цикла виконується так довго, поки вираз-перевірка не стане хибним (рівним нулю).

Якщо умова_виконання не змінюється або відсутня, то цикл нескінченний.

Наприклад:

for ( ; ; ); // нескінченний цикл

for ( ;1; ); // нескінченний цикл

Для багатьох обчислювальних задач корисним є використання циклу з постумовою (умовою на виході). В цьому випадку тіло циклу обов`язково виконається як мінімум один раз. В С такий оператор циклу реалізується конструкцією do while. Взагалі цикл має вигляд:

do оператор while (вираз);

Проілюструємо його виконання таким прикладом:

do

{ ch=getchar();

putchar(ch);

} while (ch!=`\n`);

Прикладом використання циклів може стати алгоритми розрахунку сум, добутку та ін.

Алгоритм розрахунку суми

Крок 1. Ініціалізація змінної суми (s=0) та змінної циклу (i=0).

Крок 2. Якщо зміна циклу більше кількості ітерацій, перехід на крок 4, інакше перехід на крок 3.

Крок 3. Накопичуємо суму. Збільшуємо оператор циклу (і++), перехід на крок 2.

Крок 4. Кінець

Приклад: Розрахувати

int s, i;

s=0;

for (i=0; i<20; i++) s+=i;

Алгоритм розрахунку нескінчених сум

Крок 1. Ініціалізація змінної суми. Перехід на крок 2.

Крок 2. Розрахувати доданок на теперішній ітерації. Перехід на крок 3.

Крок 3. Накопичуємо суму. Перехід на крок 4.

Крок 4. Якщо доданок менший за завданну точність, то перехід на крок 5. Якщо ні - крок 2.

Крок 5. Кінець.

Приклад: Розрахувати із заданою точністю е

float s0 ,s1, t, е;

int i=1;

s1=1.0;

do {

i++;

s0=s1;

t=1.0/i*i;

s1+=t;

} while (fabs(s1-s0)>е);

Контрольні запитання

1. Для чого використовують оператори циклу?

2. Напишіть блок-схеми алгоритмів опретарів циклів з передумовою, постумовою, ітераційного циклу.

3. Наведіть алгоритм розрахунку добутку.

4. Наведіть алгоритм розрахунку суми.

5. Наведіть приклади використання циклів з постумовою.

Лабораторна робота 3. Перетворення та будування матриць. Робота з покажчиками та динамічними масивами

Мета роботи

Одержання знань і навичок, необхідних для роботи з матрицями, з покажчиками та динамічною пам'яттю.

Завдання на лабораторну роботу

1. Ознайомитися з теоретичними відомостями.

2. Скласти та виконати на ПЕОМ програми з таблиці 3.1 відповідно до варіанту.

3. Виконати індивідуальне завдання згідно з таблицею 3.1, спочатку з використанням статичних масивів, потім з використанням покажчиків та динамічної пам'яті.(Кожну задачу двома способами).

3. Оформити звіт та захистити роботу.

Таблиця 3.1 - Індивідуальні завдання до лабораторної роботи 3

№ варіанта

Номери задач

№ варіанта

Номери задач

1

374б, 395, 692а, 674

15

389, 408, 692в, 694б

2

374а, 400, 676б, 413а

16

413а, 369, 393б, 383

3

374в, 397а, 692б, 675

17

387, 412б, 692и, 694в

4

375, 397б, 412а, 678

18

410г, 370а, 393а, 384

5

379а, 412б, 692в, 679а

19

388, 412в, 692к, 694г

6

379б, 396, 405, 688

20

389, 412г, 693а, 694д

7

379в, 412в, 692г, 679б

21

390а, 409, 693б, 694е

8

390г, 372, 394а, 376а

22

410в, 370б, 394г, 385

9

379г, 412г, 692д, 376б

23

390б, 378а, 410е, 694ж

10

390б, 373б, 401а, 676а

24

391, 378б, 691а, 694в

11

410а, 371, 394б, 387

25

392, 410д, 691б, 694е

12

379а, 403а, 692е, 687

26

419б, 370б, 394в, 386

13

390в, 373а, 402б, 376б

27

413б, 368, 393в, 382

14

377, 403б, 692ж, 694а

28

413в, 367, 393г, 381

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

Масив це - сукупність елементів одного типу. Масив об'являється наступним чином:

тип_елементів ім'я_масиву [розмірність];

де тип_елементів - це деякий стандартний тип (int, float), розмірність - кількість елементівмасиву. Індексація виконується з 0.

При зверненні до елементу масива використовуються індекси:

for (i=0; i<n; i++) cout<<a[i];

Операції з елементами матриці

У повсякденній практиці програміста нерідко доводиться мати справу з матрицею (двумірним масивом).

Матриця - це прямокутна (в частинному випадку - квадратна) таблиця чисел, що має M рядків та N стовпців.

Головна умова правильного розв'язання відповідних задач полягає в розумінні порядку змінювання індексів елементів матриці. Перший індекс завжди визначає номер рядка, другий -- номер стовпця.

Рекомендації по написанню програм з використанням обробки масивів та матриць

а) масив (матриця) повинний бути оголошений;

б) при оголошенні масиву (матриці) при задані розмірності зручно використовувати іменовані константи;

в) доступ до елемента масиву (матриці) здійснюється шляхом вказівки індексу (номера) елемента, у якості якого можна використовувати вираз цілого типу, наприклад, цілу константу чи змінну типу int;

г) для введення, виведення та обробки масивів зручно використовувати оператори циклів (for, while, do while);

д) для роботи з матрицями найчастіше треба використовувати вкладені цикли.

Приклад програми по обробці матриць

Опис матриці та введення даних до неї розглянемо на елементарному прикладі роботи з матриціями:

Завдання: В квадратній матриці з правого боку від побічної діагоналі знайти найбільший елемент і відповідний номер рядка.

# include <iostream.h>

const int M=5, N=5;

void main ()

{ int a[M][N];

int i, j, maxzn, nom;

cout <<”Введіть матрицю \n”;

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

for (j=0; j<N; j++)

cin >>a[i][j]; //Вводимо значення елементів масиву

maxzn=a[0][0];

nom=1;

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

for (j=N-i+1; j<N; j++)

if (maxzn<a[i,j])

{ maxzn=a[i,j];

nom=i; }

cout << “Початкова матриця \n”;

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

{ for (j=0; j<N; j++)

cout <<a[i,j];

cout << “\n”;}

cout << “max елемент=”<<maxzn<<“номер рядка=”<<nom;

}

Важливе місце в цій програмі займає організа ція внутрішнього циклу. При i=l змінна j приймає значення j=5, при i=2 індекс j буде змінюватись від 4 до 5, і так далі. При i=5 параметр j змінюється від 1 до 5. Такі зна чення індексів забезпечують перегляд всіх елемен тів, які розміщені на побічній діагоналі та з правого боку від неї.

В мові С є змінні типа покажчик. Значенням змінної типу покажчик буде адреса в пам'яті деякої змінної.

Враховуючи, що для деяких операцій, пов'язаних з покажчиками, потрібно знати об'єм відведеної пам'яті, опис покажчиків має вигляд:

тип * ім'я-покажчика;

Наприклад:

int *pi; /* покажчик на змінну цілого типу */

char *pc; /* покажчик на змінну символьного типу */

З покажчиком використовують два оператори: „*” та „&”. Оператор „&” - унарний. Він повертає адресу пам'яті, де розташований його операнд.

Унарний оператор * дозволяє звернутись до значення змінної, що розташована за адресою, що задана його операндом.

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

Працюючи з покажчиком, постійно використовують операцію & - отримання адреси об'єкту. Для неї існують природні обмеження:

– неможливо визначити адресу непоіменованої константи, тобто не приймаються вирази &3.141593;

– неможливо визначити адресу значення, яке отримане при розрахунку скалярних виразів;

– неможливо визначити адресу змінної, що відноситься до класу пам'яті register;

В якості типу при визначенні покажчика може бути використаний як основний тип, так і похідний. До похідних типів можуть бути віднесені масиви, функції, покажчики, посилання, класи, структури, об'єднання та ін.

Основні типи як завжди визначаються ключовими словами int, float, char, unsigned.

Операції над покажчиками можна сгрупувати наступним чином:

– операції розіменування чи доступу за адресою (*);

– перетворення типів (приведення типів);

– присвоєння;

– отримання (взяття) адреси (&);

– адитивні операції (додавання та віднімання константи);

– інкремент (++) та дикремент (--);

– операції відношення (операції порівняння);

Якщо операція & завжди дає однаковий результат - адрес розміщення в пам'яті, то операція розіменування *покажчик залежить не тільки від адреси, але й від типу. Річ в тому, що при доступі до пам'яті за допомогою розіменування покажчика потрібною буде інформація не тільки про розміщення, але й про розміри ділянки пам'яті, що буде використовуватися. Цю додаткову інформацію компілятор отримує з типу покажчика.

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

Наприклад. Після виконання p1=p1+9 p1 буде посилатися на дев'ятий елемент базового типу покажчика р1 відносно поточного елемента, на який посилається p1.

Додавати покажчики не можна. Але якщо відняти один покажчик з другого (які вказують на один базовий тип) то різниця вкаже на кількість елементів базового типу, що розподіляють ці два покажчика.

Представлення масиву у пам'яті

При об'яві одновимірного масиву

тип ім'я_масиву [n];

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

Для виділення динамічної пам'яті використовують оператор new:

змінна_покажчик = new тип;

змінна_покажчик = new тип [];

Для звільнення динамічної пам'яті використовують оператор delete:

delete змінна_покажчик;

delete [розмірність] ім'я_масву;

Для виділення місця в пам'яті під динамічний масив необхідно виконати наступні кроки:

int *a;

a = new int [n];

Під двовимірний масив:

int **b;

b = new int * [n];

for (int i=0; i<n; i++)

b[i] = new int [m];

Контрольні питання

1. Що називається масивом?

2. Як описується масив?

3. Що називається індексом масиву?

4. Які обмеження накладаються на індекси?

5. Як відбувається доступ до індексів масиву?

6. Які типи використовуються для вказання розмірність масиву?

7. Що таке матриця?

8. Як відбувається введення значення елементів матриці?

9. Що таке покажчик?

10. Які матричні операції можливо використовувати з покажчиками?

11. Що спільного між покажчиком та масивом?

12. Коли використовується динамічна пам'ять?

13. Як звільнити динамічну пам'ять?

14. Що таке динамічна пам'ять?

15. Представлення двовимірного масиву у пам'яті?

16. Що працює швидше: індекси або покажчики?

Лабораторна робота 4. Програмування задач з використанням функцій

Мета роботи

Одержання знань і навиків, необхідних для створення функцій

Завдання на лабораторну роботу

1. Ознайомитися з теоретичними відомостями.

2. Скласти та виконати на ПЕОМ програми з таблиці 5.1 відповідно до варіанту.

3. Оформити звіт та захистити роботу.

Таблиця 4.1 - Індивідуальні завдання до лабораторної роботи 4.

№ варіанта

Номери задач

№ варіанта

Номери задач

1

424, 470, 317

15

440в, 342, 331б

2

425, 469, 318

16

441, 344, 331б

3

426, 468, 319

17

442, 345, 332

4

427, 467, 320

18

443, 346, 333

5

428, 466, 321

19

444, 347, 334а

6

429, 465, 322

20

445, 348, 334б

7

430, 464, 323

21

446, 349, 334в

8

431, 463, 324

22

447, 350а, 334г

9

432, 462, 325

23

455, 350б, 335а

10

433, 461, 326

24

456, 350в, 335б

11

434, 453, 327

25

457, 350г, 335в

12

435, 336в, 328

26

458, 350д, 335г

13

440а, 336г, 329

27

460а, 351а, 336а

14

440б, 340, 330

28

4606, 351б, 336б

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

Функції - це будівельні блоки деякої програми на мові С++.

Функції бувають двох типів:

- функції користувачів (включно main());

- стандартні (бібліотечні) функції мови С та С++.

Форма запису функцій:

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

{

//Тіло функції

}

де тип_результату - задає тип данних, що повертаються функцією, список_параметрів - задає список змінних, що передаються функції при зверненні.

Дуже важливим оператором тіла функції є оператор повернення в точку виклика:

return вираз; або return;

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

Навіть у випадку, коли функція не виконує ніяких дій й не повинна повертати деяке значення, тіло функції буде складатися з фігурних дужок {}.

Приклад:

int max(int a, int b) {

if (a>b) return a;

else return b;}

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

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

Наприклад:

int max(int a, int b);

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

Наприклад:

int max (int a, int b=0);

Функція main()

Функція main() не має прототипа. Тобто, можна використовувати різні форми запису функції main(). Для мови С++ мають місце наступні варіанти функції main()(дозволяються й інші форми):

1. int main();

2. int main(int argc, char *argv[]);

Як видно з другої форми запису, функція main() підтримує два параметра - argc та argv. Ці дві змінні будуть зберігати кількість аргументів командного рядка та покажчик на них. Параметр argc має цілий тип, та його значення завжди буде не менше за 1, тому що у мові С++, першим аргументом завжди є ім'я програми. Параметр argv повинен бути оголошений як масив символьних покажчиків, в якому кожний елемент вказує на аргумент командного рядку.

В функцію можна передати покажчик на масив. Функції можуть повертати покажчик на масив в якості результата.

Посилання в мові С++

В мові С++ посиланням є інше ім'я існуючого об'єкту. Для визначення посилання використовується символ &, якщо він використовується у такому контексті:

type&ім'я_посилання ініціалізатор

У відповідності із синтаксисом ініціалізатора, наявність якого обов'язкове, визначення посилання може бути таким:

type&ім'я_посилання=вираз; або type&ім'я_посилання(вираз);

При визначенні посилання обов'язковою є його ініціалізація. Однак в опису посилань ініціалізація не обов'язкова. До таких описів посилань відносяться:

а) опис зовнішніх посилань (через специфікатор extern):

float& ref; //Помилка - немає ініціалізації

extern float& ref2; //Допустимо - ініціалізується

//в іншому блоці;

б) опис компонентів класу;

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

г) опис типу значення, що повертається функцією.

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

Перевантаження функцій

Мета перевантаження функцій складається в тому, щоб функція із одним ім'ям по-різному виконувалася та повертала різні значення при звертанні до неї із різними за типом та кількістю фактичними параметрами.

Для забезпечення перевантаження функцій необхідно для кожного імені визначити скільки різних функцій пов'язано з ним, тобто скільки варіантів сигнатур є допустимими при зверненні до них. Будемо вважати, що функція вибору максимального значення елемента із масиву має працювати для масивів типу int, long, float, double. В цьому випадку треба написати чотири різні варіанти функції з одним ім'ям.

int max (int a, int b);

float max (float a, float b);

char max (char a, char b);

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

Контрольні запитання

1. Що таке блок?

2. Що таке функція на мові С(С++)? Для чого вона застосовується?

3. Опишіть механізм передачі параметрів у функцію.

4. Як використовується оператор return у функції?

5. Що ми маємо на увазі, коли говоримо про тип функції?

6. Чим відрізняються прототип, визначення і виклик функції?

7. Які можливо передати параметри до функції main()?

8. Що таке перевантаження функцій? Для чого воно застосовується?

9. Навести приклади прототипів перевантажених функцій із сигнатурами, що розрізняються за кількістю аргументів і за типом аргументів.

Вищем та ініціалами.

Задача 5. Є інформаційоний масив f, в якому містяться різні дати. Кожна дата - це число, місяць та рік. Знайти:

а) рік з самим малим номером;

б) усі весняні дати;

в) саму пізню дату.

Задача 6. Є інформаційний масив f, в якому дані про кубики: розмір кожного кубику (довжина ребра в сантиметрах), його колір (червоний, жовтий, зелений чи синій) та матеріал (дерев'яний, металевий, картонний). Знайти:

а) кількість кубиків кожного з перелічених кольорів та їх сумарний об'єм;

б) кількість дерев'яних кубиків з ребром 3 см та кількість металевих кубиків з ребром, більшим 5 см.

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

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

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

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

Загальна форма об'явлення структури наступна:

struct ім'я_структури {

тип 1 поле 1;

тип 2 поле 2;

……

тип n поле n;

} список_змінних;

Наприклад. Об'явимо новий тип stud

Література

1. Абрамов С.А., Гнездилова Г.Г., Капустина Е.Н., Селюн М.И. Задачи по программированию. - М.:Наука, 1988. - 224с.

2. Павловская Т.А. С/C++. Программирование на языке высокого уровня. - СПб.: Питер, 2003. - 461с.

3. Павловская Т.А. Структурное программирование: Учеб. пособие/ Т.А. Павловская, Ю.А. Щупак. - СПб.: Питер, 2002. - 240с.

4. Керниган Б. Язык программирования С: Пер. с англ./Б. Керниган, Д. Ритчи. - 2-е изд., перераб. И доп. - М.: Вильямс, 2006. - 304с.

5. Крячков А.В., Сухинина И.В., Томшин В.К. Программирование на С и С++: Учеб. Пособие для вузов/ Пер. ред. В.К. Томшина. - 2-е изд., испр. - М.: Горячая линия - Телеком, 2006. - 344с.

6. Глинський Я.М. С++ Builder: Навч. посіб./ Я.М. Глинський, В.Є. Анохін, В.А. Ряжська. - Л.: Дсол., 2003. - 192с.

7. Демидович Е.М. Основы алгоритмизации и программирования. Язык С: Учеб. пособие, - СПб.: БХВ - Петербург, 2006. - 440с.

8. Шилдт Г. Искусство программирования на С++. СПб.: БХВ - Петербург, 2006. - 496с.

9. Шилдт Г. Справочник программиста по С/С++: Пер с анг. - 2-е изд. - М.: ВШ, 2000. - 447с.

10. Культин М.Б. С/С++ в задачах и примерах. - СПб.: БХВ - Петербург, 2005. - 288с.

11. Дейтел Х.М. Дейтел П.Дж. Как программировать на С++: Пер с англ. - М.: Бином, 1999. - 1022с.

12. Либерти Д. Освой самостоятельно С++: 10 минут на урок. 2-е изд. - М.: Издат. Дом «Вильямс», 2004. - 352с.

13. Ишкова Э.А. С++. Начала программирования. 2-е изд. перераб. и доп. - М.: ЗАО «Изд-во Бином», 2001. - 479с.

14. Крупник А. Изучаем С. - СПб: Питер, 2001. - 256с.

15. Лоуден К. С++. Карманный справочник. - СПб.: Питер, 2004. - 220с.

Размещено на Allbest.ru

...

Подобные документы

  • Методика та порядок програмування алгоритмів циклічної структури із заданим числом повторень за допомогою мови програмування VAB. Алгоритм роботи з одновимірними масивами. Програмування алгоритмів із структурою вкладених циклів, обробка матриць.

    курсовая работа [27,7 K], добавлен 03.04.2009

  • Програмування лінійних процесів, процесів з розгалуженням, регулярних циклічних процесів, ітераційних процесів. Одномірні масиви. Впорядкування одномірних масивів. Двовимірні масиви. Алгоритм лінійних обчислювальних процесів. Програми на мові Pascal.

    лабораторная работа [96,6 K], добавлен 05.11.2008

  • Розв'язання задач мовою програмування VBA з використанням алгоритмів лінійної, розгалуженої та ітераційної циклічної структури. Розробка блок-схеми алгоритму, таблиці ідентифікаторів та тексту програми. Створення власної панелі інструментів користувача.

    практическая работа [1012,6 K], добавлен 19.02.2010

  • Прості та умовні оператори мови С++. Робота з двовимірними масивами. Пошук та сортування даних. Робота з файлами та з динамічними структурами даних. Опис мови програмування Delphi. Складення програми до розроблених алгоритмів. Організація циклів.

    отчет по практике [4,3 M], добавлен 28.08.2014

  • Лінійне програмування як один з найбільш популярних апаратів математичної теорії оптимального управління рішень. Опис існуючих методів розв’язку задач лінійного програмування. Завдання, основні принципи, алгоритми і головна мета лінійного програмування.

    курсовая работа [363,8 K], добавлен 03.12.2009

  • Характеристика методів та етапів створення простих програм на мові програмування С++. Особливості структури та порядку запуску програми. Функції вводу і виводу та маніпулятори мови С++. Робота з одновимірними масивами. Символьна інформація та рядки.

    дипломная работа [91,2 K], добавлен 19.06.2010

  • Фундаментальні поняття об'єктно-орієнтованого програмування. Система лінійних нерівностей та опуклі багатогранники. Системи лінійних рівнянь лінійної алгебри як частковий випадок систем лінійних обмежень. Використання середовища програмування Delphi7.

    курсовая работа [222,7 K], добавлен 20.05.2015

  • Розгляд особливостей мови програмування С++: основні можливості, характеристика функцій. Аналіз файлів з вхідними даними. Використання похідних класів як ефективний засіб об’єктно-орієнтованого програмування. Способи роздруківки графічного вирішення.

    курсовая работа [510,9 K], добавлен 14.03.2013

  • Загальний вид двовимірного завдання лінійного програмування. Алгоритм рішення задач графічним методом. Максимізація (мінімізація) цільової функції. Послідовність рішення завдань лінійного програмування симплексом-методом. Принцип перетворення Гауса.

    контрольная работа [149,8 K], добавлен 24.11.2010

  • Програма на мові програмування С++. Аналіз стану технологій програмування та обґрунтування теми. Розробка програми виконання завдання, методу вирішення задачі. Робота з файлами, обробка числової інформації і робота з графікою. Розробка програми меню.

    курсовая работа [41,0 K], добавлен 17.02.2009

  • Аналіз сучасного стану технологій програмування. Засоби реалізації об'єктів в мові C++, структура даних і функцій. Розробка програмного продукту - гри "трикутники", з використовуванням моделей, класів і функцій об’єктно-орієнтованого програмування.

    курсовая работа [117,8 K], добавлен 14.03.2013

  • Загальне поняття про метод Якобі. Мова програмування C++ Builder, її призначення. Оператор do-while, його використання. Динамічний розподіл пам’яті. Загальний вигляд інтерфейсу програми, інформація про метод. Реалізація програми, модуль мain.cpp та dfm.

    курсовая работа [320,6 K], добавлен 17.06.2012

  • Розробка програми на мові програмування С++ з використанням об'єктно-орієнтованого програмування. Робота з файлами, графікою, класами, обробка числової інформації. Графічні засоби мови програмування. Алгоритм задачі та допоміжні програмні засоби.

    курсовая работа [102,5 K], добавлен 14.03.2013

  • Використання графічного методу і симплекс-методу при вирішенні задач лінейного програмування. Сутність двоякого симплекс-методу і М-методу, приклади використання. Аналіз методу динамичного програмування. Специфіка вирішення матричної, антагоністичної гри.

    контрольная работа [1,1 M], добавлен 02.07.2011

  • Середовище програмування Visual Studio 2010. Функції стандартного введення-виведення. Робота з побітовими операціями. Робота з функцією заміни у рядку символів. Робота з масивами. Тестування алгоритму роботи програми. Представлення двовимірного масиву.

    курсовая работа [652,2 K], добавлен 15.01.2014

  • Редагування за допомогою текстового редактора NotePad вхідного файлу даних. Програмна реалізація основного алгоритму з використанням засобів об'єктно-орієнтованого програмування. Об’ява та опис класів і об'єктів. Розробка допоміжних програмних засобів.

    курсовая работа [69,4 K], добавлен 14.03.2013

  • Розробка програми в візуальному середовищі С++. Визначення значення функцій в середовищі Builder мовою програмування С++. Обчислення елементів квадратної матриці згідно заданного алгоритму. Бібліотека візуальних компонентів і середовище програмування.

    курсовая работа [451,5 K], добавлен 15.01.2012

  • Теоретичні основи та приклади економічних задач лінійного програмування. Розробка математичної моделі задачі (запис цільової функції і системи обмежень) і програмного забезпечення її вирішення за допомогою "Пошуку рішень" в Excel симплекс-методом.

    курсовая работа [993,9 K], добавлен 10.12.2010

  • Постановка задачі: створення списку співробітників інституту. Аналіз мов програмування та вибір мови PascalABC.Net - 32-розрядної програми, яка може працювати на сучасних версіях Windows. Опис функцій та процедур, реалізації інтерфейсу користувача.

    курсовая работа [277,8 K], добавлен 25.06.2015

  • Об’єктно-орієнтоване програмування мовою С++. Основні принципи об’єктно-орієнтованого програмування. Розробка класів з використанням технології візуального програмування. Розробка класу classProgressBar. Базовий клас font. Методи тестування програми.

    курсовая работа [211,3 K], добавлен 19.08.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.