русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Розробка програм з використанням посилань


Дата додавання: 2014-05-08; переглядів: 1640.


Приклад 1.Знайти суму елементів квадратної матриці 3*3, розмістивши її в динамічній пам¢яті.

 

 
 

 


 

 

program suma;

type

TM= ^array[1..3,1..3] of real;

var

matr:TM;

i,k:word;

s:real;

begin

new (matr);

writeln (‘ Введiть матрицю у виглядi матриці’);

for i:=1 to 3 do

begin

for k:=1 to 3 do

read (matr^[I,k];

readln;

end;

s:=0;

for i:=1 to 3 do

for k:=1 to 3 do

s:=s+matr^[i,k];

writeln ('Сума елементів матриці=',s:6:2);

dispоse (matr);

end.

 

 


Завдання для самоперевірки

 

1. Що таке статичні структури даних.

2. Що таке динамічні структури даних.

3. Яка різниця між статичними і динамічними структурами даних.

4. Який сенс в використанні динамічних структур?

5. Що міститься в змінній посилального типу.

6. Яку дію необхідно виконати щоб отримати значення, на яке вказує посилання.

7. Що є основним механізмом організації динамічних даних.

8. Описати посилальну змінну на дійсне значення.

9. Описати посилальну змінну на масив 10-ти цілих значень.

10. Маємо опис

VAR

i: ^integer;

Виконати всі необхідні дії для збереження значення 25.

11. Використовуючи динамічну структуру, побудувати масив даних про студентів групи і вивести відомості про одружених студентів.

 


ОРГАНІЗАЦІЯ ПРОГРАМ НА МОВІ С++

 

1) Історія розвитку мови.

2) Синтаксис мови.

3) Структура програми.

4) Елементи мови.

5) Операції.

6) Типи даних. Модифікатори.

7) Елементарний ввід-вивід.

8) Оператори мови.

9) Структуровані типи даних.

10) Функції.

11) Указники.

12) Файли і потоки.

13) Класи.

Історія розвитку мови

С++ розвинувся із С, який був створений Денісом Рітчи на основі мов BCРL і В.

BCРL в 1967 році створений Мартіном Річардом як мова для написання компіляторів і ОС. В - дублікат BCPL.

С розроблений Денісом Рітчи в1972 р. Став широко відомим після розробки ОС INIХ

До кінця 70-х років С розвинувся в ту, що тепер відносять до класичного С або „С Кернігана і Рітча”.

Широке розповсюдження С привело до тому, що з'явилися варіації мови досить схожі, але не сумісні один з одним. Була потрібна стандартна версія мови С. Цей стандарт був затверджений в 1989г. американським національним комітетом стандартів ANSI. Цей комітет скооперувався з міжнародною організацією стандартів ISO щоб стандартизувати С у світовому масштабі. Цей стандарт був опублікований в 1990 р. С – стандартизована, апаратно- незалежна мова.

С++ – розширення С – був розроблений Вьєрном Строуструпом на початку 80-х р.

С++ приводить в порядок С і, головне, забезпечує можливість об'єктно-орієнтованого програмування.

С++ гібридна мова, він передбачає можливість програмувати і в процедурному стилі і в об'єктно-орієнтованому стилі.

Зараз існують більше 2000 мов програмування високого рівня. Одним з головних стимулів для розробки нової мови є потреба в розробці складних додатків.

Основні синтаксичні правила мови С++

1)Прописні і рядкові букви вважаються різними символами.

2)В тексті програми можуть використовуватись коментарі. Багаторядкові коментарі обмежуються символами / * і */ . Однорядкові визначаються символами // на початку.

3)Кожне речення закінчується символом ( ; )

4)В рядку можна розміщувати декілька операторів .

5)Тіло функції або складний оператор заключаються в фігурні скобки { }. Їх можна вважати операторними скобками

6)Все типы, поіменовані константи, переменные, функции повинні бути объявлены до их первого использования. Об¢яви можуть зустрічатись в довільному місці програми.

7)Всі підрограми є функції.

 

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

1) Структура програми

2) Препроцесор.

 

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

 

Програма на С++ може складатися з великого числа висхідних файлів, які можуть містити описи типів, функцій, змінних і констант. Один з файлів містить головну функцію, ім'я якої main

Структура файла головної функції:

 

<директиви процесора>

<тип результата> main ([список формальних параметрів>])

{

< oписи >

< оператори >

< директиви препроцесора >

}

 

Як правило, головна функція не повертає результат. Його можна опустити або вказати порожній тип void

Список параметрів також відсутній, Його можна опустити або описати як тип void

<oписи> не обов¢язково повинні бути на початку тіла функції . Але для зручності рекомендується їх поміщати на початку.

 

Препроцессор

1) Директиви препроцесора.

2) Заголовочні файли

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

На цьому етапі можна виконувати наступні дії :

- включити в компілюючий файл інші файли ;

- визначити символічні константи і макроси ;

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

Всі директиви препроцесора починаються з символу # .

В кінці директив не ставиться символ ” ; ”

 

Директиви препроцесора

 

1) #include

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

Формат

#include < «ім'я файла» > | “ «ім'я файла»” | «ідентифікатор макроса»

Відмінність між двома першими формами директиви полягає в методі пошуку препроцесором файла що включається:

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

– в другому випадку послідовність пошуку наступна:

- каталог, де збережений поточні файли

- каталог, де зберігаються вже підключені файли

- поточний каталог

Ім'я файла може бути вказано з шляхом . В цьому випадку інші каталоги не є видимими .

 

2) #dеfine

Створює символічні константи і макроси.

Формат визначення:

#dеfine «ідентифікатор» «заміщаючий текст»

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

Приклад визначення символічної константи: #dеfine PI 3.14

 

Макрос – символічне ім'я деяких операцій.

Макрос може бути. без параметра і з параметрами.

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

#define V 2*PI

Приклад визначення макроса з параметром:

#define V_CIRCLE (x) (PI*(x)*(x))

 

Undef

Відміняє дію відповідних символічних констант і макросів.

Формат:

#undef «ідентифікатор»

Наприклад, #undef РІ

 

Заголовочні файли

Заголовні файли мають розширення .h і містять оголошення і визначення, які є загальними для різних програмних файлів.

Як такі об¢явлення і визначення виступають класи, структури, об¢єднання, перелічення і прототипи функцій.

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

1) Призначення препроцесору.

2) З якої функції починає роботу програма на мові С++.

3) Чим характеризується змінна.

4) Які імена змінних є вірними:

a) Massa b) Progr.c c) 12Ge

d) Line5 e) _cong f) massa_

5) Якими символами обмежується тіло функції.

6) Імена numder i Number посилаються на одну змінну? Відповідь пояснити.

7) Використовуючи директиви препроцесору описати підключення системної бібліотеки iostream.h і файлу MyFile.cpp.

8) Визначити символічну константу g=9,8

9) Оголосити іменовану константу.

10) Що містить пустий рядок.

11) Записати у вигляді рядка фразу.

12) Записати числову константу в десятковій, восьмирічній і шістнадцятирічній формі.


Елементи мови С++

 

1) Алфавіт.

2) Числа.

3) Рядки.

4) Константи.

5) Ідентифікатори.

6) Змінні.

Алфавіт

 

Алфавіт - це сукупність знаків, що використовуються для побудови конструкцій мови.

Алфавіт мови С++ складають:

- латинські букви великі і маленькі (A..Z, a..z);

- цифри (0..9);

- спеціальні символи (= # + - . , : ; ‘ @ $ * ( ) [ ] { } / % < > пропуск);

- службові слова (switch if for do . . .).

 

Великі і малі літери розрізняються.

 

Числа

 

Для зображення чисел по умовчанню використовується десяткове подання.

Числа можуть бути цілими і дійсними.

 

Цілі числа можуть мати знак. Знак плюс може опускатись. Наприклад: 234, -34.

Можна використовувати цілі числа в 8-річному і 16-річному форматі.

В разі 8-річного представлення, значення повинно починатись з символу 0(ноль) за яким слідують цифри 0 . . 7. Наприклад: 045, 0153. Максимальне значення 037 777 777 777.

В разі 16-річного представлення, значення повинно починатись з символів 0х|0Х(ноль Х) за яким слідують 16-річні цифри (0 . . 7, a . . f) без врахування регістру. Наприклад: 0х567, 0х6F41, 0Х216. Максимальне значення 0хff fff fff.

 

Дійсні числа можуть бути представлені в звичайній формі (23.4, -34.8123, 0.0034) або в експоненціальній формі:

Математичне представлення числа в експоненціальній формі:

7230 = 7.23×103 , 0.00067 = 6.7×10-4.

Відповідний запис на мові С++: 7.23Е3 6.7Е-4

Не можна дійсне число починати з крапки ( .789), потрібно записувати 0.789.

 

Рядки

 

Рядок - це послідовність довільних символів, обмежених подвійними лапками. Наприклад:

”Розум поперед справи” , ”Золоті руки у того, хто навчався добре”

Рядок закінчується символом нуля ”\0”. Пустий рядок містить тільки код нуля ”\0”.

Перенесення довгого рядка можна здійснити за допомогою символу ”\”.

 

Константи

 

1) Явні константи (літерали).

2) Іменовані константи

 

Константи – це величини, які не змінюються.

 

Не іменовані константи (літерали)

 

Константи можуть використовуватись в тексті програми, в виразах і операторах.

Константи можуть бути:

- числовими (цілі, дійсні) (45, -62.789б, 0х57),

- рядковими (”Очі - дзеркало душі”),

- символьними ( ‘а’, ‘6’, ‘%’),

 

Іменовані константи

 

Іменована константа - це константа, якій присвоєно ім¢я.

Формат об¢яви:

const <тип> <им¢я константи> = <значення> ;

Наприклад, const float PI = 3.14; const int max= 345; const char a=’y’;

Для цілих констант тип можна не вказувати, наприклад, const max= 345;

 

Для рядкової константи використовується указник:

char *const =”добрий день!”;

 

Ідентифікатори

 

Ідентифікатор - це будь-яка послідовність латинських букв, цифр і символу підкреслювання ( _ ), яка починається з букви або символу підкреслювання. Довжина ідентифікатору не обмежується, але оболонка може накладати свої обмеження. Як правило, використовується довжина не більше 255 символів.

Велику і малі літери розрізняються, тобто b1 і B1 є різними ідентифікаторами.

Ідентифікатори використовуються для формування імен різних елементів програми.

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

 

Змінні

 

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

Формат об¢яви змінних:

<клас пам¢яті> <тип> <список змінних> ;

<клас пам¢яті> - визначається одним з чотирьох ключових слів мови С++: auto, extern, register, static, і указує, яким чином розподілятиметься пам'ять під оголошувану змінну, з одного боку, а з іншого, область видимості цієї змінної, тобто, з яких частин програми можна до неї звернутися.

 

Наприклад, іnt x1, x2;

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

іnt х1 = 5, х=2*2;

 

Операції

 

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

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

3) Операції відношень

4) Операції присвоювання

5) Спеціальні операції

6) Пріоритети операцій

 

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

Застосовуються до дійсних і цілих чисел і указників. Можуть бути унарними і бінарними.

Бінарні операції мають два операнди :

+ складання

- віднімання

* множення

/ ділення

% залишок цілочисельного ділення

В операціях множення і ділення (* /) операнди можуть бути будь-яких арифметичних типів. Якщо обидва операнди цілі, то і результат буде цілим, тобто виконується цілочисельне ділення: десяткова частина просто відкидається і округлення не проводиться.. Якщо хоч один з операндів дійсний, то і результат дійсний.. Наприклад

 

7/4 = 1 17/5 = 3

14/3=4 14.0/3=4.6 14/3.0=4.6 14.0/3.0=4.6

 

В операції узяття залишку ( %) - обидва операнди повинні бути цілими.

 

Унарні операції мають один операнд:

+ - знаки чисел

++ інкремент (збільшення на 1)

-- декремент (зменшення на 1)

Операції ++ і -- виконуються швидше, ніж звичайне складання або віднімання (і = і+1).

Ці операції мають по 2 форми: префіксна форма і постфіксна форма запису.

 

Префіксна форма запису ++a

Постфіксна форма запису a++

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

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

Операція застосовується тільки для змінних, для виразу не допускається. Тому запис

+ +( a+1) є помилковим.

 

Приклади.

1) Визначити значення змінних a,b після виконання операцій

а =1;

b = 5 + а++;

Після виконання а=2, b=6

 

2) Визначити значення змінних a,b після виконання операцій

a=1;

b = 5 + (++а);

Після виконання в=7, а=2

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

Операндами логічних операцій є логічні значення. Результатом логічної операції є логічне значення правда чи неправда. В Borland С++ правда має значення 1, а неправда - 0. Перелік операцій приведено в таблиці.

 

Позначення операції Операція
! Логічне „не”
&& Логічне „і”
|| Логічне „або”

Операції відношень

Результатом операції відношення є логічне значення правда чи неправда.

Перелік операцій приведено в таблиці.

 

Позначення операції Операція
== Перевірка на рівність
!= Перевірка на не рівність
> Більше
< Менше
>= Не менше
<= Не більше

 

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

С++ має кілька операцій присвоювання, які дозволяють скорочувати запис виразів, що присвоюються. Наприклад, оператор с=с+3; може бути скорочений завдяки використанню складеної операції додавання += : с +=3; Такі операції виконуються швидше.

Формат складених операцій присвоєння:

<змінна> <операція>= <вираз>;

Перелік складених операцій присвоєння приведено в таблиці:

 

Позначення операції Операція
+= Присвоєння з додаванням
-= Присвоєння з відніманням
*= Присвоєння з множенням
/= Присвоєння з діленням
%= Присвоєння залишку цілочисельного ділення
<= Присвоєння з зсувом вліво
>= Присвоєння з зсувом вправо
&= Присвоєння з порозрядною операцією „AND”
^= Присвоєння з порозрядною операцією „XOR”
|= Присвоєння з порозрядною операцією „OR”

 

Складені операції присвоєння присвоюють першому операнду результат примінення відповідної простої операції, що вказана перед символом „=”, до першого і другого операндів. Операція присвоєння повертає як результат присвоєне значення. Завдяки цьому вони допускають сцеплення. Наприклад, можна записати:

А = (В = 1) + 2;

Спочатку визначається значення в дужках. Тобто змінній В присвоюється значення 1. Ця операція поверне значення 1, до цього результату додається 2, отримане значення присвоюється змінній А, значить А=3.

 

С++ допускає запис в одному реченні кілька операцій присвоювання

А=В=С=Ø;

 

Спеціальні операції С++

 

1) Операція умови

2) Операція визначення розміру операнду

3) Операція слідування

 

Операція умови

Це єдина операція, яка має три операнди.

Формат запису операції:

<умова> ? <вираз_1> : <вираз_2>;

Якщо значення <умова> є правда, то операція повертає в якості результату значення <вираз_1>, інакше - <вираз_2>.

Наприклад,

a=1; b=3;

C=a>b ? a+b : 0;

Якщо a>b, то С буде дорівнювати сумі a+b, в іншому випадку С буде дорівнювати 0(нулю). В нашому прикладі С=0.

 

Операція визначення розміру операнду

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

Операція має дві форми. Формат запису операції:

Sizeof <вираз>

Sizeof (<ім¢я типу>)

Наприклад, С= sizeof (int); Результат - С=2

