Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВІдповіді на теоретичні питання з основ програм...doc
Скачиваний:
3
Добавлен:
20.09.2019
Размер:
299.01 Кб
Скачать
  • Багатовимірні масиви та їх обробка в мові С++.

  1. Поняття масиву. Одновимірні та багатовимірні масиви.

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

Розрізняють одномірні, двомірні та багатомірні мавсиви.

Загальний вигляд конструкції опису багатовимірного масиву такий

<Тип> < ім’я масиву > [< 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 формально записується так: