- •1. Оголошення функцій користувача
- •2. Опис функції користувача
- •3. Виклик функцій користувача
- •Самостійна робота. Звернення до даних за допомогою посилань
- •Практична робота №1. Функції користувача
- •Методичні вказівки
- •Лабораторна робота №6. Функції користувача
- •Теоретичні відомості
- •Семінарське заняття №2. Організація програм
- •Лекція 8. Рекурсивні функцій. Перевантаження функцій
- •1. Рекурсивні функції
- •2. Перевантаження функцій.
- •Самостійна робота Функція main(). Розбір параметрів рядка.
- •Лекція 9. Вбудовані функції. Шаблони функцій
- •1. Шаблони функцій.
- •2. Вбудовані функції.
- •Самостійна робота. Класи пам’яті
- •Державний вищий навчальний заклад «Чернівецький політехнічний коледж» «Основи програмування та алгоритмічні мови»
- •Структура заняття:
- •Оголошення функцій користувача______________________________
- •Виклик функцій користувача___________________________________
- •Державний вищий навчальний заклад «Чернівецький політехнічний коледж» «Основи програмування та алгоритмічні мови»
- •Структура заняття
- •Оголошення функцій користувача_____________________________________________
- •Виклик функцій користувача_________________________________________________
- •Державний вищий навчальний заклад «Чернівецький політехнічний коледж» «Основи програмування та алгоритмічні мови»
- •Забезпечення заняття:
- •Зміст і хід заняття:
- •Оголошення функцій користувача ______________________________
- •Виклик функцій користувача___________________________________
- •Державний вищий навчальний заклад «Чернівецький політехнічний коледж» Основи програмування та алгоритмічні мови
- •Структура семінарського заняття Питання, що виносяться на семінар
- •Структура заняття:
- •Державний вищий навчальний заклад «Чернівецький політехнічний коледж» «Основи програмування та алгоритмічні мови»
- •Структура самостійної роботи
- •Питання і задачі для самостійної роботи
- •Державний вищий навчальний заклад «Чернівецький політехнічний коледж» «Основи програмування та алгоритмічні мови»
- •Структура заняття:
- •Державний вищий навчальний заклад «Чернівецький політехнічний коледж» «Основи програмування та алгоритмічні мови»
- •Структура самостійної роботи
- •Питання і задачі для самостійної роботи
Самостійна робота. Класи пам’яті
Класи пам'яті. Для того, щоб безпосередньо вказати комп'ютеру як і де у його пам'яті мають зберігатися значення змінних чи функцій, як можна отримати доступ до цих даних, як визначити область видимості цих даних, використовують специфікатори класу пам'яті. Є п'ять специфікаторів (табл. 1).
Таблиця 1. Класи пам'яті
Клас пам'яті |
Час дії змінної |
Області видимості та дії змінної |
auto |
Тимчасово |
Локальна |
register |
Тимчасово |
Локальна |
extern |
Тимчасово |
Локальна |
static |
Постійно |
Локальна |
static |
Постійно |
Глобальна |
volatile |
Постійно |
Глобальна |
Розглянемо дії цих специфікаторів.
Специфікатор auto для локальних змінних застосовується за замовчуванням, тому зазначати його не обов'язково. Область видимості таких змінних обмежена блоком, у якому вони оголошені. Під час виходу з блока пам'ять, яка відведена для цих змінних, автоматично вивільняється, а змінні знищуються.
Специфікатор register вказує компілятору, що значення змінної слід зберігати у регістрах. Це зменшує час доступу до змінної і прискорює виконання програми. Якщо не можливо розмістити змінну у регістрі, то змінна буде збережена зі специфікатором auto. Області дії та видимості регістрових змінних, як і змінних зі специфікатором auto, обмежені блоком, у якому вони оголошені.
Специфікатор static можна застосовувати як до локальних, так і до глобальних змінних. На відміну від змінних зі специфікаторами auto чи register значення локальної статичної змінної зберігається після виходу з блока чи функції, де ця змінна оголошена. Під час повторного виклику функції змінна зберігає своє попереднє значення. Якщо змінна явно не ініціалізована, то за замовчуванням їй надається значення 0.
Приклад. Обчислити суму або добуток перших п цілих додатних чисел.
Обчислимо спочатку суму чисел.
// Обчислення суми
#include <iostream.h>
#include <conio.h>
cc(int n);
void main()
{
clrscr();
int n, S;
cout<< "Уведіть число"; сіn>> n;
for(int і = 1; і <= п; i++) S = сс(і);
cout<< S;
getch();
}
cc(int n)
{
static int S = 0; // Цей рядок буде виконано лише один раз під час першого виклику функції
S+=n;
return S;
}
Функція сс призначена для обчислення суми чисел. Якщо ж потрібно обчислити добуток чисел, то фунція таіп() залишиться без змін, а замість функції сс слід записати таку функцію:
cc(int n)
{
static int S = 1;
S*=n; return S; }
Глобальні статичні змінні ініціалізуються під час запуску програми. Області їх дії та видимості розповсюджуються лише на той файл, де оголошена ця змінна.
Часто, якщо програма складається з декількох файлів, виникає потреба передавати значення змінних з одного файлу в інший. У такому випадку до змінної застосовують специфікатор extern. Він дає змогу оголошувати глобальні змінні, дія яких поширюється на всі файли, з яких складається програма.
Специфікатор volatile застосовують до глобальних змінних, значення яких можуть надходити від периферійних пристроїв, наприклад, якщо змінна набуває значення від системного таймера.