Главная страница
Образовательный портал Как узнать результаты егэ Стихи про летний лагерь 3агадки для детей
qrcode

Методичка_Ч1. Методичні вказівки до лабораторного практикуму та самостійної роботи з дисципліни Програмування для студентів напрямів підготовки


НазваниеМетодичні вказівки до лабораторного практикуму та самостійної роботи з дисципліни Програмування для студентів напрямів підготовки
АнкорМетодичка Ч1.doc
Дата26.10.2016
Размер1.86 Mb.
Формат файлаdoc
Имя файлаMetodichka_Ch1.doc
ТипМетодичні вказівки
#593
страница3 из 11
КаталогОбразовательный портал Как узнать результаты егэ Стихи про летний лагерь 3агадки для детей
Образовательный портал Как узнать результаты егэ Стихи про летний лагерь 3агадки для детей
1   2   3   4   5   6   7   8   9   10   11

Вимоги до звіту


  • Назва роботи.

  • Мета роботи.

  • Короткі теоретичні відомості.

  • Тексти функцій програми з коментарями.

  • Результати тестування проекту у вигляді копій консолі.

  • Висновки.

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


  • Структура програми на С.

  • Структура функції main().

  • Найпростіший варіант написання функції main().

  • Призначення директив #include та #include

  • Як користуватися об’єктом cout.

  • Робота з вікном редактора коду.

  • Як зберегти проект.

  • Як перенести проект на інший комп’ютер.

Рекомендована література


  1. Шпак З.Я. Програмування мовою С. – Львів: Оріяна-Нова, 2006. – 432 с.

2Лабораторна робота № 2. Типи даних та розрахунки за формулами


    Мета роботи:

  • Познайомитися з поняттям тип даних та типами даних мови С, С++.

  • Познайомитися з поняттям змінна

  • Навчитися записувати арифметичні вирази.

  • Створити додаток, що забезпечує розрахунок за формулою.

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

2.1.1Змінні і константи


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

2.1.2 Типи даних


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

Наприклад, нехай у пам'яті комп'ютера записана послідовність нулів і одиниць 0100 0010 0100 0011 0100 0100 0000 0000. Якщо розглядати її як ціле число, то це буде 1111704576, а якщо припустити, що це рядок символів, то отримаємо «BCD».

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

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

Так, наприклад, якщо для розглянутої послідовності виконати операцію «скласти сама із собою», то ця операція буде виконуватися за різними правилами.

Числа будуть складатися за правилами арифметики, і отриманий результат буде виглядати так: 1000 0100 1000 0110 1000 1000 0000 0000 (2223409152).

Рядки ж будуть "склеюватися" і результат буде таким: 0100 0010 0100 0011 0100 0100 0100 0010 0100 0011 0100 0100 0000 0000 («BCDBCD»).

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

Ці типи можна поділити на такі:

  • скалярні, які поділяються на арифметичні, переліки та вказівники;

  • тип функція;

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

Поки що ми розглянемо тільки скалярні арифметичні типи даних. Коротку інформацію про інші типи можна знайти у підручнику [4], стр.31-37.

2.1.3Арифметичні типи даних


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

Ці типи поділяють на основні та модифіковані.

Основні арифметичні типи


Основними типами є такі:

char – тип для символів;

int – тип для цілих чисел;

float – тип для дійсних чисел;

double – дійсні числа подвійної точності;

bool – логічний тип, що може приймати значення 0, або 1.

У читача може створитися враження, що тут помилка. Дійсно дивно, що типи char та bool віднесені до арифметичного типу. Але помилки тут нема. Вираз 'Z'*true є допустимим у С і його можна обчислити. Результатом буде число 90, бо true перетворюється у 1, а код символу ’Z’ дорівнює 90. Тобто логічну змінну і символ можна розглядати як цілі числа.

Слід також прийняти до уваги, що тип bool з’явився тільки у мові С++. А в мові С число 0 розглядалося як true, а будь яке інше число розглядалося як false.

Модифіковані арифметичні типи


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

Таблиця 2.1 – Модифікатори для типів мови С++

Модифікатор

Значення

Застосовують до типів

signed

із знаком

char, int

unsigned

без знаку

char, int

long

довгий

int, long int, double

short

короткий

int


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

Модифікатор short зменшує удвічі довжину типу int, а модифікатор long збільшує удвічі довжину основного типу. Модифікатор long для типу int можна використовувати двічі. У цьому разі розмір типу int збільшується у чотири рази. Ці модифікатори можна комбінувати з модифікатором unsigned.

У Qt можливі і скорочення, що визначені у заголовному файлі . Наприклад, замість типу unsigned int можна писати uint. Перелік скорочених назв типів наведено у таблиці 2.2. У цій же таблиці наведено перелік відповідних типів бібліотеки QT, які також визначені у заголовному файлі .

Граничні значення даних цілочислових типів даних


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

Таблиця 2.2 – Скорочені назви та граничні константи для типів С++

Повна назва типу

Скорочена назва

Тип Qt

Граничні константи

char

char

qint8

CHAR_MIN

char

char

qint8

CHAR_MAX

unsigned char

uchar

quint8

UCHAR _MAX

short

short

qint16

SHRT_MIN

short

short

qint16

SHRT_MAX

unsigned short

ushort

quint16

USHRT_MAX

int

int

qint32

INT_MIN

int

int

qint32

INT_MAX

unsigned int

uint

quint32

UINT_MAX

long int

long

qint64

LONG_MIN

long int

long

qint64

LONG_MAX

unsigned long int

ulong

quint64

ULONG_MAX

long long int

long long

qlonglong

LLONG_MIN

long long int

long long

qlonglong

LLONG_MAX

unsigned long long int

?

qulonglong

ULONG_LONG_MAX



Переліки


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

Оголошення переліку має такий вигляд:

enum <імя переліку> {<список іменованих константз>};

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

enum consoleColors{

BLACK, BLUE, GREN, CYAN, RED, MAGENTA, BROWN, LIGHTGRAY, DARKGRAY, LIGHTBLUE,

LIGHTGREN, LIGHTCYAN, LIGHTRED, LIGHTMAGENTA, YELLOW, WHITE

};

Стандартно перший елементу переліку має значення 0, а кожний наступний має значення на 1 більше, ніж попередній.

У разі потреби елементам можна присвоювати інші значення.

Цілочислові константи


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

Десяткова константа являє собою послідовність десяткових цифр, перед якою може бути знак + або -. Наприклад, 123, -234, +456.

Вісімкова константа завжди починається з 0 і може мати у своєму складі тільки цифри від 0 до 7. Наприклад, 015, 0777. Зверніть увагу на те, що константи 125 і 0125 мають різне значення. Десяткове значення константи 0125 дорівнює 85 (1*64+2*8+5*1) .

Шістнадцяткові константи позначаються префіксом 0х. До їх складу, окрім десяткових цифр можуть також входити шістнадцяткові цифри (A, B, C, D, E, F). Наприклад, числу 0x12A відповідає десяткове число 298 (1*256+2*16+1*10).

Шістнадцяткові константи дуже зручно використовувати для представлення двійкових кодів, бо кожній шістнадцятковій цифрі відповідає 4 двійкових (тетрада). Так число 0x815F у двійковій формі буде виглядати так: 1000 0001 0101 1111.

Тип константи встановлюється компілятором за її значенням. Для не занадто великих констант встановлюється тип int, а якщо ця константа вісімкова або шістнадцяткова то тип unsigned int. Але є можливість і примусово встановити тип константи. Для цього до константи долучають кінцеві символи U (unsigned) та L (long). Наприклад, константа 1UL, незважаючи на те, що вона має маленьке значення отримає тип unsigned long.

Символьні константи


Символьні константи поділяються на графічні символи , керуючі слеш-символи та ескейп-послідовності. У будь якому варіанті символьні константи розташовують між одинарними лапками. Наведемо приклади символьних констант: ‘a’ (літера а), ‘\a’ (звуковий сигнал), ‘\x0a’ (перехід на новий рядок).

Більш докладно із спеціальними керуючими символами ви можете ознайомитися у підручнику [4] на сторінках 12-16 та 34-35.

Константи дійсних типів


У пам’яті комп’ютера дані цього типу зберігаються у формі з плаваючою крапкою. При такому записі число представляється у вигляді мантиси і порядку. Стандартно мантиса у двійковому коді починається з 1, а десяткова має значення більше або рівне 1, але менше 10. Порядок може бути позитивним чи негативним і показує, на скільки порядків реальне число менше або більше мантиси. Перевага такої форми запису полягає в тому, що не доводиться писати незначущі нулі. Довжина запису залежить тільки від кількості значущих цифр і не залежить від значення числа. Наприклад, числа 123450000 і 0.0000000012345 будуть представлені як 1.2345е +8 і 1.2345е-9. Це зручно як для запису чисел на папері, так і для зберігання чисел в пам'яті комп'ютера. Та у програмах дотримуватися цього стандарту не обов’язково. Інколи зручніше записувати дійсні константи у звичайній формі, з фіксованою крапкою.

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

