Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

МЕТОДИЧКА_С++_Ч2

.pdf
Скачиваний:
49
Добавлен:
15.02.2015
Размер:
876 Кб
Скачать

МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОТОДІ ТА СПОРТУ УКРАЇНИ ПЕРВОМАЙСЬКИЙ ПОЛІТЕХНІЧНИЙ КОЛЕДЖ ПЕРВОМАЙСЬКОГО ПОЛІТЕХНІЧНОГО ІНСТИТУТУ НАЦІОНАЛЬНОГО УНІВЕРСИТЕТУ КОРАБЛЕБУДУВАННЯ ІМЕНІ АДМІРАЛА МАКАРОВА

О.М. Краснюк

МЕТОДИЧНІ ВКАЗІВКИ

ЩОДО САМОСТІЙНОЇ РОБОТИ

З ДИСЦИПЛІНИ „ПРОГРАМУВАННЯ”

РОЗДІЛ „ПРОГРАМУВАННЯ МОВОЮ С++”.

ЧАСТИНА 2

Рекомендовано методичною радою ППК ППІ НУК ім. адмірала Макарова

Первомайськ 2012

О.М. Краснюк. Методичні вказівки щодо самостійної роботи з дисципліни „Програмування” для студентів спеціальності 5.05010201 „Обслуговування комп’ютерних систем і мереж”. Частина 2. – Первомайськ: ППК ППІ НУК, 2012.- 76 с.

Затверджено на засіданні циклової комісії „Обслуговування комп’ютерних систем” (протокол №__ від ________).

Схвалено Методичною радою ППК ППІ НУК ім. адмірала Макарова (протокол №__ від ____________)

Відділення „Обслуговування комп’ютерних систем”.

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

Вказівки призначені для студентів ППК ППІ НУК імені адмірала Макарова спеціальності 5.05010201 ,,Обслуговування комп'ютерних систем і мереж”.

© О.М.Краснюк © Первомайський політехнічний

коледж Первомайського політехнічного інституту, 2012 © Видавництво ППК ППІ, 2012

2

Самостійне вивчення теоретичного матеріалу та підготовка до практичних робіт

 

Кількість

 

Вид

 

 

 

 

Тема, яка виноситься на

годин

навчального

Форма

 

 

завдання до

 

 

самостійну роботу

контролю

Література

самостійної

 

 

 

 

 

 

роботи

 

 

 

 

 

 

 

 

 

 

 

 

Практична робота №7

 

 

Вивчення

Перевірка

 

 

Методичні

Обробка одномірних масивів

 

 

правил

створення

 

вказівки

1. Поняття масиву.

 

 

створення

програми

 

на

 

Властивості масивів

 

 

масивів в мові

мові

С++;

 

2. Базові операції обробки

 

 

С++ та робота з

контрольні

 

 

одномірних масивів

 

5

ними

питання

 

 

 

3. Створення програм для

 

 

 

 

 

 

роботи з даними у вигляді

 

 

 

 

 

 

 

одномірних масивів в мові С++.

 

 

 

 

 

 

 

4. Застосування алгоритмів

 

 

 

 

 

 

 

пошуку максимальних та

 

 

 

 

 

 

 

мінімальних елементів

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Практична робота №8

 

 

Вивчення

Перевірка

 

 

Методичні

Обробка двовимірних масивів в

 

 

правил

створення

 

вказівки

мові С++

 

 

створення

програми

 

на

 

1. Поняття двовимірного

 

 

двовимірних

мові

С++;

 

масиву

 

 

масивів в мові

контрольні

 

 

2. Алгоритми введення-

 

5

С++ та робота з

питання

 

 

 

виведення елементів

 

 

ними

 

 

 

 

двовимірного масиву

 

 

 

 

 

 

 

3.Використання двовимірного

 

 

 

 

 

 

 

масиву для розрахунків

 

 

 

 

 

 

 

