You are on page 1of 7

Лабораторна робота №1

Тема: Програмування лінійних конструкцій мови С++.

Мета: Сформувати навички і вміння програмування лінійних конструкцій мовою С++ для
розв’язування задач. Розвивати логічне мислення при складанні алгоритмів.

Теоретична частина

Типи даних

Основні типи даних часто називають арифметичними, тому що їх можна використовувати в


арифметичних операціях. Для опису основних типів мови C++ використовують такі службові
слова:

 int (цілий);
 char (символьний);
 bool (логічний);
 float (дійсний);
 double (дійсний з подвійною точністю);
 void (порожній, не має значення).

Типи int, char, bool називають цілими, а типи float та double — дійсними з плаваючою
крапкою. Код, що формує компілятор для обробки цілих величин, відрізняється від коду для
величин з плаваючою крапкою.

Для уточнення внутрішнього подання та діапазону значень стандартних типів мова C++
використовує чотири специфікатори типу:

 short (короткий);
 long (довгий);
 signed (знаковий);
 unsigned (беззнаковий).

Базові типи даних для ПК (платформа Intel)


Розмір,
Тип Значення
байт
bool 1 true або false
unsigned short int 2 від 0 до 65 535
short int 2 від -32 768 до 32 767
unsigned long int 4 від 0 до 4 294 967 295
long int 4 від -2 147 483 648 до 2 147 483 647
int (16 розрядів) 2 від -32 768 до 32 767
int (32 розряди) 4 від -2 147 483 648 до 2 147 483 647
unsigned int (16 розрядів) 2 від 0 до 65 535
unsigned int (32 розряди) 4 від 0 до 4 294 967 295
char 1 від 0 до 256
float 4 від 1.2е-38 до 3.4е38
double 8 від 2.2е-308 до 1.8е308
long double 10 від 3.4е-4932 до 3.4е+4932

У таблиці наведено діапазони значень та розміри основних типів даних (для 16-розрядного і
32-розрядного процесорів).
Змінні

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

const int n = 20, m = 5, k = 4; — ініціювання констант n, m, k цілого типу;


float h = 17.5, d(5.5), sum; — опис дійсних змінних h, d, sum, ініціювання h і d;
char sf = 'f', st[ ] = "Мудрость лишь в истине."; — ініціювання символьних змінних.

Якщо тип значення, що ініціюється, не збігається з типом змінної, то виконуються


перетворення типу. Кожна змінна повинна мати своє ім’я, причому в одному блоці не може бути
двох змінних з однаковим ім’ям.
Областю дії ідентифікатора змінної є частина програми, в якій його можна
використовувати для доступу до зв’язаної з ним області пам’яті. Залежно від області дії змінна
може бути локальною або глобальною.
Локальна змінна визначена всередині блока (нагадаємо, що блок розташований між
фігурними дужками). Область її дії обмежена початком опису змінної та кінцем блока, включаючи
усі вкладені блоки. Змінна, визначена поза будь-яким блоком, називається глобальною, і областю
її дії вважається файл, у якому вона визначена від початку опису до його кінця.

int d; //глобальная переменная d


int main()
{
int b; // локальная переменная b
d = 1; // присваивание значения глобальной переменной
int d; // локальная переменная d
d = 10; // присваивание значения локальной переменной
::d = 3; // присваивание значения глобальной переменной
return 0;
}

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

У мові C++ існує декілька бібліотек, які містять засоби введення-виведення, наприклад:
stdio.h, iostream.h. Найчастіше застосовують потокове введення-виведення даних, операції якого
включені до складу класів istream або iostream. Доступ до бібліотеки цих класів здійснюється за
допомогою використання у програмі директиви компілятора #include <iostream.h>.
Для потокового введення даних вказується операція «>>» («читати з»). Це перевантажена
операція, визначена для всіх простих типів і покажчика на char. Стандартним потоком введення є
cin.
Формат запису операції введення має вигляд:
сin [>> values];
де values — змінна.
Так, для введення значень змінних х і у можна записати:

сin >> х >> у;.


Кожна операція «>>» передбачає введення одного значення. При такому введенні даних
необхідно дотримуватись конкретних вимог:
 для послідовного введення декількох чисел їх слід розділяти символом пропуску (« »)
або Enter (дані типу char роздiляти пропуском необов’язково);
 якщо послідовно вводиться символ і число (або навпаки), пропуск треба записувати
тільки в тому випадку, коли символ (типу char) є цифрою;
 потік введення ігнорує пропуски;
 для введення великої кількості даних одним оператором їх можна розташовувати в
декількох рядках (використовуючи Enter);
 операція введення з потоку припиняє свою роботу тоді, коли всі включені до нього
змінні одержують значення.

Для потокового виведення даних необхідна операція «<<» («записати в»), що


використовується разом з ім’ям вихідного потоку cout. Наприклад, вираз

cout << х;

означає виведення значення змінної х (або запис у потік). Ця операція вибирає необхідну
функцію перетворення даних у потік байтів.

Символ переведення на наступний рядок записується як рядкова константа, тобто "\n",


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

#define << sp " "


#define << ht "\t"
#define << hl "\n".

Слід пам’ятати, що при виведенні даних з використанням «cout <<» не виконується


автоматичний перехід на наступний рядок, для реалізації такого переходу застосовується
так переведення рядка "\n" або операція endl. Тобто, вивести рядкову константу можна,
наприклад, так:

