17532

Базові поняття С++

Лабораторная работа

Информатика, кибернетика и программирование

Лабораторна робота №1 Базові поняття Мета роботи – вивчити правила синтаксису мови програмування С особливості використання різних типів даних операції потокового введення / виведення. Теоретичні положення 1.1 Правила синтаксису Множина символів ...

Украинкский

2013-07-04

184.5 KB

4 чел.

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

Базові поняття

Мета роботи – вивчити правила синтаксису мови програмування С++, особливості використання різних типів даних, операції потокового введення / виведення.

  1.  Теоретичні положення

 1.1 Правила синтаксису

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

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

{} - операторні дужки; поєднують декілька операторів в один блок, визначають початок і кінець функції;

;  - кінець оператора;

,  - роздільник при перерахуванні констант, змінних;

( )  - містять параметри функцій або операторів;

/*  */  - містять коментар, який розміщується на декількох рядках;

//   - коментар, що займає один рядок.

Важливою складовою мови С++ є керуючі символи (Esc-послідовності), які використовуються для таких дій, як повернення каретки, табуляція, тощо. Керуючий символ складається із зворотного слеша (“\”), за яким вказується або буква, або знаки пунктуації, або комбінація цифр. У таблиці 1.1 наведений список деяких керуючих символів:

Таблиця 1.1- Керуючі символи

Спеціальний символ

Найменування

Звуковий сигнал (дзвінок)

\n

Новий рядок

\t

Горизонтальна табуляція

\v

Вертикальна табуляція

\r

Повернення каретки

\f

Нова сторінка

\

Апостроф

\”

Подвійні лапки

\?

Знак питання

\\

Зворотний слеш

1.2 Типи даних

Основними типами даних є наступні: char, short, int, long, float, double .

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

У таблиці 1.2 описані типи даних С++ :

Таблиця 1.2 – Опис типів даних

Тип

Назва типу

Об'єм ОП

Діапазон значень

char

Цілий

8 бітів

-128 … +127

signed char

Цілий із знаком

8 бітів

-128 … +127

unsigned char

Беззнаковий цілий

8 бітів

0...…255

short

Цілий короткий

16 бітів

-32768 …+32767

unsigned short

Беззнаковий цілий  короткий

16 бітів

0...…65535

int

Цілий

32 біта

-2147483648 …+2147483647

unsigned int

Беззнаковий цілий

32 біта

0...…+429496729

long

Цілий довгий

32 біта

-2147483648 …+2147483647

unsigned long

Цілий довгий беззнаковий

32 біта

0...…+429496729

float

З плаваючої комою

32 біта

- 3.4 1038 … 3.4 1038

double

З плаваючої комою довгий

64 біта

- 1.7 10308 … 1.7 10308

long double

Довгий із плаваючої комою

80 бітів

- 3.4 104932 … 3.4 104932

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

 

Приведення типів при обчисленні виразів

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

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

  1.  Операнди типу float приводяться до типу double.
  2.  Якщо один операнд long double, то другий приводиться до цього ж типу.
  3.  Якщо один операнд double, то другий також приводиться до типу double.
  4.  Будь-які операнди типу char і short приводяться до типу int.
  5.  Будь-які операнди unsigned char або unsigned short приводяться до типу unsigned int.
  6.  Якщо один операнд типу unsigned long, то другий приводиться до типу unsigned long.
  7.  Якщо один операнд типу long, то другий приводиться до типу long.
  8.  Якщо один операнд типу unsigned int, то другий операнд приводиться до цього ж типу.

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

double         ft, sd;

unsigned char  ch;

unsigned long  in;

int            i;

  ...

  Sd = ft*(i+ch/in);

/* Операнд ch приведеться до типу unsigned int (правило 5). Потім він приведеться до типу unsigned long (правило 6). По цьому ж правилу i приведеться до unsigned long і результат операції в круглих дужках буде мати тип unsigned long. Потім цей результат приведеться до типу double (правило 3) і результат усього виразу буде мати тип double. */

1.3 Операції

Операції - це комбінації символів, що визначають дії по перетворенню значень. У мові С++ визначені наступні операції (табл. 1.3):

Таблиця 1.3 - Операції мови С++

Опе-рація

Найменування

Приклад

Особливості

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

+

Додавання

a+b

Віднімання

a−b

*

Множення

a*b

/

Ділення

a/b

Результатом ділення цілих чисел буде ціле число (дробова частина відкидається), результат ділення дійсних чисел – дійсне число

%

Остача при діленні цілих чисел

a % b

Знак остачі збігається із знаком дільника

Унарний мінус

-a

Зміна знака числа

Логічні операції

&&

І (логічне множення)

a && b

Результат істина, якщо всі операнди істині

||

АБО (логічне додавання)

a||b

Результат істина, якщо хоча б один з операторів - істина

!

НЕ (заперечення)

!a

Результат протилежний значенню операнда

Операції відношення (порівняння)

==

Дорівнює

a==b

!=

Не дорівнює

a!=b

>

Більше

a>b

<

Менше

a<b

>=

Не менше

a>=b

<=

Не більше

a<=b

Бітові операції

&

І (кон’юнкція)

3&2=5

1&1=1, 0&1=0, 1&0=0, 0&0=0

|

АБО (диз'юнкція)

3|2=3

1|1=1, 0|1=1, 1|0=1, 0|0=0

^

виключаюче АБО

3^2=1

1^1=0, 0^1=1, 1^0=1, 0^0=0

~

Доповнення (заперечення бітів)

~6=-7

~6=~(+)00000110=(-)11111001=-7

Операції зсуву

<<

Зсув вліво на задане число бітів

a<<b

Зсув бітів ліворуч у числі а на b позицій. Результат буде того ж типу, що і а. b не може бути від’ємним або більшим, ніж а.

>>

Зсув вправо на задане число бітів

a>>b

Зсув бітів праворуч у числі а на b позицій. Результат буде того ж типу, що і а. b не може бути від’ємним або більшим, ніж а.

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

=

Присвоєння

a=b

Значення b заноситься в комірку оперативної пам'яті з ім'ям а. Приведення даних до одного типу відбувається автоматично

+=

Присвоєння суми чисел

a+=b

a=a+b. Короткі числа перетворюються у довгі із збереженням значення, довгі у короткі – із втратою старших бітів. Дійсні числа перетворюються в цілі з відкиданням дробової частини.

%=

Присвоєння остачі ділення

a%=b

a=a%b. Остача визначається тільки при діленні цілих чисел.

−=

Присвоєння різниці чисел

a-a-=b

a= a-b

*=

Присвоєння добутку чисел

a*=b

a=a*b

/=

Присвоєння частки від ділення

a/=b

a=a/b

>>=

Присвоєння із зсувом вправо

a>>=b

<<=

Присвоєння із зсувом вліво

a<<=b

&=

Присвоєння бітової кон’юнкції

a&=b

|=

Присвоєння бітової диз'юнкції

a|=b

^=

Присвоєння значення операції «виключаюче АБО»

a^=b

Унарні операції

++,

−−

Префіксне додавання, віднімання

++a або а=а+1

−−а

Спочатку збільшується (зменшується) значення змінної на 1, потім воно використовується

++,

−−

Постфіксний додавання, віднімання

а++,   

а−−

Спочатку використовується значення змінної, потім воно збільшується на 1

Тернерна операція

?:

Умовна операція

<операнд1>? <операнд2>: <операнд3>

Якщо значення <операнд1> істине, то обчислюється <операнд2>, інакше – <операнд3>

Пріоритети операцій і порядок обчислень

У мові С++ операції з вищими пріоритетами обчислюються першими. Найвищим пріоритетом є пріоритет, рівний 1. Пріоритети і порядок операцій наведені в табл. 1.4:

Таблиця 1.4 - Пріоритети  операцій

Пріоритет

Знак операції

Типи операції

Порядок виконання

1

() [] . ->

Вираз

Ліворуч праворуч

2

+ - ~ ! * & ++ --  

Унарні

Праворуч ліворуч

3

* / %

Мультиплікативні

Ліворуч праворуч

4

+ -

Адитивні

5

<< >>

Зсуву

6

< > <= >=

Відношення

7

== !=

Відношення (рівність)

8

&

Порозрядне І

9

^

Порозрядне виключає АБО

10

|

Порозрядне АБО

11

&&

Логічне І

12

||

Логічне АБО

13

?:

Умовна

14

= *= /= %= += -= &= |= >>= <<= ^=

Просте і складене присвоювання

Праворуч ліворуч

15

,

Послідовне обчислення

Ліворуч праворуч

1.4 Структура програми 

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

  •  директив препроцесора;
  •  вказівок компіляторові;
  •  зовнішніх оголошень і визначень;
  •  описів функцій.

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

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

Оголошення змінної задає ім'я і атрибути змінної та приводить до виділення для неї пам'яті. Визначення змінної, окрім того, задає початкове значення змінної (явно або неявно).

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

Програма може містити довільне число директив і вказівок компіляторові, оголошень і визначень змінних, описів функцій. Порядок появи цих елементів у програмі досить істотний; він впливає на можливість використання змінних, функцій і типів у різних частинах програми. Для того, щоб програма мовою С++ могла бути скомпільована і виконана, вона повинна містити принаймні одну функцію. Якщо ж програма містить кілька функцій, то серед них виділяється одна головна функція, що має ім'я main. З неї починається виконання програми; вона визначає дії, що виконуються програмою, і викликає інші функції. Якщо програма містить тільки одну функцію, то вона і є головною (має ім'я  main).