За правилом замочування константи зберігаються у пам’яті як числа типу double. Але є можливість і примусово встановити тип константи. Для цього до константи долучають кінцеві символи F (float) або L (long double).

2.1.4Описи змінних


Усі змінні у програмі на мові С мають бути описані, (оголошені). Оголошення змінної - це інструкція, в якій зазначається ім'я змінної та її тип.

У простому випадку інструкція оголошення змінної виглядає так:

<тип> <имя>;

де: <ім'я> - ім'я змінної;

<тип> - ім'я типу для оголошуваної змінної.

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

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

int i, j, k ;

float x;

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

<тип> <имя> = < вираз ініціалізації >;

У якості виразу ініціалізації може бути константа, змінна, яка вже має значення, або вираз.

Якщо значення, що прийняла змінна після ініціалізації на повинно змінюватися, то для таких змінних використовують кваліфікатор const. Використання такого кваліфікатор перетворює змінну у константу. Нижче наведено приклад оголошення константи 2π.

const double twoPi=2*3.1425926;

Макроконстанти


У мові С++ існує можливість задавати константи за допомогою макропідстановок або макросів, які визначаються за допомогою директиви #define препроцесора, яка виглядає так:

#define <ім’я макросу> < текст заміни>

Ця директива виконує заміну ім’я макросу на текст заміни в усьому тексті програми, починаючи з наступного за директивою рядка.

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

Наприклад:

#define PI 3.1415927

#define TWOPI (2*PI)

2.1.5Операція розміру sizeof


Операція sizeof повертає обсяг пам’яті, яку займає або потребує операнд цієї операції, тобто розмір операнда. В ролі операнду може бути змінна, вираз або назва типу. Розмір визначається в байтах. Байт – це основна одиниця виміру обсягу пам’яті в інформатиці. Один байт дорівнює 8 біт. Біт це найменша одиниця виміру обсягу інформації, що відповідає одному розряду двійкового коду і може приймати значення нуль або один.

Операція sizeof має декілька стандартних форм:

sizeof (тип)

sizeof імя змінної

sizeof (вираз)

Розмір операндів різних типів у мові С не є визначеним і залежить від системи програмування та типу комп’ютера.

2.1.6 Арифметичні операції


Перелік арифметичних операцій С++ наведено у таблиці 2.3. Усі наведені операції, окрім операції %, виконуються над даними усіх числових типів. Операція % має сенс тільки для цілих чисел.

Таблиця 2.3- Арифметичні операції С++

- унарний

Зміна знаку операнда

*

Множення

/

Ділення

%

Остача від цілочислового ділення

+

Додавання

-

Віднімання


Слід також мати на увазі, що операція ділення для цілих чисел повертає також ціле число. Для того, щоб результат ділення був дійсним числом треба, щоб хоча б один операнд був також дійсним числом. Наприклад, 12 / 5 буде 2, але 12.0 / 5 буде 2.4.

2.1.7Операції присвоєння

Проста операція присвоєння


Операція присвоєння є однією із основних операцій у будь якій мові програмування. У мові С++ вона виглядає так:

<змінна> = <вираз>;

де: <змінна> - ім'я змінної, значення якої змінюється в результаті виконання інструкції присвоювання;

= знак операції присвоювання.

<вираз> – вираз, значення якого присвоюється змінній, ім'я якої вказане ліворуч від символу присвоювання.

Присвоювання виконується наступним чином:

  • спочатку обчислюється значення виразу, який знаходиться праворуч від знаку операції присвоювання;

  • потім отримане значення записується у змінну, ім'я якої стоїть ліворуч від символу присвоювання.

Операція присвоювання вважається вірною, якщо тип значення, що повертає вираз, відповідає або може бути приведений до типу змінної, яка отримує це значення. Наприклад, змінній типу double можна присвоїти значення виразу, тип якого float або int.

Особливість операції присвоювання у мові С полягає у тому, що ця операція повертає результат, що дорівнює значенню виразу у правій частині. Тому цю операцію можна використовувати у виразах. Слід тільки мати на увазі, що ця операція має низький пріоритет. Тому присвоєння у виразах слід брати в дужки. Наприклад, вираз a + (b = c+d) є допустимим у мові С.

Комбіновані присвоєння


Окрім простого оператора присвоєння у мові С завжди були ще і так звані комбіновані оператори присвоєння. Згодом вони з’явилися і у інших мовах.

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