double a; С= sizeof а; Результат - С=8

 

Операція слідування

Операція (,), що называється операцією слідування, об¢єднує два довільних вирази, які обчислюються зліва направо. Спочатку обчислюється значення лівого операнду. Тип його результату визначається як void. Потім обчислюється значення правого операнду. Значення і тип результату операції слідування вважається рівним значенню і типу правого операнду. Наприклад,

С= (а=4, в=а+5)+7;

Результат в дужках дорівнює 9, в=9, С=16,

Приоритети операцій

 

! - + ++ -- sizeof
* / %
+ -
< <= > >=
= = !=
&&
||
?:
= *= /= %= += -=
,

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

1) Записати на мові C++ вираз, що є істиною ,якщо всі числа x,y,z - додатні

2) Які значення будуть мати змінні a, b після виконання операції

a= (b=5) +7;

3) Визначити значення змінної a :

a=2;

a+=6;

4) Визначити значення змінних a, b після виконання операцій:

а=3;

b=2*(a++)+7;

5) Визначити значення змінних a, b після виконання операцій:

a=2;

b=5+2*(--a)+3;

6) Визначити значення a

a=15/2;

7) Визначити значення b

b=7 % 3;

8) Визначити значення b

b=25.0/2;

9) Який символ ставиться в кінці кожного оператора і опису?

10) За правилами С++ записати вираз, значення якого є правда, якщо a=b і неправда в протилежному випадку.

11) За правилами С++ записати вираз, значення якого є правда, якщо a#b і a позитивне, і неправда в протилежному випадку.

12) Визначити значення змінної а

a=7;

a++;

13) За правилами С++ записати вираз, значення якого є правда, якщо a лежить в проміжку [-2, 5]і неправда в протилежному випадку.

14) Визначити значення змінних a, b після виконання операцій

a=3;

b=(a>7) ? 10 : 12;

15) Визначити значення змінних a, b після виконання операцій

b=(a=2, a+=2)+3;

16) Визначити значення змінної a після виконання операції

a=sizeof char;

17) Визначити значення змінної a після виконання операції

a=2;

a+=7;

18) Визначити значення змінних a, b після виконання операцій

a=3;

b=2*a++ ;

a*=2;

19) Записати вираз значення якого буде правда якщо значення змінної а лежить в проміжку (5, 15)

20) Записати вираз значення якого буде правда якщо значення змінної а не лежить в проміжку (-8,25)

21) Яке значення буде мати змінна с після виконання операторів

a=1; b=3;

C=a>b ? a+b : 0;

22) Визначити значення змінної а після виконання операторів

a=15;

a%=2;

23) Визначити значення змінної а після виконання операторів

a=5;

a/=2;

24) Записати вираз, що є правда якщо а не дорівнює b і неправда в протилежному випадку.

25) Визначити значення змінних a,b після виконання операторів

a=7;

b=(a+=2, --a)+12;

 

Типи даних С++

1) Класифікація типів. Модифікатори

2) Оголошення типів

3) Приведення типів

 

Класифікація типів

 

Типи даних можна класифікувати двома різними способами.

 

Перший спосіб:

Всі типи даних можна розділити на 4 групи:

1) «порожній тип » - void

2) скалярний тип – арифметичні типи (int float doble char), перелічення, указники, посілання

3) тип «функція»

4) агреговані типи: масиви, структури, об¢єднання, класи.

Другий спосіб:

 

Інший спосіб класифікації типів, це розбиття їх на основні і похідні

До основних типів відносяться void char int float doube і їх варіанти з модифікаторами shozt (короткий), lonq(довгий) siqned (із знаком ), uusiqned(без знака) Модифікатор siqned мається на увазі за умовчанням і тому не указується. Таким чином, можливі наступні описи:

 