cout << "О деле суди по исходу \n";


або cout << "О деле суди по исходу" << endl;.

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


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

#include <iostream.h>
#include <conio.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;
getch();
}

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


Наприклад, «\t» поміщає кожне наступне ім’я або число в наступну позицію табуляції (через вісім
символів).
Для додаткового керування даними, що виводяться, використовують маніпулятори setw(w)
та setprecision(d). Маніпулятор setw(w)призначений для зазначення довжини поля, що виділяється
для виведення даних (w — кількість позицій). Маніпулятор setprecision(d) визначає кількість
позицій у дробовій частині дійсних чисел.

#include <iostream.h>
#include <iomanip.h>
#include <conio.h>
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;
getch ();
}

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

456789123
456 789 123
456 789 123

У цьому прикладі з’явився новий заголовний файл iomanip.h, що дозволяє застосовувати


функції маніпуляторів.

Виведення кирилиці

Рішень задачі виведення кирилиці, яка є частиною більш загальної проблеми локалізації
додатків, кілька. Одне з найпростіших — використання функції setlocale, успадкованої з
бібліотеки С. Для її застосування необхідні дві речі: щоб в операційній системі Windows у
налаштуваннях мов і стандартів була за замовчуванням встановлена кирилиця і підключити до
програми заголовковий файл <clocale>:
#include <clocale>
setlocale( LC_ALL, "Russian" );

Приклад написання програми

Написати програму, яка переводить температуру в градусах Фаренгейта в градуси


Цельсія за формулою С = 5/9 (F – 32), де C — температура за Цельсієм, а F — температура за
Фаренгейтом

#include <iostream>
#include <clocale>
using namespace std;
int main()
{
setlocale( LC_ALL, "Russian" );
double fahr, cels;
cout << endl << “ Введите температуру по Фаренгейту” << endl;
cin >> fahr;
cels = 5.0 / 9 * ( fahr – 32 );
cout << “По Фаренгейту: “ << fahr << “, по Цельсию: “ << cels << endl;
return 0; // 9
}
Порядок роботи.

1. Пройти інструктаж з техніки безпеки.


2. Включити комп’ютер.
3. Завантажити середу розробки MS Visual C++
4. Скласти та відладити програму за вказаним варіантом.
5. Зберегти результат роботи;
6. Оформити звіт з лабораторної роботи.

Варіанти завдань.

Напишіть програму розрахунку за двома формулами. Попередньо підготуйте тестові


приклади (результат обчислення за першою формулою повинен в більшості варіантів збігатися з
другою). Для використання списока математичних функцій бібліотеки C++ необхідно підключити
до програми заголовковий файл <cmath>. Відсутні в бібліотеці функції виразіть через наявні.
Додаткові завдання.

1. Напишіть конвертер валют. Гривня – долар, гривня – євро. Поточні курси валют вводяться
з клавіатури.
2. Задані моменти початку і кінця деякого проміжку часу в годинах, хвилинах і секундах (в
межах однієї доби). Знайти тривалість цього проміжку в тих же одиницях.
3. Введіть два числа і знайдіть процентну складову першого числа від другого.

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

1. Які типи даних ви знаєте?


2. Як ви думаєте, чому в багатьох мовах програмування є кілька цілих та дійсних типів даних?
3. Які дані записуються в логічні змінні? Чому вони зазвичай займають ціле число байтів?
4. Що таке пріоритет операцій? Навіщо він потрібен?
5. В якому порядку виконуються операції, якщо вони мають однаковий пріоритет?
6. Що відбувається, якщо вирази входять змінні різних типів? Якого типу буде результат?
7. Опишіть операції ділення і взяття залишку. Подумайте, чому у математиці вони не
визначені для дійсних чисел.
8. Які стандартні математичні функції ви знаєте? В яких одиницях визначається аргумент
тригонометричних функцій?
9. Як виконати округлення (до найближчого цілого) мовою C++?
Рекомендована література
1. https://metanit.com/cpp/tutorial/1.4.php
2. https://metanit.com/cpp/tutorial/1.5.php
3. https://metanit.com/cpp/tutorial/2.1.php
4. https://metanit.com/cpp/tutorial/2.2.php
5. https://metanit.com/cpp/tutorial/2.3.php
6. https://metanit.com/cpp/tutorial/2.4.php
7. https://metanit.com/cpp/tutorial/2.5.php
8. https://metanit.com/cpp/tutorial/2.6.php
9. https://metanit.com/cpp/tutorial/2.9.php
10. https://metanit.com/cpp/tutorial/2.10.php
11. https://metanit.com/cpp/tutorial/2.11.php
12. https://www.youtube.com/watch?v=ADIhuD_vQ5g
13. https://www.youtube.com/watch?v=TQyIJ4xHOEE
14. https://www.youtube.com/watch?v=DY7p1IDIioM
15. https://www.youtube.com/watch?v=pwUNLjgw7lY
16. https://www.youtube.com/watch?v=nA28o5DMtRc
17. https://www.youtube.com/watch?v=Hkd2r5yEMvc
18. https://www.youtube.com/watch?v=aA8nhHbrC9Y
19. https://www.youtube.com/watch?v=id62LvJXK8Q

Перевірка знань
https://docs.google.com/forms/d/e/1FAIpQLSdCf8bdQJMAKOKM7POY-
mudAhnDUix93a3tCXJZ_lEa5aVkyw/viewform?usp=sf_link

You might also like