Наприклад, замість присвоєння number = number + d можна записати number += d.

Таке присвоєння можна використовувати у комбінації з будь якою арифметичною операцією та багатьма іншими, наприклад, *=, /=, %=, тощо.

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

Унарні присвоєння


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

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

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

Різниця між префіксними та постфіксними операціями проявляється у тих випадках, коли ці операції використовуються у виразах разом з іншими операціями. Справа у тому, що префіксні операції мають найвищий пріоритет, а постфіксні – найнижчий. Хай, наприклад, змінна х має значення 5. Тоді значення виразу (3+ ++х) буде дорівнювати 9, а значення виразу (3+х++) буде дорівнювати 8, хоча «х» у обох випадках отримає значення 6.

2.1.8Вирази


Вираз - це послідовність операндів, об’єднаних знаками операцій та круглими дужками. У мовах високого рівня вираз мало відрізняється від формули. Основна відмінність полягає в тому, що вираз записується в один рядок. У таблиці 2.4 наведені приклади запису деяких виразів

Таблиця 2.4 Приклади запису виразів

Формула

Вираз



(a+b)/(a-b)/x



sqrt(pow (sin(x),2)+b)



exp(2.5*x)



pow(a, 1.5+b)


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

У найпростішому випадку вираз може являти собою константу або змінну.

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

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

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

2.1.9Пріоритети операцій у С++


У таблиці 2.5 наведено приорітети операцій С++. Чим менший номер пріоритету, тим вищий пріоритет. Деякі операції, можливо, вам незнайомі, та колись ви про них дізнаєтесь.

Таблиця 2.5 – Пріоритети операцій С++

Операції

Пріоритет

Префіксні ++ -- ( ) [ ] . ->

1

! +a -a (type) sizeof *a &a

2

* / % (арифметичні)

3

+ - (арифметичні)

4

<< >> (зсуви ліворуч і праворуч)

5

< > <= >= (порівняння)

6

= = != (порівняння)

7

& ^ | ( порозрядні логічні операції)

8,9,10

&& || (логічні операції)

11,12

? : (теренарна операція)

13

= += -= *= /= %= &= ^= |= >>= (присвоєння)

14

Постфіксні ++ -- , (операція кома)

15

2.1.10Узгодження типів


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

Є дві схеми автоматичного узгодження типів: арифметичні перетворення і перетворення під час присвоєнь.

Арифметичні перетворення


Ці перетворення виконуються у арифметичних та порозрядних операціях та операціях порівняння.

Під час цих перетворень перш за все виконується так званий integral promotion: типи bool, char і short перетворюються у int .

bool, char, short à int

Зокрема, перетворення bool à int перетворює true в 1, а false у 0.

Далі використовується принцип ”найбільшого операнду”, відповідно до ряду:

long double, double, float, usigned long, long, unsigned int, int

Тобто якщо, наприклад, у виразі є операнди типу float, int та double то усі операнди будуть приведені до типу double.

Перетворення типів в операціях присвоєння


У результаті операції присвоєння результат отриманий у правій частині приводиться до типу лівої частини. При цьому:

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

  • якщо тип змінної ліворуч знаку операції присвоєння нижче типу результату обчислення правої частини, то результат обчислення обтинається. Це полягає у тому, що може бути зменшено число розрядів мантиси (double >float), або відкинуто дробову частину (float >int). Але внаслідок таких перетворень можливо і спотворення результату. Наприклад, перетворення long  > int може призвести до втрати старших біт результату.

Явне перетворення типів


Мова С++ дозволяє і явне перетворення даних одного типу у інший. Для цього можна використовувати такі конструкції:

(тип) вираз

тип (вираз)

Останній варіант з’явився у С++ і схожий на виклик функції. Але на відміну від виклику функції тут перед круглими дужками рекомендують ставити пробіл.

2.1.11Бібліотека математичних функцій cmath


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

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

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

У таблиці 2.6 наведено деякі функції бібліотеки cmath.

Таблиця 2.6 Функції бібліотеки cmath

Приклад звернення до функції

Що обчислює функція

fabs(вираз)

Модуль числа

sqrt(вираз)

Квадратний корінь

pow(вираз, ступінь)

Піднесення до ступеню

exp(вираз для степеню числа e)

Експонента

log(вираз)

Натуральний логарифм

log10(вираз)

Логарифм за основою 10

sin(вираз)

Синус

cos(вираз)

Косинус

tan(вираз)

Тангенс

