- •Поняття масиву. Одновимірні та багатовимірні масиви.
- •While (вираз) оператор;
- •Do оператор while (вираз);
- •2. Стрічки і дії з ними.
- •2. Діапазонний тип.
- •Вкладені цикли.
- •Процедури. Формальні і фактичні параметри. Параметри - значення і параметри - змінні. Порядок виклику процедур.
- •Зчитування даних з файлу та ввід у файл
Багатовимірні масиви та їх обробка в мові С++.
Поняття масиву. Одновимірні та багатовимірні масиви.
Масив - це впорядкований скінченний набір даних одного типу, які зберігаються в послідовно розташованих комірках оперативної пам’яті і мають спільну назву. Назву масиву надає користувач. Кожна окрема така комірка – це елемент масиву. Для ідентифікації елементів масиву, кожен елемент має свій індекс, за яким його можна знайти в масиві. Кількість індексів, а отже і кількість елементів визначає розмірність масиву.
Розрізняють одномірні, двомірні та багатомірні мавсиви.
Загальний вигляд конструкції опису багатовимірного масиву такий
<Тип> < ім’я масиву > [< p1 >][< p1 >]….[< p N >}
де p1, p2 …pN – задають розміри для кожного виміру.
Кількість індексів визначає вимірність масиву: двовимірні масиви мають два індекси, тривимірні – три індекси.
Для роботи з масивом завжди використовують оператори циклу. Для багатовимірних масивів використовують декілька циклів, вкладених один в один. Їх кількість визначина кількістю вимірів використовуваного масиву
Щоб звернутись до деякого елемента, необхідно зазначати ім’я масиву, а у парі квадратних дужках, кількість яких залежить від кількості вимірів масиву – його номер.
Наприклад:
for(i=0;i<n;i++)for(j=0;j<n;j++) s=s+a[i][j];
Директиви препроцесора в мові C++.
Директивами препроцесора є інструкції, записані в тексті програми на С++, і виконувані до трансляції програми. Директиви препроцесора дозволяють змінити текст програми, наприклад, замінити деякі лексеми в тексті, вставити текст з іншого файлу, заборонити трансляцію частини тексту і тому подібне. Всі директиви препроцесора починаються із знаку #. Після директив препроцесора крапка з комою не ставляться.
Директива #include вставляє вміст деякого файлу під час компіляції програми.
Директива #define задає сталу або описує макрос.
Директиву #elif можна розміщати у середині умовних директив #ifdef, #ifndef, #if. Якщо стала ( умова), записана у цій директиві, визначена (істина), то виконуються відповідні команди.
Директива #if перевіряє умову. Якщо вона виконується, то виконуються команди записані до директиви # elif, #else чи #endif.
Директива #if перевіряє, чи визначена стала. Якщо стала визначена, то виконуються команди записані до директиви # elif, #else чи #endif.
Директива #else виконує команди розміщені між #else та #endif, при умові, що всі сталі (умови), записані у директивах #ifdef (#if, #ifndef) та #elif, не визначені (хибні).
Директива #endif закінчує опис директив #ifdef, #ifndef, #if.
Директива #undef скасовує установки зроблені директивою #define.
*Множини. Порядок опису множин.
Множина - це набір елементів однакового типу. В Паскалі тип "множина" описується таким чином:
TYPE
А = SET OF TB;
де a - назва множини, TB - тип елементів (компонентів) множини, котрий називається базовим. В Паскалі можна створювати множини елементів довільного простого (впорядкованого) типу, за винятком типу REAL і структурних типів. Значення змінних типу "множина" задаються шляхом перечислення конкретних елементів, котрі розділяються комами
і поміщаються в квадратні дужки.
Var
roboch:den;
sezon:set of(lito,osin,zyma,vesna)
logic:set of boolean;
*Операції над множинами.
Операції над множинами в мові Паскаль практично збігаються з операціями в теорії множин.Це передусім операції об’єднання,перерізу і різниці множин.За допомогою операцій з множинами можна будувати вирази множинного типу.Пріорітетність виконання операцій така сама,як і під час обчислення арифметичних виразів:у дужках “*”,”+”,”-”.
Над множинами виконуються такі дії:
1.Операції >= та <= використовуються для перевірки належності однієї множини до іншої.
2. Операція IN використовується для встановлення належності певного елемента в даній множині.
3. Над змінними типу множини, котрі мають однаковий конкретний тип можна виконувати такі операції:
+ (об'єднання),
- (доповнення)
* (перетин).
Результати виконання операцій наведу на прикладі:
Нехай А і В - множини, котрі мають однаковий тип. Тоді множина
А + В представляє собою об'їднання всіх елементів, котрі входять в А та В (однакові елементи не повторюються),
А * В представляє собою множину елементєв, котрі входять до А і В одночасно,
А - В представляє собою множину елементів котрі належать А, але не належать В.
Приклад 5. [1,2] + [2,3,4] дає [1,3,4]
[2,1,3,4,] * [1,3,5] дає [1,3]
[1,2,3,5] - [2,3,4] дає [1,2,5].
*Структури та об’єднання в мові C++.
Структура-це спеціальний тип даних,який створює користувач для опрацювання інформації про об кти з деякої предметної області.Така інформація може складатися з різних типів.Структура складається з набору полів-даних різних типів,і її тип описується так.
struct<назва типу структури>
{
<тип поля 1><назва поля 1>;
…………
<тип поля n><назва поля n>;
};
Опис структури обов’язково закінчується символом “;”
Коли у програмі описана структура,то оголосити змінні або вказівники цього типу можна так:
<назва типу структури><список змінних і вказівників>;
Оголосити змінні типу структура можна ще й так:
struct<назва типу структури>
{
<тип поля 1><назва поля 1>;
………….
<тип поля n><назва поля n>;
}<список змінних і вказівників> ;
Доступ до конкретного поля змінної типу структура дає складене ім’я вигляду
<назва змінної>.<назва поля>
Доступ до полів вказівника на структуру здійснюється так:
<назва вказівника> -> <назва поля>
Масив змінних типу структура можна оголосити так:
<назва типу структура><назва масиву>[кількість елементів];
Доступ до полів окремих елементів масиву здійснюється так:
<назва елемента>[індекс].<назва поля>
Об'єднання
Об'єднання.Опис об'єднання у мові С++ нагадує опис структур.але їхнє призначення інше.Об'єднання слугують для зберігання(послідовного,не одночасного)в деякій ділянці оперативної пам'яті комп'ютера даних різних типів.Потреба в цьому виникає,наприклад,під час створення таблиці з даними різних типів.Об'єднання можна описати так:
Union <назва типу об’єднання>
{
<тип поля 1> <назва поля 1>;
……………..
<тип поля n> <назва поля n>;
};
Усі правила.які розглядаються для опису та використання структур,діють і для об'єднань.
*Основні арифметичні операції в мові С++.
В мові програмування С++ використовуються такі арифметичні операції:
“+” , ”-”, ”*”, ”/”, ”<” , ”>”, ”<=”, ”>=”Їх пріоритетність та математичне значення буде:
1.”+”, ”-” (Присвоєння знака);
2.”*”, ”/”, ”%” (Множення.ділення,остача від ділення)
3.”+”, ”-” (Додавання,віднімання)
4.”==”, ”!=”, ”<”, ”<=”, ”>”, ”>=” (Порівняння(відношення))
Операція == означає дорівнює, != -не дорівнює, <= -менше або дорівнює, >= - більше або дорівнює.
Виконання кожної операціїтздійснюється з урахуванням їхніх пріоритетів.для зміни звичайного порядку виконання операцій використовують круглі дужки.
Операції інкременту (++) та декременту(--).Операції інкременту та декременту існують у двох формах-префіксній та постфікс ній.Якщо символи ++ (--) записані перед зміною-то це інкремент(декремент)у префікс ній формі,а якщо після змінної-у постфіксній.Операція інкременту має такий вигляд:
++<змінна> або <змінна>++
У префікс ній формі спочатку збільшується значення змінної на одиницю,а пізніше обчислюється вираз.А у постфікс ній напаки.
Аналогічно операція декременту має такий вигляд:
--<змінна> або <змінна>--
Команда присвоєння,суміщення з арифметичною операцією.Щоб надати значення змінній,можна скористатися командою присвоєння,суміщеною з деякою арифметичною операцію,а саме:+=, -=, *=, /=, %=.Загальний вигляд команди присвоєння суміщеної з арифметичною операцією,такий:
<змінна><символ арифметичної операції>=<вираз>
Зауважимо,що між символом арифметичної операції та символом “=”пропуск не допускається.
*Оператори переходів в мові С++
Команда розгалуження if(якщо).Команда розгалуження if має дві форми:повну та коротку.Повна така:
If(<логічний вираз>)<команда 1>;else<команда 2>;
Дія команди.Обчислюється значення логічного виразу.Якщо це значення істинне,то виконується команда 1,у протилежному випадку-команда 2.Команда 1 та команда 2 можуть бути порожніми,простими або складеними.
Коротка команда розгалуження if має вигляд:
If (<логічний вигляд>)<команда 1>;
Дія команди.Обчислюється значення логічного виразу.Якщо воно істине,то виконується команда 1,інакше виконується команда,яка записана після команди if.
Команда ?.Команда ? є аналогом команди розгалуження if.Загальний вигляд команди ? такий:
<логічний вираз>?<команда або вираз 1>:<команда або вираз 2>
Дія команди.Обчислюється значення логічного виразу.Якщо воно істинне,то виконується команда 1 або обчислюється вираз 1,інакше-команда або вираз 2.
Команда ? у разі потреби трактується компілятором як вираз,тому її зручно використовувати у директивних препроцесора.
Команда вибору (switch).Команда вибору має вигляд:
switch ( < вираз > );
{
case < ознака 1 > : < команда 1 > ; break;
……….
case < ознака N > < команда N > break;
default: < команда N+1 >;
}
Дії команди.Якщо значення виразу збігається зі значенням ознаки n,то виконується команда з номером n і розглядається наступний за нею рядок case і т.д.
Команда бузумовного переходу goto.Ця команда змінює послідовність виконання інших команд шляхом переходу до виконання команди,що має позначку.Команда переходу має вигляд:
goto <позначка>;
Позначка може розміщуватися перед довільною командою у програмі.Вона відокремлюється від команди двокрапкою( : ),а саме:
< позначка >:< комана >;
Позначкою може бути лише ідентифікатор,тобто набір допустимих символів,який починається з букви або символу підкреслення(_)
Типи даних в мові С++.
Усі дані, які беруть участь у розв'язуванні задачі, ретельно класифікують за типами. Тип визначає допустимі значення даного, операції, які можна над ним виконувати, й обсяг оперативної пам'яті, який резервується для нього.
Програма оперує з різноманітними даними, котрі поділяються на прості та структуровані.
Прості дані - це цілі та дійсні числа, текстова інформація та вказівники адрес.
Структуровані дані - це масиви, структури і файли
Типи даних в мові Сі визначаються такими ключовими словами:
Дані цілочисельних типів
Назва типу |
Обсяг, байтів |
|
int |
Ціле число |
2 або 4 |
short int |
Коротке ціле число |
2 |
long int |
Довге ціле |
4 |
Дійсні типи.
Назва типу |
Обсяг, байтів |
|
float |
Число з плаваючою комою одинарної точності |
4 |
double |
Число з плаваючою комою з подвійною точністю
|
8 |
long double |
Число з плаваючою комою підвищеної точності |
10 |
Символьний тип (char).
Символьний тип — це множина символів кодової таблиці комп'ютера ASCII. Символьна стала - це один символ (1 байт), узятий у лапки на зразок апострофа.
Логічний тип bool.
Логічний тип характеризується двома значеннями даних: false (хибність) і true (істина). Змінні цього типу займають 1 байт у пам'яті комп'ютера.
Перерахований тип
enum - перерахований, призначений для опису об'єктів, котрі належать до певної множини, наприклад {spring, summer, autumn, winter }.
Типи користувача.
Крім вище описаних стандартних типів даних, можна створювати власні типи користувача
typedef <опис типу> <назва нового типу>; |
*Програмування операцій вводу-виводу в мові С++.
Команда введення даних.Надавати значення змінним можна двома способами:за допомогою команди присвоєння,або команди уведення даних із клавіатури.Команда уведення даних із клавіатури дає змогу виконувати програму для різних вхідних даних,що роблять її більш універсальною.Команда введення >> має такий вигляд:
cin>> <змінна>;
Дія команди.Виконання програми зупиняється.Система переходить у режим
очікування введення даного.Користувач набирає на клавіатурі значення змінної і натискає на клавішу вводу.У результаті виконання цієї команди змінній буде присвоїне конкретне значення.
Якщо необхідно ввести значення відразу для декількох змінних.то можна або використати декілька потоків введення,або записати всі змінні в одному стовпці cin,застосувавши для цього декілька команд “>>”,а саме:
cin >> <змінна 1> >> <змінна 2> >>…..>> <змінна N>;
Якщо у списку введення даних більше,ніж змінних,то зайві дані будуть зчитані наступною командою введення.Якщо така команда у програмі відсутня,вони будуть проігноровані.
Перед командою введення даних варто записувати команду введення на екран текстового повідомлення-підказки про те,що слід ввести.
Команда виведення даних.Для виведення на екран повідомлення і результатів обчислень використовують стандартний потік виведення cout і команду <<.
cout << <вираз 1> << <вираз 2> << <вираз N>;
У списку виведення можуть бути сталі, змінні або вирази. Елементи у списку у потоціcout відокремлюють командами <<
Дія команди. Сталі, значення змінних та виразів виводяться на екран у вікно «виведення». Текстові повідомлення у команді «виведення» записуються у лапках. Лапки на екран виводитися не будуть.
Керуючі послідовності-це комбінація спеціальних символів,що використовуються для оформлення потрібного вигляду вікна. Основними керуючими послідовностями є:
Символи керуючих послідовностей |
Коментар |
\а, \7 |
Подати звуковий сигнал |
\b |
Повернути курсор на 1 символ назад(знищити попередній символ) |
\f |
Перейти на нову сторінку |
\n |
Перейти на новий рядок |
\r |
Повернути курсор на початок рядка |
\t |
Перевести курсор до наступної позиції табуляції |
\v |
Вертикальна табуляція |
\\ |
Вивести символ похилої риски |
\’ |
Вивести символ апострофа |
\” |
Вивести символ лапок |
\? |
Вивести знак запитання |
Керуючі послідовності разом з коментарями записуються у лапках.
Оператори циклу в мові C++.
Групи операторів програми, виконання котрих повторюється неодноразово, називаються циклами. Циклічна структура програми позволяє проводити багатократні повторення групи операторів при зміні одного чи кількоє параметрів одночасно.
Оператор циклу з передумовою while формально записується так: