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

Информатика.ЛБ

.pdf
Скачиваний:
15
Добавлен:
14.04.2015
Размер:
950.97 Кб
Скачать

МІНІСТЕРСТВО НАУКИ І освіти УКРАЇНИ ХАРКІВСЬКИЙ національний УНІВЕРСИТЕТ РАДІОЕЛЕКТРОНІКИ

МЕТОДИЧНІ ВКАЗІВКИ ДО ЛАБОРАТОРНИХ ТА ПРАКТИЧНИХ РОБІТ ПО КУРСУ

―ІНФОРМАТИКА ‖

для студентів денної форми навчання напряму підготовки 6.170103 - «Управління інформаційною безпекою».

Затверджено кафедрою інформатики.

Протокол № __ від ____

ХАРКІВ 2013

Методичні вказівки до виконання лабораторних та практичних робіт з курсу ―Інформатика‖ для студентів напряму підготовки 6.170103 - «Управління інформаційною безпекою».

/ Упоряд.: Сінельнікова Т.Ф.( Харків: ХНУРЕ, 2011. ( 102 с.))

Упорядники: Сінельнікова Т.Ф

ЗМІСТ

Загальні положення ...………………………………………………………….........3

1.Організація введення і виведення в програмах. вирішування задач із простою змінною………….....………………………………………………………………4

2.Вирішування задач з використанням одновимірних і двовимірних масивів..24

3.Виріщування задач з використанням даних символьноготипу………………46

4.Вирішування задач з використанням даних типу структура .........……......…67

5.Використання функцій при розробці програм ...………….…………….........77

6.Робота з файлами ..……………………………………………………………...95 Література і джерела ……………………………………………………..………102

3

ЗАГАЛЬНІ ПОЛОЖЕННЯ

Розв‘язання більшості наукових, інженерних і технічних задач тісно пов'язано з використанням обчислювальної техніки. Оволодіння основними поняттями комп'ютерної техніки і мовами програмування дозволить майбутньому інженеру ставити і вирішувати задачі на ЕОМ.

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

Приступаючи до виконання даного циклу лабораторних робіт, студенти зобов'язані ознайомитися з вимогами стандартів по оформленню схем алгоритмів і програм (ДСТУ).

У результаті виконання лабораторних робіт студенти повинні:

знати прийоми алгоритмізації і правила розробки і запису схем алгоритмів і програм мовою С++;

вміти складати схеми алгоритмів і розробляти програми, складати звіти відповідно до вимог ДСТУ, розв'зувати задачі на комп'ютері.

Виконання лабораторних робіт розраховано на активну самостійну роботу студентів. Кожна робота виконується студентом індивідуально згідно варіанта завдання, номер якого повинний збігатися з номером студента в журналі академ-групи.

Під час самостійної підготовки до заняття студенти повинні:

проробити теоретичний матеріал, рекомендований у методичних вказівках до роботи;

відповісти на контрольні питання ;

розробити схему алгоритму і скласти програму свого варіанту

завдання;

оформити звіт по попередній лабораторній роботі і підготуватися до його захисту.

Студенти, що не мають до початку заняття рукописного тексту програми свого варіанту задачі, до заняття не допускаються!

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

атакож захистити звіт за матеріалами попередньої лабораторної роботи.

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

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

4

1 ОРГАНІЗАЦІЯ ВВЕДЕННЯ І ВИВЕДЕННЯ ДАНИХ ТА РОЗВ‘ЯЗАННЯ ЗАДАЧ З ПРОСТОЮ ЗМІННОЮ

1.1 Мета роботи

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

1.2 Вказівки до організації самостійної роботи студентів

При підготовці до роботи повторити типи констант і змінних, способи їхнього опису, використання операторів керування й організації циклів, а також використання інтегрованого середовища програмування на С++ [ 1, с. 70-72, с. 74-78; 2, c.7-22; конспект лекцій].

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

Бібліотека мови С++ підтримує такі три рівні введення – виведення даних:

введення - виведення потоку;

введення - виведення нижнього рівня;

введення - виведення для консолі і порту.

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

наприклад, #include <iostream.h>.

За замовчуванням стандартні введення, виведення і виведення повідомлень про помилки відносяться до консолі користувача (клавіатура і екран).

5

1.2.1 Використання операторів введення

Найчастіше в С++ використовується потокове введення даних, операції якого включені до складу класів istream або iostream . Воно може здійснюватися з визначеним у цих класах вхідним потоком cin або вихідним потоком, визначеним користувачем. Для читання символів з цього потоку вказується операція витягу з потоку, що позначається за допомогою символів ― >> ― . Це перевантажена операція, визначена для всіх простих типів і покажчика на char.

Формат запису оператора cin має вигляд:

 

cin [ >> values ];

.

Наприклад, для введення значень змінних x і y можна записати:

cin >> x >> y;

.

Кожна операція ― >> ― передбачає введення одного значення. При введенні даних необхідно виконувати наступні вимоги:

для поділу двох чисел, що послідовно вводяться, використовується проміжок (дані типу сhаr розділяти проміжком не обов'язково) або ENTER;

якщо послідовно вводиться символ і число (або навпаки), проміжок треба записувати тільки в тому випадку, якщо символ, що вводиться, (типу сhаr) є цифрою;

потік введення ігнорує проміжки;

при введенні великої кількості даних одним оператором їх можна розташовувати в декількох рядках (використовуючи ENTER);

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

2.345 789

або

2.345

789

Оскільки в цьому прикладі проміжок є роздільником між значеннями, що вводяться, то при введенні рядків, котрі містять проміжки у своєму складі, цей оператор не використовується. У такому випадку треба використовувати методи розглянутих класів такі як: getline( ), read( ), get( ) і ін. (формати цих функцій розглянемо при обробці символьних даних). У С++ операції введення - виведення можуть виконуватися з використанням операторів, а не функцій введення - виведення.

6

1.2.2 Організація виведення даних у мові С++

Виведення даних може бути неформатованим і форматованим.

Найчастіше для виведення застосовується

операція << ,

що записується разом

з ім'ям вихідного потоку cout.

Тобто, наприклад, запис

 

cout << x;

 

 

 

 

означає виведення значення

змінної

x

( або

запис в потік). Цей оператор

вибирає необхідну функцію перетворення даних у потік байтів.

Формат запису cout відрізняється від форми запису команд С++

cout

<< data

<< [ data

];

,

де data це змінні, константи, вирази або комбінація типів.

Запис оператора cout може може мати, наприклад, такий вигляд:

сout << "y=" << x + a - sin(x) << "\n"; .

Оскільки у мові С++ операція ―\n‖ рівнозначна операції endl, тому розглянутий оператор виводу можна записати як:

сout << "y=" << x + a - sin(x) << endl;

При використанні бульових операцій, вирази треба брати в дужки.

сout << "p =" << ( a && b || c ) << "\n"; .

Мова С++ не має символьних значень. Символ переводу на наступний рядок "\n" записується як строкова константа, інакше він розглядається не як керуючий символ, а як число 10 ( код символу). Таких помилок можна уникнути шляхом присвоєння значення керуючих символів змінним,

наприклад:

 

 

 

#define sp

" "

 

#define

ht

"\t"

 

#define

hl

"\n"

 

Тепер оператор виведення можна записати так:

 

сout << " y = " << x + a - sin(x) << hl;

.

Слід пам'ятати, що cout не виконує автоматичний перехід на наступний рядок. Щоб надрукувати строкову константу, треба помістити її за оператором cout , тобто у такому вигляді:

cout << " Я вивчаю програмування \n";

 

або

 

cout << " Я вивчаю програмування‖<< endl;

.

7

Приклад 1.1 Наступний приклад містить організацію виведення даних, пояснюючі повідомлення , а також символи переводу рядка:

//P1_1.CPP ( роздрук значень змінних

// с відповідними позначками

#include <iostream> using namespace std; int main ( )

{

char first = 'W'; char middle = 'P'; char last = 'S'; int wozrast = 20; int doplata = 2;

float zarplata = 309.75; float prozent = 8.5;

// Виведення результатів

cout << " Перевірка вихідних даних\n"; cout << first << middle << last << "\n\n";

cout << " Вік доплата зарплата відсоток: \n";

cout << wozrast << ' ' << doplata << ' ' << zarplata << ' ' << prozent; return 0;

}

В останніх двох операторах використаємо символи табуляції. Наприклад, \t поміщає кожне наступне ім'я або число в наступну позицію табуляції (кожні вісім символів), у цьому випадку маємо:

cout << " Вік \t доплата\t зарплата\t відсоток\t \n";

cout << wozrast<<"\t" << doplata<<"\t"<< zarplata<<"\t"<< prozent<<"\n " ;

Для додаткового керування вихідними даними використовуються маніпулятори: setw(n) і setprecision(k). Маніпулятор setw(n) служить для вказівки довжини поля, що приділяється для виведення наступних даних (тут n

8

- кількість позицій у рядку). Setprecision(k) призначений для

вказівки

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

 

Маніпулятори змінюють вид деяких змінних в об'єкті cout, що у потоці випливають за ними. Ці маніпулятори називають прапорами стану. Коли об'єкт посилає дані на екран, він перевіряє прапори, щоб довідатися, як виконати завдання, наприклад, запис:

 

 

cout << 456 << 789 << 123;

видасть значення у

вигляді:

456789123, що ускладнює визначити групи

значень.

 

 

 

 

Приклад 1.2 Написати програму з використанням маніпулятора setw .

// P1_2.CPP ( демонстрація різних маніпуляторів

//

ширини виведення цілого числа

#include <iomanip>

 

 

#include <iostream>

 

 

using namespace std;

 

 

int

main ( )

 

 

 

{

 

 

 

 

 

cout << 456 << 789 << 123 << endl;

 

cout << setw(5) << 456 << setw(5) << 789

 

 

 

<< setw(5) << 123 << endl;

 

cout << setw(7) << 456 << setw(7) << 789

 

 

 

<< setw(7) << 123 << endl;

 

return 0;

 

 

 

}

 

 

 

 

 

Результати виконання програми:

 

456789123

 

 

 

456

789

123

 

 

456

789

123

У цьому прикладі з'явився

новий

заголовний файл

iomanip,

що

дозволяє використовувати функції маніпуляторів, таких як

setw.

При

використанні функції setw, С++ вирівнює число вправо

в границях

заданої ширини поля виведення.

Якщо

ширина недостатня,

С++ ігнорує

вказане значення.

 

 

 

 

9

Функція setprecision(2) повідомляє С++ про те, що число з крапкою, що плаває, треба виводити з двома знаками після крапки з округленням дробової частини, наприклад, при виконанні оператора

сout << setw(7) << setprecision (2) << 123.456789;

буде отриманий наступний результат:

123.46.

Приклад 1.3 Написати програму для обчислення податку на продаж.

// P1_3.CPP програма податок :введення суми продажів

// і роздрук податку на продажі

#include <iostream> #include <iomanip> using namespace std; int main ( )

{

float prod_sum; // Сюди буде записана сума продажів float nalog ;

// Виведення підказки для користувача

cout << " Введіть суму продажів для розрахунку податку "; cin >> prod_sum;

nalog = prod_sum* 0.7; // Обчислення податку на продажі

cout

<< " " <<

setprecision(2) <<

prod_sum;

cout

<< " " <<

setprecision(2) <<

nalog<< "\n";

return 0;

 

 

}

 

 

 

Через те,

що в першому операторі cout

не міститься знак переводу

рядка, відповідь користувача на підказку з'явиться відразу праворуч від запиту.

Мова С++ широко використовує також форматоване введення і виведення даних. Для форматованого введення використовують функцію scanf, а виведення фукцію printf. Щоб зв'язати програму користувача зі стандартною бібліотекою, де знаходяться ці функції, необхідно спочатку програми передбачити препроцесорне ствердження

#include <stdio.h>

10