Ім¢я типа Назва типа
int ціле
short int коротке ціле
lonq int довге ціле
unsigned short int коротке ціле без знака
unsigned int ціле без знака
unsigned lonq int довге ціле без знака
float з плаваючою крапкою
double з плаваючою крапкою подвійної точності
long double довге дійсне
char ціле
unsigned char ціле без знака (0 .. 256)

 

 


Дані типу char займають в пам'яті 1байт. Тип char є типом ціле. Може бути із знаком і без. В компіляторі встановлена опція „значення без знака ”.

Значення типу char є символом, укладеним в одинарні лапки. Може використовуватися група символьних констант при виведенні:

 

Символ Призначення
звуковий сигнал при виведенні
\n перехід на новий рядок
\t табуляція
\\ символ «\»
\' символ одинарної кавички
\'' символ подвійної кавички

 

Розмір пам'яті, що відводиться для зберігання змінних стандартного типу, (а отже і діапазон їх значень) залежить від компілятора і ОС.

До похідних типів відносяться масиви, структури, об'єднання, класи, типи функцій, указники, посилання.

 

Оголошення типів

 

Можна створювати свої типи . Формат об¢явлення типа:

typedef <визначення типа> < ім¢я типа> ;

Наприклад, typedef double MyType;

 

Приведення типів

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

Можна вказувати явне приведення типів за допомогою операції явного приведення типів:

(<тип>)

Наприклад, int m=1,n=2;

double A=(double)m/n;

Елементарний ввід-вивід С++

 

1) Введення-виведення в стилі С

2) Введення-виведення в стилі С++

3) Розробка програм реалізації лінійних алгоритмів

 

Ввід-вивід в стилі С

 

Обов'язкове підключення заголовного файла відповідної бібліотеки введення-виведення

#include <stdio.h>

 

Вивід в стилі С

 

Використовується спеціальна функція printf()

Формат функції:

printf (<формат виводу> <список виводу>);

<Формат виводу> - рядкове значення, яке може містити пояснюючий текст і формат для кожного значення що виводиться. Послідовність форматів і змінних виведення повинна співпадати по типу.

<список виводу> - змінні або вирази. Елементи списку розділяються комами.

Опис формату

%[ширина][.точність]<тип>

<тип> може бути:

 

Формат Опис
с символ
d, i десяткове ціле із знаком
u десяткове ціле без знака
f дійсне
s рядок

 

Наприклад,

printf (“Добрий день!”);

printf (“при Х=%f, Y=%f”, X,Y);

Ввід в стилі С

 

Використовується функція scanf()

Вводить символи, перетворює їх згідно формату і записує в змінну.

Формат опису:

printf (<формат вводу> <список вводу>);

<список вводу> - указуються адреси змінних, тому попереду змінної пишеться символ &, що означає операцію узяття адреси. Елементами списку можуть бути тільки змінними.

Наприклад,

scanf (“%d %d”,&x,&y);

 

Ввід-вивід в стилі С++

 

Обов'язкове підключення заголовного файла відповідної бібліотеки введення-виведення.

#include <iostream.h>

 

Вивід в стилі С++

 

Для виведення використовується стандартний потік виведення cout і операція << - помістити в стандартний потік виведення. Операція використовується для кожного елемента виведення. Наприклад

cout << “Здрастуйте,”<<name;

cout <<”Послухайте дзвінок \а\n”;

 

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

 

#include <iomanip.h>

Манипулятор Призначення
endl Перехід на новий рядок і викид буфера виводу
hex Установка 16-річного формату виводу числових значень cout<<hex<<n;
oct Установка 8-річного формату виводу числових значень cout<<oct<<n;
dec Установка 10-річного формату виводу числових значень cout<<dec<<n;
setprecision (<n >) n - точність числа Установка кількості знаків дробової частини дійсного числа cout<< setprecision(5)<<value; Діє до нової установки. Точність по умовчанню - 6, встановлюється при n=0.
setw(<n>) n - ширина поля Установка ширини поля для вводу чи виводу cout<< setw(10)<<value;

 

Ввід в стилі С++

 