Розглянемо найпростіший приклад програми на С++ :

#include <iostream>        // директива препроцесора

main()               //  головна функція

{

 cout << "Hello,world\n";   // виведення повідомлення на екран

}

Рядок #include повідомляє компілятору, щоб він включив стандартні можливості потоку введення і виведення, що є у файлі iostream.h. Без цих описів вираз cout<<"Hello,world\n" не мав би змісту. Операція << ("помістити в") пише свій перший аргумент у другий (рядок "Hello,world\n" у стандартний потік виведення cout). Рядок - це послідовність символів, що заключена у подвійні лапки. У даному рядку символ “\n “ є управляючим символом переходу на новий рядок.

Інша частина програми

main()

{ ...

}

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

2.  Потокове введення / виведення 

Потокове виведення виконується за допомогою операції зсуву вліво ”<<”. Стандартна операція зсуву вліво ”<<” для операцій виведення перевизначається, тобто для цієї операції визначаються нові можливості.  Потокове введення аналогічне виведенню, але використовує перевизначену операцію зсуву вправо ”>>”. Функції потокового введення (cin>>) і потокового виведення (cout<<) описані у бібліотеці iostream. Для керування ними можуть використовуватися маніпулятори, представлені в таблиці 1.9.

Таблиця 2.1 – Маніпулятори управління потоковим  введенням / виведенням

Маніпулятор

Дія

dec

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

hex

Установка прапора форматування із шістнадцятковим перетворенням

oct

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

setbase(int n)

(для цього треба включити в програму заголовковий файл

#include <iomanip> )

Установка системи числення при перетвореннях із основою n
(0, 8, 10 або 16). Нуль за замовчуванням означає десяткову систему при виведенні і правила
С++ для літералів цілих чисел при введенні

resetiosflags(long f)

Очищення форматних бітів в ins або outs, заданих аргументом f

setiosflags(long f)

Установка біт форматування в ins або outs, заданих аргументом f 

setfill(int c)

Установка символу-заповнювача в c

setprecision(int n)

Установка точності подання чисел із плаваючою крапкою, що дорівнює n розрядам

setw(int n)

Установка ширини поля виведення значення рівним n 

 

  1.  Завдання

За допомогою функції cout вивести текст про виконавця роботи (прізвище, ініціали, група, варіант).

За допомогою функції cin ввести два цілих числа. Виконати бітову операцію відповідно варіанту (таб. 3). Результат вивести за допомогою функції cout у десятковому та шістнацядковому вигляді. Пояснити отриманий результат.

Використовуючи функцію cin ввести три дійсних , b та c) числа. За допомогою функції cout вивести на екран введені числа, номер варіанта та значення обчисленого виразу (значення варіанта задавати константою).

Таблиця 3.1Варыанти

Варіант

Завдання1

Завдання2

1