математичних матриць.

 

 

 

 

 

 

 

Практична робота №9

 

 

Вивчення

Перевірка

 

 

Методичні

Обробка символьних даних в

 

 

правил

створення

 

вказівки

мові С++

 

 

оголошення

програми

 

на

 

1. Бібліотечні функції для

 

 

рядків та робота

мові

С++;

 

роботи з рядками.

 

 

з ними

контрольні

 

 

2. Рекомендації по обробці

 

 

 

питання

 

 

 

рядків

 

5

 

 

 

 

 

3. Робота з рядком, як з

 

 

 

 

 

 

 

одномірним масивом,

 

 

 

 

 

 

 

застосування алгоритмів

 

 

 

 

 

 

 

сортування, використання

 

 

 

 

 

 

 

рядкових функцій для зміни

 

 

 

 

 

 

 

суті рядка.

 

 

 

 

 

 

 

3

Практична робота №10

 

Вивчення

ство-

Перевірка

 

 

Методичні

Структури та масиви структур

 

рення

та

створення

 

вказівки

в мові С++

 

оголошення

програми

 

на

 

1.

Загальні відомості про

 

записів, та ро-

мові

С++;

 

структури.

4

бота з записами

контрольні

 

 

2.

Елемент структури типу

 

 

питання

 

 

 

поля бітів.

 

 

 

 

 

 

 

3.

Об’єднання.

 

 

 

 

 

 

 

4.

Створення та робота зі

 

 

 

 

 

 

 

структурами даних в мові С++.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Практична робота №11

 

Вивчення

та

Перевірка

 

 

Методичні

Обробка файлових структур

 

використання

створення

 

вказівки

даних в мові С++

 

функцій

для

програми

 

на

 

1.

Потокове введення-

 

операцій

з

мові

С++;

 

виведення в стандарті С

 

файлами

 

контрольні

 

 

2.

Робота з файлами на диску

 

 

 

питання

 

 

 

(відкритті та закриття файлу)

 

 

 

 

 

 

 

3.

Запис та зчитування

4

 

 

 

 

 

 

символів, цифр, блоків даних

 

 

 

 

 

 

 

4.

Функції для роботи з

 

 

 

 

 

 

 

файлами.

 

 

 

 

 

 

 

5.

Створення текстових

 

 

 

 

 

 

 

файлів, запис даних у файл,

 

 

 

 

 

 

 

зчитування даних з файлу,

 

 

 

 

 

 

 

закриття файлів

 

 

 

 

 

 

 

Практична робота №12

 

Вивчення

та

Перевірка

 

 

Методичні

Програмування з

 

використання

створення

 

вказівки

використанням динамічних

 

лінійних списків

програми

 

на

 

структур даних. Використання

 

 

 

мові

С++;

 

лінійних списків.

3

 

 

контрольні

 

 

1.

Використання динамічних

 

 

питання

 

 

 

 

 

 

 

 

 

структур даних.

 

 

 

 

 

 

 

2.

Різновиди лінійних списків.

 

 

 

 

 

 

 

3.

Операції над списками.

 

 

 

 

 

 

 

4.

Створення лінійного списку.

 

 

 

 

 

 

 

Практична робота №13

 

Вивчення

та

Перевірка

 

 

Методичні

 

використання

створення

 

вказівки

Програмування з

 

 

 

стеку та черги

програми

 

на

 

використанням динамічних

 

 

 

 

 

 

мові

С++;

 

структур даних. Використанння

 

 

 

 

 

 

 

контрольні

 

 

стеку та черги.

 

 

 

 

 

 

 

 

питання

 

 

 

1.

Загальні відомості про стек

3

 

 

 

 

 

 

 

 

 

 

 

та чергу.

 

 

 

 

 

 

 

2.

Способи формування стеку

 

 

 

 

 

 

 

та черги.

 

 

 

 

 

 

 

3.

Створення програм

 

 

 

 

 

 

 

