- •Програмування
- •1. Мови програмування та їх класифікація.
- •2. Типи даних. Стандартні типи даних (арифметичний та символьний).
- •3. Структуровані дані та їх типи. Масиви.Приклади обробки масивів.
- •4.Файли. Послідовні та з прямим доступом.
- •5. Процедури та функції як засоби структуризації програм. Виклики процедур та функцій.
- •6. Первинні оператори. Оператор присвоєння.
- •7. Оператор вводу-виводу (на прикладі конкретної мови програмування).
- •8.Функціональне програмування Свойства функциональных языков Строгая типизация
- •Модульность
- •Функции - это значения
- •Языки функционального программирования
- •9. Поняття про структурне програмування
- •10.Поняття про об’єктно-орієнтоване програмування.
3. Структуровані дані та їх типи. Масиви.Приклади обробки масивів.
Структуровані типи даних визначають впорядковану сукупність скалярних змінних і характеризуються типом своїх компонент. В мові C/C++ допускаються такі структуровані типи даних: строки, масиви, множини, записи, файли а також процедурні типи та об’єкти.
Масив - це структурований тип даних, який складається із фіксованого числа елементів одного типу. Елементами масиву можуть бути дані будь-якого типу, включаючи структуровані. Тип елементів масиву називається базовим. Кількість елементів масиву фіксується при описанні і в процесі виконання програми не змінюється. Доступ до кожного окремого елемента масиву здійснюється шляхом індексування елементів. Індекс елемента масиву по змісту тотожній поняттю індекса компонента вектора. Індекси являють собою вирази будь-якого скалярного типу, окрім дійсного. Крім того в мові С/С++ нема обмеженнь що до значення індексу, відповідальність за те щоб не вийти за межі масиву полягає на програміста.
Для задання масиву використовується наступний способ.
<Тип данних><ім’я змінної’[‘розмір масиву’]’>[,<ім’я змінної>’[‘розмір масиву’]’];
Наприклад :
int A[100];
char c[10],d[16];
Елемент масиву визначається ім’ям масиву та індексом цього елементу, взятим в квадратні дужки : m1[100], m2[15].
Масиви з базовим типом char називаються строками і для їх обробки існують деякі спеціальні функції.
Для задання багатовимірних масивів використовується наступний спосіб
<Тип данних><ім’я змінної’[‘розмір масиву’]’[’[‘розмір масиву’]’]> [, <ім’я змінної’[‘розмір масиву’]’ [ ’[‘розмір масиву’]’]>];
Одновимірні масиви зручно використовувати для представлення векторів, двовимірні - матриць.
Наприклад
int f[9][12];
double r[100][100];
Млжна явно не вказувати розмір масиву а відразу ініціалізувати його, в такому випадку система сама визначить розмір.
char S[]={‘a’,’b’,’c’};
int B[ ][ ]={{0,1,2},{4,5,6}};
також можливий такий варіант
float F[4]={1.0,3,4,5};
якщо кількість елементів ініціалізації на достатня то решта заповнюеться нулями , але якщо їх більше ніж потрібно то це викличе помилку.
Елементи масиву розташовуються в пам’яті послідовно один за одним. Багатовимірні масиви розташовуються таким чином, що самий правий індекс зростає першим. Наприклад, двовимірний масив розташовується таким чином, що спочатку йдуть елементи першого рядка, потім другого і т. д.
Для обробки масиву як єдиного цілого використовується ім’я масиву без квадратних дужок.
Масиви не можна порівнювати по значенню елементів як це робиться в паскалі, справа в тому що імя масиву це лише показник на перший байт деякої області памяті де зберігаються данні, тому порівняння по типу M1=M2 на справді порівнюеє не значення елементів а значення самих показників.
Серед найпоширеніших операцій над масивами є ініціалізація (онулення всіх елементів), сортування (упорядкування елементів за певними правилами), пошук елементів масиву, які задовольняють деякі вимоги.
Обробка ж окремих елементів масиву нічим не відрізняється від роботи зі звичайною змінною.Для того щоб взяти значення відповідного елементу масиву треба лише написати наступне
long double A[5][5];
long double f;
….
f=A[2][5];
…
Таким чином пи присвоємо змінній f значення елемента масиву A з індексом [2][5].
Індексація завжди починається з нуля.
Набагато зручніше використовувати динамічні масиви
Припустимо нам потрібно в середині программи створита масив типу int розміром N на M. Поступимо наступним чином.
int **A;
A=new int*[N];
for(int I=0;I<N;I++) A[I]=new int [M];
такий підхід досволяє створювати масиви навіть у випадках коли память дуже подріблена.
Найбіль використовуваним структурним типом данних після масивів є структури та класи.
struct NameStruct{
данні
};
напрклад
struct Matrix{
long double **M;
int m,n;
};
Приклад класу матриць.
class CMatr{
public:
CMatr(int m,int n);
~CMatr();
long double GetAij(int i,int j);
void SetAij(int i,int j, long double r);
protected:
Matrix *M;
};