Для введення використовується стандартний потік введення cin і операція >> - помістити в стандартний потік введення. Операція використовується для кожного елемента введення. Наприклад,

cin>>a;

 

 

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

 

1) Написати оператор виводу для виведення сповіщення "Це програма!"

2) Написати оператор вводу для введення одного цілого значення.

3) Прочитати 3 цілих числа з клавіатури і занести їх значення в змінні X, Y, Z.

4) Що буде виведено після виконання операторів

a=7;

b=2;

coun<<"a+b"<<endl;

5) Описати цілу змінну з ініціюванням.

6) Написати оператор виводу для виведення дійсного значення Х з точністю 4 знаки після коми в полі з 10 позицій.

7) Записати оператор виводу який виводить результат обчислення функції Y=sin X при заданному значенні Х. Точність аргументу повинна бути не менше двох знаків після коми, а результату - чотири.

8) Описати дві дійсні змінні з ініціюванням.

9) Описати символьну змінну з ініціюванням.

10) Що буде надруковано програмою:

int a,b; char c;

cdin>>a>>b>>a>>c;

cout<<a<<b<<a<<c;

якщо введено рядок значень 1 3 5 7

11) Що буде виведено пiсля виконання операторiв

c=5; cout<<c<<++c<<c<<endl;

12) Що буде виведено пiсля виконання операторiв

c=5; cout<<c<<c--<<c<<endl;

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

 

Приклад . Розробити програму знаходження площини довільного прямокутного трикутника з заданими катетами.

 

Вивчивши завдання, визначаємо, що для одержання результату необхідно знати катети трикутника. Тому вхідними даними будуть значення катетів трикутника. Вихідні дані – значення площини. Для одержання значення площини використовуємо відому з математики формулу визначення площини прямокутного трикутника: , де a,b - катети прямокутника.

 

Алгоритм рішення задачі і текст програми:

       
 
   
#include <iostream.h> void main () { float a,b,S; cout<<”Введіть катети ”; cin>>a>>b; S=1/2*a*b; Cout<<”S=”<<S<<endl; }
 


Керування порядком обчислень С++

 

1) Визначення і призначення операторів

2) Складений оператор

3) Оператор присвоєння

4) Оператори реалізації розгалужень

5) Оператори реалізації повторів

 

Визначення і призначення операторів

 

Оператор - це речення, яке визначає деяку дію. Оператори можуть розміщуватись в одній або декількох рядках. В кінці оператора ставиться символ „;”..

 

Складений оператор

 

Складений оператор являє собою кілька операторів і об¢яв, які обмежуються фігурними дужками:

{ [oб¢явли]

:

оператор; [оператор];

:

}

 

Оператор присвоєння

 

Формат оператора

<ім‘я змінної>=<вираз>;

Тип змінної і тип виразу повинні бути однаковими або сумісними.

 

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

 

1) Записати оператор присвоєння суми змінних a,b змінній z зі збільшенням значення а на 1 після обчислення.

2) Записати оператор присвоєння суми змінних a,b змінній z зі зменшенням значення а на 1 до обчислення.

3) Чому буде дорiвнювати значення змiнних ALFA i k пiсля виконання операторiв:

ALFA=5; k=2; ALFA =k--;

4) Чому буде дорiвнювати значення змiнних ALFA i k пiсля виконання операторiв:

ALFA=5; k=2; ALFA +=++k;

5) Привласнити змінній Т значення, протилежне тому, що там знаходиться.

6) Записати оператор присвоювання, який привласнює змінній Т значення середнього арифметичного чисел X, Y, Z і збільшує значення z після обчислення.

Оператори реалізації розгалужень С++

1) Умовний оператор if

2) Оператор вибору switch

3) Оператор break

4) Розробка програм реалізації розгалужених алгоритмів

 

Умовний оператор

 

Формат оператора:

if (<вираз>) <оператор-1>;

[else <оператор-2>;]

Виконання оператора if починається з обчислення виразу.

