- •Мова програмування с Навчальний посібник
- •І. Теоретична частина Структура програми на мові с
- •Базові типи даних
- •Арифметичні операції
- •Функції введення scanf() та виведення printf()
- •Оператори
- •Функції користувача
- •Функції із змінним числом аргументів
- •Функції стандартних бібліотек Функції для роботи із символами (ctype.H)
- •Функції для роботи з каталогами (dir.H)
- •Функції для роботи з ос (dos.H)
- •Функції для роботи з графічним режимом (graphics.H)
- •Математичні функції (math.H)
- •Функції для роботи з рядками (string.H)
- •Функції потокового вводу/виводу (stdio.H)
- •Функції вводу/виводу нижнього рівня (io.H)
- •Функції вводу/виводу консолі та порту (conio.H)
- •Int s[2][3];
- •Int b[2][3][4];
- •Структури
- •Об'єднання
- •Динамічний розподіл пам’яті
- •Void free(void*);
- •Іі. Практична частина Лабораторна робота №1 Тема: Основні конструкції мови с. Програмування простих алгоритмів
- •Лабораторна робота №2 Тема: Створення і використання функцій
- •Лабораторна робота №3 Тема: Використання структур
- •Лабораторна робота №4 Тема: Організація роботи з файлами
- •Рекомендована література
Int s[2][3];
Якщо при звертанні до деякої функції написати s[0], то буде передаватися нульовий рядок масиву s.
Int b[2][3][4];
При звертанні до масиву b можна написати, наприклад, b[1][2]. Тоді буде передаватися вектор із чотирьох елементів. Звернення b[1] поверне двовимірний масив розміром 3 на 4. Не можна записати b[2][4], маючи на увазі, що буде передаватися вектор, тому що це не відповідає обмеженню накладеному на використання перетинів масиву.
Приклад оголошення символьного масиву.
char str[] = "оголошення символьного масиву";
Варто враховувати, що в символьному літералі знаходиться на один елемент більше, тому що останній з елементів є керуючою послідовністю '\0'.
Структури
Cтруктура – це складений об'єкт, у який входять елементи будь-яких типів, за винятком функцій. На відміну від масиву, що є однорідним об'єктом, структура може бути неоднорідною.
Тип структури визначається записом виду:
struct { список визначень }
У структурі обов'язково повинен бути зазначений хоча б один компонент. Визначення структур має такий вигляд:
<тип-даних> <опис>;
де <тип-даних>вказує тип структури для об'єктів, визначених в назві. У найпростішій формі<опис>– ідентифікатор або масив.
Приклад:
struct { double x,y; } s1, s2, sm[9];
struct { int year;
char month, day;} date1, date2;
Змінні s1, s2 визначаються як структури, кожна з яких складається із двох компонентів х та y. Змінна sm визначається як масив з дев'яти структур. Кожна із двох змінних date1, date2 складається із трьох компонентів year, month, day. Існує і інший спосіб асоціювання імені з типом структури, він базується на використанні тегу структури. Тег структури аналогічний тегу перераховуваного типу. Тег структури визначається в такий спосіб:
struct <тег> { список описів; };
де <тег> є ідентифікатором.
У наведеному нижче прикладі ідентифікатор student описується як тег структури:
struct student { char name[25];
int id, age;
char prp; };
Тег структури використається для наступного оголошення структур даного виду у формі:
struct <тег> <список-ідентифікаторів>;
Приклад:
struct student st1,st2;
Використання тегів структури необхідне для опису рекурсивних структур. Нижче розглядається використання рекурсивних тегів структури.
struct node { int data;
struct node * next;} st1_node;
Тег структури node дійсно є рекурсивним, тому що він використовується у своєму власному описі, тобто у формалізації покажчика next. Структури не можуть бути прямо рекурсивними, тобто структура node не може містити компонент, що є структурою node, але будь-яка структура може мати компонент, що є покажчиком на свій тип, що і зроблено в наведеному прикладі.
Доступ до компонентів структури здійснюється за допомогою вказівки імені структури і через крапку імені потрібного компонента, наприклад:
st1.name="Іванов";
st2.id=st1.id;
st1_node.data=st1.age;
Тут за допомогою крапки (.) здійснено прямий вибір компонентів структур. Якщо доступ до елемента структури відбувається через вказівник, то після імені структури вказується стрілка (–>) і відбувається непрямий вибір компонентів структури, наприклад:
struct student *p1, *p2;
. . .
p1->name="Іванов";
p2->id=p1->id;