asin(вираз)

Арксинус

acos(вираз)

Арккосинус

atan(вираз)

Арктангенс

sinh(вираз)

Гіперболічний синус

cosh(вираз)

Гіперболічний косинус

tanh(вираз)

Гіперболічний тангенс

celi(вираз)

Округлення до найближчого більшого

floor(вираз)

Округлення до найближчого меншого

fmod(вираз ділене, вираз дільник)

Залишок від ділення з плаваючою точкою

2.1.12Використання об’єкту cin для введення даних


У мові С++ введення даних з консолі розглядається як потік символів з клавіатури у програму. Об’єкт cin і представляє цей потік у програмі.

Операція >> бере інформацію з цього потоку і перетворює її відповідно до типу змінної, що отримує цю інформацію.

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

сin >> x;

cin>>a>>b

>>c;

У першому випадку об’єкт забезпечує введення даних у змінну х.

У другому – до змінних a,b,c.

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

Форматування арифметичних даних під час виведення


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

Об’єкт cout можна налаштовувати для форматування за допомогою його методів setf (), precision (),.width(), fill () та інші.

Докладнішу інформацію про форматування арифметичних даних під час виведення за допомогою cout можна знайти у [2], стр.911- 927, а також на сайті:

https://www.c-cpp.ru/books/formatirovanie-s-pomoshchyu-funkciy-chlenov-ios

Тут ми наведемо як приклад тільки фрагмент програми, який ви можете додати до функції main() і подивитися результат.

cout << "Науковий формат i знак + :\n";

cout.setf (ios::showpos);

cout.setf (ios::scientific);

cout <<123 << " " << 123.23<<" " << 123 <<"\n";

cout<<"10 значущих цифр пiсля коми:\n";

cout.precision (10);

cout<<1/3.0<<" " <<0.1<<"\n";

cout<<"Ширина поля 10 знакiв:\n";

cout.width(10);

cout << 123 <<" "<< 123.23<<" "<<123 << "\n";

cout<<"Використання символiв заповнювачiв:\n";

cout.fill ('#');

cout.width(10);

cout <<123<< " " << 123.3<< " "<<123<< "\n";

2.1.13Зміна кольорів консолі та керування курсором


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

#define WIDTH 80 //ширина консолі у символах

#define HEIGHT 25 //висота консолі у символах

//перелік кольорів консолі

enum consoleColors{

BLACK, BLUE, GREN, CYAN, RED, MAGENTA, BROWN, LIGHTGRAY,

DARKGRAY, LIGHTBLUE, LIGHTGREN, LIGHTCYAN, LIGHTRED,

LIGHTMAGENTA,YELLOW, WHITE

};

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

// Отримуємо номер консолі

HANDLE hdlConsole = GetStdHandle(STD_OUTPUT_HANDLE);

//функція зміни кольору

void setColors(int textColor, int backColor)

{

backColor <<= 4; //backColor має перейти у старший напівбайт

WORD color = backColor | textColor; //Об'єднуємо кольори

SetConsoleTextAttribute(hdlConsole, color); //Передаємо кольори консолі

}

//функція визначення положення курсору

void getCursorPos(int &x, int &y){

CONSOLE_SCREEN_BUFFER_INFO bi;

GetConsoleScreenBufferInfo(hdlConsole, &bi);

x=bi.dwCursorPosition.X;

y=bi.dwCursorPosition.Y;

}

//функція зміни положення курсору

void gotoXY(int X, int Y)

{

COORD coord = { X, Y };

SetConsoleCursorPosition(hdlConsole, coord);

}

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

Ось приклад:

#include

#include

using namespace std;

//ТУТ СЛІД ДОДАТИ ВИЩЕНАВЕДЕНИЙ ТЕКСТ, АБО #INCLUDE

int main(int argc, char *argv[])

{

QCoreApplication a(argc, argv);

setColors(YELLOW, BLUE);

system("cls"); // очищаємо екран кольором BLUE

//Заголовок вiкна консолi

SetConsoleTitleA("Змiна кольорiв консолi та керування курсором на екранi");

string s="Тут центр екрану консолi";

int x = (WIDTH - s.length())/2;

int y = HEIGHT/2-1;

gotoXY(x,y);

cout<
return a.exec();

}
1   2   3   4   5   6   7   8   9   10   11

перейти в каталог файлов

Образовательный портал Как узнать результаты егэ Стихи про летний лагерь 3агадки для детей

Образовательный портал Как узнать результаты егэ Стихи про летний лагерь 3агадки для детей