c=~(a & b);

2

c=~(a | b);

3

c=~(a ^ b);

4

c=(~a & ~b);

5

c=(~a | ~b);

6

c=(~a ^ ~b);

7

c=-(a | b);

8

c=-(a & b);

9

c=-(a | b);

10

c=~(a & -b);

11

c=~(-a ^ b);

12

c=-(a | -b);

13

c=(~a | -b);

14

c=-(~a & b);

15

c=-(a ^ ~b)

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

Звіт по лабораторній роботі повинен бути виконаний в електронному варіанті (Word або HTML) і містити наступні розділи:

номер і назва лабораторної роботи;

відомості про виконавця (прізвище, ініціали, група, варіант);

постановка задачі;

опис виконання операції «доповнення» для номера варіанта;

алгоритм рішення п.3 завдання;

текст програми;

 відео - копії отриманих результатів.

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

Як визначаються коментарі в тексті програми?

Які заголовні файли використовуються для підключення функцій введення / виведення?

У чому відмінність операторів постфіксного і префіксного додавання (віднімання)?

Робота з бітовими операціями.

Особливості роботи функцій потокового введення / виведення.

Чи обов'язково в програмі повинна бути функція  main?

PAGE   \* MERGEFORMAT9


 

А также другие работы, которые могут Вас заинтересовать

19363. Податок на додану вартість 27.14 KB
  Тема2: Податок на додану вартість Загальна характеристика ПДВ Платники ПДВ Об’єкт оподаткування База оподаткування та порядок визначення для операцій різних видів Ставки ПДВ Пільги з ПДВ Поняття та порядок обчислення податкових зобов’язань та под...
19364. Акцизний податок 112.39 KB
  Тема3: Акцизний податок Загальна характеристика акцизного податку Платники акцизного податку Об’єкт оподаткування База оподаткування та порядок визначення суми акцизного податку Особливості оподаткування акцизним податком тютюнових виробів і алког
19365. Мито. Ставки, пільги, порядок сплати до бюджету 111.02 KB
  Тема 4: Мито Види мита Платники та об’єкт оподаткування Ставки пільги порядок сплати до бюджету. Види: За напрямками руху товарів Ввізне Вивізне Сезонне митона 4 місяці Особливі видизахист виробника від конкуренції з іноземними товарами Сп
19366. Податок на прибуток підприємств 112.08 KB
  Тема 5: Податок на прибуток підприємств Загальна характеристика податку на прибуток Платники та об’єкт оподаткування Склад доходів та порядок їх визнання Склад витрат та порядок їх визнання Порядок нарахування амортизації Ставки податку на прибуток ...
19367. Податок на доходи фізичних осіб 129.21 KB
  Тема 6: Податок на доходи фізичних осіб Платники та об’єкт оподаткування Види доходів що включаються і не включаються до загального оподатковуваного доходу Податкові соціальні пільги Податкова знижка Ставки податку та особливості оподакування окре...
19368. Плата за землю 113.24 KB
  Тема 7: Плата за землю Загальна характеристика плати за землю Платники об’єкт оподаткування та ставки плати за землю Пільги щодо сплати за землю порядок сплати до бюджету 24 зведеного бюджету Платники: Фізичні особи – власники землі і землекористу...
19369. Екологічне оподаткування 132.41 KB
  Тема 8: Екологічне оподаткування Система екологічного оподаткування Екологічний податок Збір за першу реєстрацію транспортного засобу Рентна плата за нафту природний газ і газовий конденсат що видобуваються в Україні Рентна плата за транспорттуванн
19370. Платежі за ресурси 112.72 KB
  Тема 9: Платежі за ресурси Збір за спеціальне використання води Збір за використання лісових ресурсів Плата за користування ресурсами Збір за користування радіочастотним ресурсом Платники збору – водокористувачі: Юридичні особи Фізичні особи – підп
19371. Міни спеціального призначення 28.5 KB
  Міни спеціального призначення: а освітлювальна міна б димова міна Основні складові частини: оболонка; запалюючий стакан; вибуховий заряд; димоутворююча речовина; стабілізатор; виштовхуючий заряд; діафрагма; смолоскип; парашут; нап...