формування стеку та черги.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Всього

29

 

 

 

 

 

 

4

Практична робота №7

Тема: Обробка одномірних масивів в мові С++.

Мета роботи: Оволодіння практичними навиками роботи з масивами,

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

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

Масив – це тип даних, який може містити декілька значень, всі одного типу.

Одновимірний масив — це послідовність однотипних даних.

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

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

Тип масиву — це структурований тип даних, множина допустимих значень котрого складається з усіх масивів, для яких зафіксовано:

розмірність;

базовий тип;

індексний тип;

множину значень індексу.

Щойно наведене визначення типу масиву можна застосувати до типів як одновимірних, так і багатовимірних масивів. Зауважимо також, що усі елементи одновимірного масиву записуються до розташованих поряд ділянок оперативної пам'яті. Тому і весь масив може розглядатися як одна нерозривна область пам'яті.

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

5

дексованих змінних а1,a2,a3,a4,a5, можна зобразити значеннями цих змінних у сусідніх ділянках оперативної пам'яті.

Формат опису масиву наступний:

тип_елементів ім'я [константний_вираз]

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

int A[10];

оголошений масив з ім'ям А, що містить 10 елементів цілого типу. Елементи масиву позначаються індексованими іменами. Нижнє значення індексу рівне 0:

А[0], А[1], А[2], А[3], А[4], А[5], А[6], А[7], А[8], А[9]

На відміну від Паскаля в Сі не можна визначати довільні діапазони для індексів.

Розмір масиву, вказаний в описі, завжди на одиницю більше максимального значення індексу.

Наприклад, масив може містити 60 значень типу int, які представляють собою дані про продаж ігр за п’ять років, або 12 значень типу short – число днів в кожному місяці, або 365 значень типу float, які відображають ваші витрати на продукти харчування на протязі кожного дня року. Кожне значення зберігається в окремому елементі масива, і комп’ютер зберігає всі елементи масиву послідовно в пам’яті.

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

тип кожного елемента

назву масива

число елементів в масиві

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

short months[12];//створює масив з 12 елементів типу

short

створює масив з назвою months, який містить 12 елементів, кожний з яких

може зберігати значення типу short. Кожний елемент - це змінна, і їх можна

обробляти як звичайні змінні.

6

Загальна форма для об’явлення масиву виглядає таким чином:

typeName arrayName[arraySize];

Вираз arraySize, що задає кількість елементів, повинно бути значенням типу const,наприклад 10, або іншим значенням типу const, або постійним виразом,

наприклад, 8*sizeof(int) , для якого всі значення вже відомі під час трансляції.

Тобто, arraySize не може бути змінною значення якої встановлюється в той час,

коли програма виконується.

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

використовується запис з індексом в квадратних дужках, щоб визначити елемент масиву.

Щоб вказати компілятору зарезервувати пам’ять для 10 елементів масива mas,

який складається з цілих чисел, потрібно таке об’явлення:

int mas[10];

На рис.7.1 показано масив mas цілих чисел, який складається з 10 елементів.

На любий елемент масива можна зіслатися, якщо вказати ім’я і номер позиції елемента, що вказується у квадратних дужках. Тобто перший елемент масиву – mas[0], другий - mas[1], сьомий - mas[6] і взагалі і-й - mas[i-1].

Ім’я масиву

значення елементів масиву

mas[0] -45

mas[1] 6

mas[2] 0

mas[3] 72

mas[5] 1545

mas[6] -89

mas[7] 0

mas[8] -3

mas[9] 6453

Позиція номера елемента всередені масиву mas

Рисунок 7.1 Масив з 10-ти елементів цілого типу

7

Виділемо основні властивості масивів, притаманні як одновимірним, так і

багатовимірним масивам:

однорідність — усі елементи належать одному типу;

сталість — вимірність масиву задається під час його оголошення і не зміню-

ється протягом роботи з ним;

