ВІКІСТОРІНКА
Навигация:
Інформатика
Історія
Автоматизація
Адміністрування
Антропологія
Архітектура
Біологія
Будівництво
Бухгалтерія
Військова наука
Виробництво
Географія
Геологія
Господарство
Демографія
Екологія
Економіка
Електроніка
Енергетика
Журналістика
Кінематографія
Комп'ютеризація
Креслення
Кулінарія
Культура
Культура
Лінгвістика
Література
Лексикологія
Логіка
Маркетинг
Математика
Медицина
Менеджмент
Металургія
Метрологія
Мистецтво
Музика
Наукознавство
Освіта
Охорона Праці
Підприємництво
Педагогіка
Поліграфія
Право
Приладобудування
Програмування
Психологія
Радіозв'язок
Релігія
Риторика
Соціологія
Спорт
Стандартизація
Статистика
Технології
Торгівля
Транспорт
Фізіологія
Фізика
Філософія
Фінанси
Фармакологія


ОРГАНІЗАЦІЯ ВВЕДЕННЯ І ВИВЕДЕННЯ ДАНИХ

ТА РОЗВ’ЯЗАННЯ ЗАДАЧ З ПРОСТОЮ ЗМІННОЮ

Мета роботи

 

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

 

 

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

 

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

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

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

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

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

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

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

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

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

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

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

cin [ >> values ]; .

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

cin >> x >> y; .

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

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

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

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

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

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

2.345 789

або

2.345

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

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; .

 

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

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

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

#include <iostream.h>

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 - кількість позицій у рядку). Setprecision(k) призначений для вказівки кількості позицій у дробовій частині дробових чисел.

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

cout << 456 << 789 << 123;

видасть значення у вигляді: 456789123, що ускладнює визначити групи значень.

 

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

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

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

#include <iostream.h>

#include <iomanip.h>

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;

}

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

456 789 123

456 789 123

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

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

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

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

Операція cin використовує ті ж маніпулятори , що й операція cout.

 

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

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

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

#include <iostream.h>

#include <iomanip.h>

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>

 

1.3 Використання основних операторів С++

У мові С++ прості оператори закінчуються символом ";", складені полягають у фігурні дужки. Розглянемо правила запису і використання основних операторів С++.

Оператор - вираз ¾ закінчуються крапкою з комою, наприклад:

++i; // інкремент

swap (&a, &y); // виклик функції

Оператори присвоюваннямають одну з форм запису:

p =a ;

p =a = b = c;

де p ¾ ім'я змінної чи елемент масиву; а, b, с¾ арифметичні вирази,

значення.

Оператор умовного переходумає наступний формат запису:

If (L)

оператор 1 ;

Else

Оператор 2 ; ,

де L¾ логічний вираз. Якщо значення цього виразу “істина” (не нуль ), то виконується оператор1, якщо ж воно “не істина”(нуль), то виконується оператор2; у випадку, коли вираз помилковий й відсутнє else,¾ виконується наступний оператор.

Наприклад, оператор умовного переходу може мати вигляд:

if ( i < j )

i++;

Else

{ j = i - 3; i +=2; }

 

Оператор вибору використовують для вибору одного з багатьох варіантів вирішування і має наступну форму запису;

Switch (L)

{

case к.в.1: оператор 1; [break;]

case к.в.2: оператор 2; [break;]

. . . . . . . . . . . . . . . . . . . . . . . . .

case к.в.n: оператор n; [break;]

[default: оператор n+1;]

} ,

де switch, case, default ¾ службові слова;

break ¾ оператор (необов'язковий) переривання виконання операторів switch;

L¾ будь-який вираз одного з цілих типів;

к.в.1,…,к.в.n¾ константні вирази, що не можуть повторюватися і не можуть містити змінних чи викликів функцій. Звичайно це ціла чи символьна константа;

оператор 1;. . . ¾ будь-які оператори С++.

Виконується цей оператор у такий спосіб: обчислюється значення виразу L,потім це значення порівнюється (послідовно зверху вниз) зі значеннями константних виразів к.в.1,..і при збігу значень Lі одного з к.в. будуть виконаються всі оператори починаючи з відповідного, якщо наприкінці немає оператора break. При наявності оператора break, виконується тільки оператор, що знаходиться у відповідній к.в. і управління передається оператору, що знаходиться за межами оператора switch. Якщо значення виразу Lне збігається з жодним значенням к.в., то виконуються оператори з defaultі здійснюється вихід з оператора switch. У випадку, коли в цьому операторі немає default ( він не обов'язковий), і значення L не збігається з жодним зі значень к.в. , здійснюється вихід з оператора switch.

Можна привести наступний фрагмент програми з використанням оператора switch:

int a=2;

Switch ( a )

{

case 1: func1( );

case 2: func2( );

case 0:

case 4: func3( );

default: printf ("gооd bay \n");

}

 

При виконанні цього оператора будуть реалізовані функції: func2, func3іdefault: printf ("gud bay \n"); .

Даний приклад можна записати так само в наступному вигляді:

int a=2;

switch (a)

{

case 1: func1( ); break;

case 2: func2( ); break;

case 0:

case 4: func3( ); break;

default: printf ("gud bay \n");

} .

У такій реалізації буде виконана тільки case 2: func2( ); break;і вихід з оператора switch.

Мова С++ має такі оператори циклу: while, do, for.

Оператор циклу while Lіз предумовою

L ¾ будь-який простий, складений чи порожній оператор(будь-який припустимий вираз).

Виконується цей оператор у такий спосіб: якщо результат виразу L не дорівнює нулю (“істина”), то виконується цикл, а якщо дорівнює нулю (“неістина “), то цикл не виконується і керування передається наступному за while оператору.

Наведемо приклад використання оператора while .

 

Приклад 1.3: Обчислити значення функції:

Y= A*X*X-SIN(X) ,якщо A=10.3; X[-1 ; +1]; hx=0.2.

 

// P1_6.CPP ( обчислення функції y = a* x* x – sin (x)

// с використанням оператора циклу while

#include <stdio .h>

#include <math.h>

Void main ( )

{

float a, x, y;

a = 10 . 3 ;

x = - 1 ;

while ( x <= 1)

{

y = a * x * x - sin(x)

printf ("x = % 4 f, y = % 6 f \n", x, y) ;

x = x + 0.2;

}

}

 

Оператор циклу forмає наступну форму запису:

 

for ( [ вир1 ]; [ вир2] ;[ вир3 ] ) оператор;,

де вир1¾ вираз ініціалізації, звичайно використовується для встановлення початкового значення; це вираз присвоювання (необов'язковий параметр);

вир2¾ вираз умови , що визначає при якій умові цикл буде повторюватися (необов'язковий параметр);

вир3 ¾ вираз ітерації, що визначає крок зміни змінних, керуючих циклом після кожного виконання (необов'язковий параметр).

Цей оператор реалізується в такий спосіб:

¾ спочатку виконується вираз ініціалізації ( ця нотація може бути виконана до оператора for );

¾ обчислюється умовний вираз( якщо результат умовного виразу “істина” (не дорівнює нулю ), то виконується оператор циклу;

¾ обчислюється вираз ітерації;

¾ знову перевіряється умова;

¾ як тільки умовний вираз стає рівним нулю “неістина”, керування передається оператору, що знаходиться за оператором циклу for .

Оскільки перевірка умови виконується перед циклом, то цикл може жодного разу не виконуватися, якщо умова відразу буде “неістина”.

Проілюструємо використання оператора циклу forдля раніше розглянутого приклада 1.3:

// P1_7.CPP ( обчислення функції y = a * x * x - sin(x)

// с використанням оператора циклу for

#include <stdio .h>

#include <math.h>

Void main ( )

{

float a, x, y;

a = 10.3 ;

for ( x = -1 ; x <= 1; x = x + 0.2 )

{

y = a * x * x - sin(x) ;

printf ( "x = % 4 f, y = % 6 f \n", x, y ) ;

}

}

 

В операторі forможе використовуватися кілька змінних, керуючих циклом, а будь-які вирази можуть бути відсутними, наприклад :

 

int i;

for ( ; i < 4; i++)

або

int k, n, y;

for ( k = 0, n = 20; k <= n; k++, n-- )

y = k * n;

У цьому операторі використовується два вирази ініціалізації і два вирази ітерації. При виконанні такого оператору спочатку присвоюються значення змінним k = 0 і n = 20. Потім відбувається порівняння k <= n. Якщо ця умова має значення “істина”,то буде виконуватися тіло циклу, а потім вираз k++ і n--,якщо ж умова не виконується, тоді цикл припиняється.

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

do

{

Оператор

}while (L); ,

де L¾ умовний вираз.

Виконується оператор do наступним чином: спочатку здійснюється вхід у тіло циклу і виконується оператор (він може бути простий чи складний), після того перевіряється умова L і, якщо вона “істина” ( не дорівнює нулю), то цикл повторюється, а якщо “неістина ” ¾ здійснюється вихід з циклу. З використанням оператора циклу doприклад 1.3 буде мати вигляд:

 

// P1_8.CPP ( обчислення функції y = a * x * x - sin(x)

// с використанням оператора циклу do

#include <stdio .h>

#include <math.h>

Void main ( )

{

float a, x, y;

a = 10.3 ;

x = -1 ;

do

{

y = a * x * x - sin ( x ) ;

printf ( " x = % 4 f, y = % 6 f \n ", x, y ) ;

x = x + 0.2;

}

while ( x <= 1 );

}

 

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

 

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

2. Які дані обробляються за допомогою мови С++?

3. Як задаються типи даних у С++?

4. Що таке константа в С++, наведіть приклади констант?

5. Що називається змінною в С++?

6. Як забезпечується організація введення- виведення ?

7. Як організується форматований висновок результатів ?

8. Для чого потрібні оператори умовного і безумовного переходу і як вони працюють ?

9. Як працює операторswitch?

10. Які оператори циклу ви знаєте, як працює оператор циклу for ?

11. Які особливості роботи оператора циклу do і while ?

 

 

© 2013 wikipage.com.ua - Дякуємо за посилання на wikipage.com.ua | Контакти