
- •1.Питання.(Поняття та складові архітектури комп’ютера)
- •2.Питання.(Поняття архітектури набору команд. Основні групи операцій архітектури набору команд.)
- •3.Питання.(Принципи архітектури фон Неймана)
- •4.Питання(Поняття та властивості алгоритмів)
- •5.Питання(Класифікація алгоритмів)
- •6.Питання(Форми запису алгоритму. Блок-схема алгоритму)
- •7. Основні структурні елементи блок-схеми алгоритму
- •9. Мови високого і низького рівнів програмування. Асемблер.
- •11. Змінна. Ім’я і значення змінної. Правила вибору імені для змінної
- •13. Оголошення та ініціалізація змінних
- •14. Глобальна і локальна змінна. Область дії змінної. Оператор ::
- •15. Оголошення та ініціалізація константи. Типи констант
- •16. Арифметичні операції. Оператор sizeof()
- •17. Оператори відношень. Логічні оператори
- •18. Оператори інкремент/декремент. Оператори присвоєння
- •20. Унарні, бінарні та тернарні оператори. Пріоритет операцій
- •26).Оператори while,do-while
- •27). Оператор for
- •28).Оператори break,continue,go to
- •29).Оператори exit,return
- •30). Структура програми згідно процедурно-орієнтованого підходу.
- •32) Інтерфейс та виклик функції
- •33) Параметри функції
- •35)Inline-функції
- •46)Арифметика вказівників
- •47)Динамічна пам'ять. Оператори new і delete
- •48. Поняття посилання. Оголошення та ініціалізація посилання
- •49. Використання посилання у якості параметру функції
- •50. Оголошення та створення динамічного масиву
- •65)Вкладены структури даних
- •78.Поняття та оголошення об'єднання. Анонімне об'єднання
- •79. Поняття та оголошення переліку
- •80. Типи даних для роботи з датою і часом. Структура tm
- •81. Функції бібліотеки ctime
- •82. Поняття та класифікація зв'язних списків
- •84..86 Оголошення зв’язних циклів
- •91.Навігація по зв’язному списку
- •92Реалізація деструктору зв’язного списку
- •97)Реалізація деструктору стеку
- •98Поняття дерева, ключового вузла, вузлів-нащадків. Висота і глибина дерева
- •99. Основні операції над деревом
- •103. Конструктор дерева
- •104. Дестуктор дерева
80. Типи даних для роботи з датою і часом. Структура tm
Типи даних
clock_t - Повертається функцією clock (). Зазвичай визначений як int або long int.
time_t - Повертається функцією time (). Зазвичай визначений як int або long int.
struct tm - Нелінійне, дискретне календарне уявлення часу.
Приклад використання
Виведення на екран поточного часу.
# include <stdio.h>
# include <time.h> int main(void) { const time_t timer = time(NULL); printf("%s\n", ctime(&timer));
return 0; }
Деякі функції можуть працювати з місцевим часом, який може відрізнятися від календарного, наприклад у зв'язку з часовими поясами. Визначено арифметичні типи clock_t і time_t для представлення часу, а структура struct tm містить компоненти календарного часу.
int tm_sec; Секунди від початку хвилини (0,59) int tm_min; Хвилини від початку години (0,59)
int tm_hour; Години від півночі (0,23)
81. Функції бібліотеки ctime
функція ctime # include <time.h>char * ctime (const time_t * time);
Функція ctime () повертає покажчик на рядок, що має наступний вигляд:
День місяць рік години: хвилини: секунди year \ n \ 0
Функції передається покажчик на календарний час. Календарний час зазвичай отримують за допомогою функції time (). Буфер, використовуваний ctime () для зберігання форматувати рядки висновку є статично розподіленим масивом символів. Він перезаписується при кожному виклику функції.
#include <time.h>
#include <stdio.h> int main(void){ time_t lt;
lt = time(NULL); printf(ctime(<)); return 0;}
82. Поняття та класифікація зв'язних списків
Зв*язний список – це динамічна структура даних яка складається з вузлів які зв*язані між собою і представляють послідовність. Кожен вузол є структурою який містить інформаційні поля а також посилання на інші вузли(попередні або наступні)
Класифікація Циклічні/нециклічні, Двозв*язні/однозв*язні, Однонаправлені/ двонаправлені
84..86 Оголошення зв’язних циклів
кожен вузол в списку є структурою даних. Вказівники на наступний і попередній
елемент повині мати той самий тип що і вузол списку. Для роботи з
списком нам достатньо двох вказівників.
head - початок (голова)
tail - кінець (хвіст)
// оголошення вузла
struct Telefon{
string name;
int age;
Telefon *next,*prev;
Telefon(){
next=prev=NULL;
};
//оголошення структури на список
struct LstTelefon{
Telefon *head,*tail;
LstTelefon(){
hedd=tail=NULL;
};
//створення змінної списку
LstTelefon *Tel=new Telefon();
83..85
struct Film{
string name;
int age;
Film *next;
Film(){
next=NULL;
};
};
//оголошення структури на список
struct LstFilm{
Film *head,*tail;
LstFilm(){
heаd=tail=NULL;
};
};
//створення змінної списку
LstFilm *Tel=new Film();
87.Зв'язаний список в програмуванні — одна з найважливіших структур даних,
в якій елементи лінійно впорядковані, але порядок визначається не номерами елементів,
а вказівниками, які входять в склад елементів списку та вказують на наступний за даним
елемент (в однозв'язаних або однобічно зв'язаних списках) або на наступний та попередній
елементи (в двозв'язаних або двобічно зв'язаних списках). Список має «голову» — перший елемент
та «хвіст» — останній елемент.
Операції над зс: вставка елемента в список, вилучення елемента зі списку.
перевірка чи список пустий
bool Lstfilms:: is Empty(){
if (head==NULL)
return true;
else
return false; };
88.додавання нового вузла
При додаванні до списку нового елемента необхідно динамічно виділити для гього память за доп. оператора new та присвоїти відповідні адреси вказівниками сусідніх елементів.
void LstFilms::(SFilm *f, SFilm *prevf){
SFilm *next=prev->next;
prevf->next=f;
f->next=nextf;
f->prev=prevf;
nextf->prev=f;};
89. Додавання елемента на початок списку: 1.Виділити память під новий елемент списка, нехай змінна р вказує на виділену память 2. Встановити необхідне значення поля напр data 3.присвоїти полю next значення елемента head 4. Присвоїти змінній head значення р.
код
p->data = ...;
p->next = head;
head = p;
Додавання елемента в список: зберегти адресу останнього елемента в тимчасовій змінної; створити новий елемент, записати в нього значення, в полі next - покажчик на попередній елемент. node * prev = top; top = new node; top-> value = 'd'; top-> next = prev; / / пов'язати з попереднім
90.вилучення вузла Створюється тимчасовий вказівник, куди записується адреса об'єкту, що видаляється. У вказівнику попереднього об'єкта на той що видаляється присвоюється адреса наступного після того що видаляється. Видаляється об'єкт з тимчасового покажчику.
Поясню на прикладі. Є спрямований список, в кожному елементі якого записана адреса наступного. 1> 2> 3> 4> 5 Потрібно видалити елемент номер 3. Якщо ми його просто вилучимо, то доступу до елементів 4 і 5 ми не отримаємо, тому що адресу 4 буде загублено. Тому, ми спочатку записуємо в якості наступного після 2 4 елемент, адреси третім зберігши в тимчасовій адресної змінної. Після чого за цією адресою видаляємо 3 елемент. void Lstfilm::delete(sFilm *flm){
Sfilm *prevf=flm->prev,*next=flm->next;
Delete flm;
Prevf->next=nextf;
Nextf->prev=prevf;}