рівнодоступність — спосіб доступу до всіх елементів є однаковим;

послідовність розташування — усі елементи масиву розташовані в послідов-

них комірках оперативної пам'яті;

індексованість - елементи однозначно ідентифікуються своїми індексами;

упорядкованість індексу — індексний тип має бути простим порядковим ти-

пом даних.

Базові операції обробки одновимірних масивів

Будь-яка обробка масивів здійснюється шляхом виконання операцій над їх елементами. Двома найпростішими операціями над елементами одновимірного масиву є вибір певного елемента та зміна його значення. Для доступу до окремого елемента масиву застосовується операція індексування [], за допомогою якої утво-

рюються вирази <ім'я масиву>[<індексний вираз>]. Елемент масиву є окремою змінною, що ідентифікується вище зазначеним виразом. Приклад ідентифікації елементів масиву а з індексами 0, 1, ..., 9 та масиву digit з індексами 5, 6, ..., 20 наведено нижче:

a[0], а[1],...,а[9], digit[5],digit[6], ... digit[20].

Значення елементів масиву змінюються так само, як і значення інших змінних.

Наприклад, для першого елемента масиву а це можна зробити операцією присвоєння а[0]:=5 або операцією введення даних cin>>a[0].

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

Такими базовими операціями є:

введення та виведення масиву;

ініціалізація масиву;

8

копіювання масиву;

пошук максимального або мінімального елемента;

обчислення узагальнювальних характеристик (сум елементів, їх добутків);

пошук заданого елемента;

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

вставка та видалення елемента.

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

Ініціалізація масиву.

Мова С++ має декілька правил відностно ініціалізації масивів.

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

Не можна використовувати її пізніше, а також не можна присвоїти один масив цілком іншому:

int cards[4]={3,6,8,10}; //правильно

int hand[4];

//правильно

hand[4]={5,6,7,9}; //неправильно

hand=cards; //неправильно

Однак можна використовувати індекси і привласнити значення елементам масиву індивідуально.

Під час ініціалізації можна привласнити меньшу кількість значень, ніж кількість елементів в масиві.

Наприклад, наступна інструкція ініціалізує тільки перші два елемента масиву hotelTips:

float hotelTips[5]={5.0, 2.5};

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

float totals[50]={0};

9

Якщо під час ініціалізації масиву квадратні дужки залишити порожніми, то компілятор С++ буде підраховувати елементи масиву. Наприклад, якщо виконати таке об’явлення:

short things[]={1,5,3,8};

компілятор створе масив things з чотирьох елементів.

Розглянемо фрагмент програми для введення елементів масиву з клавіатури:

int mas[50];//об’явлення масиву int i,n;

//введення розмірності масиву cout<<"Enter razmer n= "; cin>>n;

//введення елементів масиву cout<<"Enter "<<n<<" elementov";

for(i=0;i<n;i++) cin>>mas[i]; cout<<endl;

. . .

//виведення масиву на екран for(i=0;i<n;i++) cout <<mas[i]<<" ";

Сортування масивів

Наступний приклад програми сортує значення 10-ти елементів масиву в зростаючому порядку. Використовувана при цьому техніка отримала назву бульбашкове сортування або сортування занурення, тому що найменше значення поступово «спливає», просуваючись до вершини (початку масиву), подібно до бульбашки повітря у воді, тоді як найбільше значення занурюється на дно (кінець)

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

Спочатку програма порівнює mas[0] і mas[1],а потім mas[1] і mas[2],

потім mas[2] і mas[3] і так далі до тих пір, поки прохід не закінчиться порівнянням передостаннього mas[8] і останнього елементів mas[9]. Хоча елементів 10, проводиться тільки 9 порівнянь. При вибраному способі послідовних порівнянь велике значення може переміщатися в масиві вниз на багато позицій за один прохід, але мале значення може бути пересунуте вгору тільки на одну позицію.

При першому проході найбільше значення гарантоване опуститься на місце

10