Далі виконання здійснюється по наступній схемі:

- якщо вираз істинний (тобто значення відмінно від 0), то виконується <оператор-1>.

- якщо вираз помилковий (тобто значення рівно 0), то виконується <оператор-2>.

- якщо вираз помилковий і відсутній <оператор-2>, то виконується наступний за if оператор.

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

 

Оператор вибору

 

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

switch ( <вираз> )

{ [<оголошення>]

:

case <константний-вираз 1>: [ <список-операторів 1>][break;]

case <константний-вираз 2>: [ <список-операторів 2>][break;]

:

[ default: <список операторів> ]

}

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

Список операторів може бути порожнім, або містити один або більш операторів. Причому не вимагається укладати послідовність операторів у фігурні дужки.

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

Схема виконання оператора switch:

- обчислюється вираз в круглих дужках;

- обчислені значення послідовно порівнюються з константними виразами, наступними за ключовими словами case;

- якщо один з константних виразів співпадає із значенням виразу, то виконуються відповідні оператори. Після їх виконання продовжується порівняння з наступними константними виразами. Якщо порівняння необхідно припинити і завершити оператор switch, необхідно після операторів використати оператор break

- якщо жоден з константних виразів не співпав з значенням виразу, то управління передається на оператор, помічений ключовим словом default, а у разі його відсутності управління передається на наступний після switch оператор.

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

case <значення>: case < значення >: case < значення >: <операторі>;

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

Оператор break

Оператор break забезпечує припинення виконання самого внутрішнього з об'єднуючих його операторів switch, do, for, while. Після виконання оператора break управління передається оператору, наступному за перерваним.

 

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

 

1) Записати оператор, який має : присвоїти змінній В значення 0 або 1 в залежності від того парне чи непарне значення в змінній Р

2) Записати на мові C++ оператор,,що привласнює змінній А значення 0 ,якщо всі числа x,y,z -додатні , і значення 1 в протилежному випадку

3) Записати дію у вигляді умовного оператору:

Y=cos x якщо х лежить у проміжку (-3,8) і Y=sin x в протилежному випадку.

4) Яким буде значення змiннoї a пiсля виконання операторів

a=3;

if (a <4)

( a+=2; --a };

5) Яким буде значення змiннoї a пiсля виконання операторів

b=3;

switch (b)

{

case 7: case 8: case 3:case 9: a=b+2; break;

case 11 : case 56:case 13: case 9: a=b-2;

}

6) Яким буде значення змiннoї a пiсля виконання операторів

b=8; a=11;

switch (b)

{

case 7: case 8: case 3: case 9: a=b+2;

case 11 : case 56: case 13:case 9: a=b-2;

case 18: case 8: case 33: a*=2;

}

7) Яке значення буде мати змінна а після виконання операторів:

b=2;

if (b>-4 && b<2) a=5;

else a=10;

8) Яке значення буде мати змінна а після виконання операторів:

b=-8;

if (b<-4 || b>2) a=15;

else a=30;

9) Яке значення буде мати змінна а після виконання операторів:

b=-1;

if (b<-5 || b>10) a=14;

else a=44;

10) Використовуючи оператор вибору записати дії:

якщо а=2 або 4, то збільшити а на 1;

якщо а=3 або 5, то зменшити а на 1;

11) Записати дію у вигляді умовного оператору:

Y=2x2 якщо х лежить у проміжку (-3,3) і

Y=7+х3 в протилежному випадку.

12) Записати дію у вигляді умовного оператору:

Y=cos x якщо х лежить у проміжку (-3,8) і Y=sin x в протилежному випадку.

13) Використовуючи оператор вибору записати дії:

якщо а='a' або 'n', то збільшити змінну Kol на 1;

якщо а='b' або 'm', то зменшити змінну Kol на 1;


<== попередня лекція | наступна лекція ==>
Посилання. Динамічні структури | Розробка програм реалізації розгалужених алгоритмів


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн