Який механізм використовується для збереження значень субконто

0 Comments

Який механізм використовується для збереження значень субконто

Бібліотека стандартних шаблонів STL (Standard Template Library) є одним із найдосконаліших інструментів програмування мовою C++. Створена співробітниками Hewlett-Packard, після незначних поправок вона увійшла до складу стандартної бібліотеки C++.

STL є бібліотекою контейнерних класів C++. До складу бібліотеки входять такі компоненти:

  • контейнер – об’єкт, що містить інші об’єкти, організовані у вигляді послідовностей (колекції об’єктів);
  • ітератор – забезпечує доступ до вмісту контейнера;
  • алгоритм – функція, що забезпечує обчислювальну процедуру над елементами контейнера;
  • алокатор – забезпечує керування динамічною пам’яттю, виділеною для STL-об’єкта;
  • функтор – інкапсулює функцію в об’єкті для використання іншими компонентами;
  • предикат – функція булевого типу, яка перевіряє визначені програмістом властивості або відношення між об’єктами;
  • адаптор – пристосовує компонент бібліотеки для забезпечення різних інтерфейсів.

Ядром бібліотеки є взаємозалежні контейнери, алгоритми та ітератори.

Контейнери забезпечують керування колекціями елементів. Контейнери поділяють на базові та асоціативні. До базових контейнерів належать динамічний масив (вектор), список та черга. Асоціативні контейнери складаються з відображення елементів та множин. Асоціативні контейнери містять набір пар значень, одне з яких є ключем, що забезпечує доступ до відповідних йому даних.

Колекції асоціативних контейнерів впорядковані за значенням ключа.

У контейнерному класі визначено методи для роботи з інкапсульованими елементами. Наприклад, для вставки, видалення або злиття елементів.

Ітератори – це об’єкти, які забезпечують доступ до елементів контейнера. Оголошуються за допомогою слова iterator. Подібні до вказівників, які забезпечують доступ до елементів масиву. Над ітераторами можна виконувати операції, призначені для роботи з вказівниками, наприклад, інкремент, декремент, розіменування тощо.

За призначенням розрізняють такі види ітераторів:

  • однонапрямлений – для послідовного читання і записування елементів контейнера, може проходити контейнер тільки в одному напрямку;
  • введення – тільки для послідовного читання елементів контейнера в одному напрямку;
  • виведення – тільки для послідовного записування значень у контейнер в одному напрямку;
  • двонапрямлений – для послідовного читання і записування елементів контейнера, може проходити контейнер в обох напрямках;
  • довільного доступу – для читання і записування елементів контейнера у довільному порядку; забезпечують прямий доступ до елементів контейнера;
  • зворотний – послідовний двонапрямлений та довільного доступу, який проходить послідовність елементів з кінця; інкремент такого ітератора призводить до переміщення від кінця до початку послідовності елементів.

Алгоритми – як правило, параметризовані зовнішні функції, призначені для виконання дій над елементами контейнера, наприклад, ініціалізація, пошук, сортування, заміна елементів.

Алокатор – об’єкт класу allocator, призначений для виділення динамічної пам’яті для елементів контейнера.

Функтор – об’єкт з перевантаженою операцією operator (). Використовується замість вказівника на функцію за потреби передавання функції в іншу функцію через список параметрів.

Предикат – функція, яка повертає значення логічного типу. Позначає визначену програмістом властивість або співвідношення параметрів, які задаються у круглих дужках предиката. Предикат може бути унарним (має один параметр) або бінарним (має два параметри). Типи параметрів предиката відповідають типам об’єктів, інкапсульованих контейнером.

Адаптор – це пристосування існуючих компонентів бібліотеки для реалізації інших компонентів. Наприклад, на основі вектора, списку або черги можна створити стек, а на основі списку – чергу.

Перелік основних контейнерних класів STL-бібліотеки наведено у табл. 9.1. Крім назв класів, у таблиці вказано файли включення, потрібні для доступу до відповідних контейнерів. У контейнерних класах містяться оголошення необхідних типів даних, методів та перевантажених операцій.

Використання алгоритмів та -функторів у програмі забезпечується включеннями контейнерних класів з табл. 9.1, які під’єднують необхідні заголовкові файли:

#include #include

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

Таблиця 9.1 – Класи бібліотеки стандартних шаблонів

Файли
включення
#include

одновимірний масив елементів

масив для математичних обчислень

черга з двома кінцями

відображення (карта, словник) без повторень
елементів

відображення з повтореннями елементів

множина без повторення елементів

множина з повтореннями елементів

базовий клас для роботи з рядками

базовий клас для роботи з потоками введення

базовий клас для роботи з потоками
виведення

базовий клас для роботи з потоками
виведення

базовий клас для роботи з файловими
потоками введення

спеціалізація basic_if stream

базовий клас для роботи з файловими
потоками виведення

спеціалізація basic_of stream

базовий клас для роботи з файловими
потоками введення-виведення

спеціалізація basic_f stream

Це робить можливими різні форми створення та ініціалізації об’єктів, виклики методів з різними списками параметрів. Розглянемо деякі з них, які дають змогу адресувати елементи контейнера, формувати, доповнювати, витирати, вводити та виводити послідовності елементів. Повний перелік методів можна знайти у літературі або у бібліотеці MSDN.

9.2 Ітератори шаблонних класів

Ітератори використовуються для зверенення до елементів контейнера. Оголошуються за допомогою слова iterator. Залежний від реалізації тип ітератора є визначений у класі кожного контейнера. Ітератори забезпечують однаковий інтерфейс роботи з даними різних типів.

Більшість класів бібліотеки стандартних шаблонів містять методи begin () та end (), які повертають значення ітератора відповідно на початок та кінець послідовності елементів контейнера.

Ітератори мають властивості вказівників. Для них визначено операції розіменування (*), інкремента (++), декремента (—), нарощення на цілочисельне значення (+), різниця ітераторів (-) та порівняння ітераторів (! =, ==, , >=).

На рис. 9.1 зображено результати виконання арифметичних операцій над ітераторами р, q, r, s, t для деякого контейнера с.

Рисунок 9.1 — Арифметичні операції над ітераторами

Метод begin () повертає значення ітератора перед початковим елементом, а метод end () – після останнього елемента контейнера. Типовим прикладом перегляду усіх елементів контейнера за допомогою ітератора є використання циклу for:

vector С; vector ::iterator p; for ( p = C.begin( ) ; p != C.end( ) ; p++ ) cout 

9.3 Рядки символів

Контейнер, що містить рядок символів, оголошується за допомогою слова string (спеціалізований тип basic_string), або wstring (спеціалізований тип basic_string). Контейнер string призначений для роботи з рядками однобайтових символів, а контейнер wstring - для роботи з рядками з багатобайтовим кодуванням символів (наприклад, Unicode).

У контейнері визначено перевантажені конструктори, які дають змогу оголошувати об'єкт без ініціалізації, ініціалізувати об'єкт значенням рядка або іншим об'єктом класу string, наприклад:

string s, str("ABCD"), t(str);

Створений об'єкт міститиме рядок, розмір якого може динамічно змінюватися за допомогою визначених у класі методів та операцій. Інкапсульований в об'єкт string рядок символів може не містити завершального нуль-символу як ознаки кінця рядка у стилі мови С. Звертатися до символів рядка можна за допомогою ітератора або індексу. Використання індексу можливе завдяки перевантаженій операції operator [ ].

Базовими методами роботи з рядками є визначення довжини рядка, включення, витирання, заміна, копіювання, порівняння, пошук символу або підрядка у рядку. Більшість з методів є перевантаженими, що дає змогу використовувати їх з різним набором параметрів.

На рис. 9.2 зображено дію деяких з методів опрацювання рядка символів.

Рисунок 9.2 — Дія методів контейнера string

На рис. 9.2 прийнято такі позначення: str, st - об'єкти класу string; s - рядок символів або об'єкт класу string; х - рядок символів; р* q - ітератори; і - індекс символу.

Метод str.insert (ofs, s) включає у позицію ofs об'єкта-рядка str значення s, яке може бути іншим об'єктом класу string або звичайним рядком символів з типом char* .

Метод str.erase (ofs, n) витирає n символів з об'єкта-рядка str, починаючи з позиції ofs. Якщо n не задано, то витирання відбувається з заданої позиції of s до кінця рядка.

Метод str.substr(ofs, n) виділяє (копіює) з об'єкта-рядка str об'єкт-підрядок. Перший аргумент ofs задає початковий номер символу, а другий n - кількість символів. Якщо п не задано, то копіювання відбувається з позиції of s до кінця рядка. Якщо не задано обидва аргументи, то відбудеться копіювання всього рядка.

Метод str.copy(х, ofs, n) виконує копіювання n символів зі зміщенням ofs символів від початку рядка, інкапсульованого в об'єкт str, у звичайний рядок х. У кінець рядка х необхідно записати нуль-символ.

Перетворення вмісту об'єкта-рядка у рядок символів, який закінчується нуль-символ ом (у стилі мови С), забезпечує метод str.c_str(). Метод c_str () повертає вказівник const char* на початок рядка символів.

Перетворення об'єкта-рядка у масив символів здійснюється методом str. data (), який повертає вказівник const char* на початок символьного масиву, який не закінчується нуль-символом.

Метод str.find(s, ofs) забезпечує пошук позиції входження підрядка s (звичайного рядка або інкапсульованого в інший об'єкт-рядок) в об'єкт-рядок str зі зміщенням ofs. Якщо зміщення ofs не задано, то пошук ведеться від початку рядка. Повертає індекс першого входження або ознаку string::npos.

Метод pushback(c) заносить символ с в кінець рядка, а метод append (s) виконує конкатенацію рядків.

Порівняння рядків виконується методом str 1. compare (of s, n, str2), який порівнює n символів рядка strl зі зміщенням ofs від початку з рядком str2. Метод має ряд перевантажень. Повертає ціле число d зі знаком. Якщо d0, то рядок strl більший від str2.

Витирання усіх символів рядка виконується методом str.clear(). Метод str .erase (ofs, п) витирає n символів рядка str зі зміщенням ofs від його початку.

Для визначення довжини рядка використовується метод str.size () або його еквівалент str.length() . Зміна розміру рядка здійснюється методом resize (n, ch), де n - нова довжина рядка, ch - символ заповнення у випадку розширення рядка.

Крім методів, контейнер string містить перевантажені операції для роботи з рядками символів. До них належать такі: виділення символу інкапсульованого рядка за його порядковим номером ([ ]); присвоєння об'єктів, присвоєння об'єкту string рядка символів або окремого символу (=); конкатенація об'єктів, конкатенація об'єкта з рядком символів або окремим символом (+, +=); порівняння об'єктів або порівняння об'єкта з рядком символів (! =, =, , >=), введення об'єкта з потоку (>>) та виведення у потік (<<).

Практичне застосування деяких методів та операцій роботи з об'єктами класу string продемонстровано у такому прикладі програми.

Використовуючи клас string з бібліотеки STL, продемонструвати використання операцій (присвоєння, конкатенації, порівняння) та функцій (включення, витирання, заміни) для роботи з рядками символів.

#include #include using namespace std; void main() < string strl("ABCDEFGH"); string str2("1234"); string str3; // присвоєння рядків str3 = strl; cout strl) cout strl\n"; if (str3 == strl + str2) cout "; сіn >> str4; cout << str4 << endl; strl="ABCDEFGH"; str2="1234"; // робота функції insert() cout <<"Включення рядка str2 у рядок strl з третьої позиції:\п"; strl.insert(3, str2); cout << strl << endl; // робота функції erase() cout << "Витирання чотирьох символів з третьої позиції рядка strl:\n"; strl.erase(3, 4); cout << strl << endl; // робота функції replace() cout

9.4 Вектори

Одновимірні масиви

Шаблонний клас vector забезпечує роботу з динамічними масивами різних типів.

Оголошення об'єкта-вектора здійснюється за допомогою слова vector із вказанням у кутових дужках фактичного аргумента типу, наприклад:

vector v, а(5), b(7, -1), с(b);

При цьому викликається один із перевантажених конструкторів залежно від заданого списку аргументів. Оголошення об'єкта без аргументів передбачає динамічне створення масиву у програмі. Аргумент конструктора об'єкта а (5) задає початкову кількість елементів вектора, які набувають нульових значень за замовчуванням. Перший аргумент конструктора об'єкта b(7, -1) визначає кількість елементів, другий використовується для ініціалізації елементів динамічного масиву. Об'єкт с (b) проініціалізовано об'єктом b цього самого класу.

Базовий масив може бути розширений методом push_back (х), який здійснює занесення елементів у його кінець, або скорочений методом popback (), який здійснює витирання елементів з кінця вектора.

Змінити кількість елементів вектора можна також за допомогою методу resize (n, х), перший аргумент якого задає нову кількість елементів масиву, а другий (необов'язковий) - елемент заповнення у разі розширення вектора.

Поточну кількість елементів динамічного масиву можна отримати за методом size ().

Перевірка наявності елементів у векторі здійснюється методом empty (), який повертає логічне true, якщо вектор порожній.

Для звернення до елементів вектора використовується ітератор, спеціалізований тип якого визначено у класі vector. Значення ітератора на початок динамічного вектора повертається методом begin(), а на кінець - методом end(). Зміна ітератора у циклі від begin () до end() та його розіменування (використання операції *) дають можливість отримати значення усіх елементів вектора.

Крім ітератора, для доступу до елементів вектора можна використати індекс, який повертається перевантаженою операцією operator [ ].

Вектори підгримують довільний доступ до своїх елементів. Надаючи відповідне зміщення ітератору або індексу, можна прочитати, записати, включити або витерти відповідний елемент вектора.

Для занесення елементів у довільну позицію вектора, яка визначається значенням ітератора iter, використовується метод insert (iter, х), а для видалення - метод erase (iter), або erase (iter_from, iter_to). Витирання усіх елементів вектора забезпечується методом clear ().

Метод front () повертає посилання на початковий, а метод back() - на кінцевий елементи вектора.

Дію основних методів роботи з вектором зображено на рис. 9.3, де використано такі позначення: v - об'єкт класу vector; р, q - ітератори; х - елемент вектора.

Рисунок 9.3 — Дія методів контейнера vector

Над об'єктами вектора можна виконувати операції присвоєння та порівняння.

Виводити елементи вектора (та інших колекцій) можна поелементно у циклі або застосувати алгоритм copy, наприклад:

copy(v.begin(), v.end(), ostream_iterator(cout, " "));

Третій аргумент функції copy () є ітератором об'єкта призначення, який визначає адресу, за якою відбудеться виведення. У цьому прикладі копіювання елементів вектора здійснюється в об'єкт потокового виведення cout через
пропуск.

Наступний приклад програми демонструє застосування основних операцій для створення динамічного вектора дійсних чисел та для роботи з ним.

Сформувати вектор рівномірно розподілених випадкових дійсних чисел з діапазону [0, І). Відсортувати вектор. Включити у вектор заданий елемент так, щоб не порушити впорядкованості списку. Витерти з вектора включений елемент. Знайти суму елементів вектора.

#include #include #include #include using namespace std; void main() < vector v; vector ::iterator p, q; float x, s=0; int n=10; for(int i=0; i cout *q) // або алгоритм sort (v.begin () , v.end()); cout =x) < v.insert( q=p, x ); break;>cout Крім одновимірних масивів, на основі класу vector можна побудувати різноманітні адаптори, наприклад динамічні двовимірні та багатовимірні масиви. Розглянемо приклади побудови двовимірного масиву (матриці).

Для побудови матриці необхідно оголосити масив векторів і використати необхідні методи класу vector. Приклад програми формування матриці, заповнення її елементів дійсними випадковими числами та виведення на екран:

#include #include #include #include using namespace std; void main() < vector v; vector ::iterator p; float x; const int n=3; // кількість рядків (векторів) int m=4; // кількість елементів у рядку vector matrix[n]; // або vector * matrix = new vector[n]; for(int i=0; i for(int i=0;i >

Інший спосіб організації матриці - це її оголошення як вектора, елементи якого теж є векторами. Наприклад:

#include #include #include #include using namespace std; void main() < vector v; vector ::iterator p; float x; int n=3; // кількість рядків (векторів) int m=4; // кількість елементів у рядку vector :: iterator r; vector matrix; for(int i=0; i matrix.push_back(V); v.clear(); > for ( r = matrix.begin( ) ; r != matrix.end( ) ; r++ ) < for ( p = r->begin( ) ; p != r->end( ) ; p++ ) cout

Для формування матриці спочатку заповнюється допоміжний вектор (рядок), який потім заноситься у матрицю. Перед формуванням кожного наступного рядка відбувається витирання допоміжного вектора за допомогою методу clear ().

В обох прикладах для звернення до елементів сформованої матриці можна використати ітератори, або індекси. Так, вивести матрицю на екран можна так:

Алгоритми

Серед методів класу vector немає часто необхідних методів пошуку мінімального або максимального елемента та сортування елементів вектора. Для цього можна використати алгоритми STL-бібліотеки, реалізовані у вигляді зовнішніх до контейнерних класів функцій. Такі функції можуть виконувати пошук, сортування, копіювання, модифікацію та інші дії над колекціями контейнерів.

Алгоритми можна використати для роботи з елементами контейнерів різних типів, зокрема з типами, визначеними користувачем.

Для використання алгоритмів необхідно включити у текст програми заголовковий файл:

Так, для пошуку мінімального і максимального елемента вектора можна використати алгоритми min_element () і max_element (), для пошуку заданого елемента - метод find (), для витирання елемента - метод remove (), для сортування елементів - алгоритм sort ():

#include #include #include #include #include using namespace std; void main() < vectorv, t(10); vector::iterator pos, imin, imax, new_end; // Формування вектора for(int i=0; i<10; ++i) v.push_back(rand()%100) ; cout << "Сформований вектор" << endl; for(pos=v.begin(); pos!=v.end(); ++pos) cout << *pos << " "; cout << endl; // Пошук і виведення мінімального і максимального // елементів imin=min_element(v.begin(), v.end()); cout << "Мінімальний елемент = " << *imin << endl; imax=max_element(v.begin(), v.end()); cout << "Максимальний елемент = " << *imax << endl; // Визначення позиції мінімального та максимального // елементів imin=find(v.begin(), v.end(), *imin); cout << "Позиція мінімального елемента = " << imin - v.begin() << endl; imax=find(v.begin(), v.end(), *imax); cout << "Позиція максимального елемента = " << imax - v.begin () <Алгоритми працюють з інтервалами даних. Так, можна відсортувати весь вектор, як це показано у попередньому прикладі програми, або тільки його частину, наприклад:

sort(v.begin()+2, v.end()-3);

Аналогічно можна виконати пошук, копіювання, розміщення у зворотному порядку для інтервалу вектора.

Алгоритм find () здійснює пошук елемента у векторі v. Шуканий елемент задається третім аргументом функції (див. у попередній програмі). Інтервал пошуку [begin, end) визначається ітераторами, заданими першим і другим аргументами функції find ().

Алгоритм sort () виконує сортування вектора v. Напрям сортування визначається предикатом, який задається третім аргументом функції. За замовчуванням виконується сортування за зростанням. Предикат greater () означає сортування за спаданням. Інтервал сортування [begin, end) визначається ітераторами, заданими першим і другим аргументами функції.

Алгоритм copy () призначений для копіювання елементів вектора v у вектор t. Ітератори, задані першим і другим аргументами функції, визначають інтервал копіювання [begin, end) вектора v. Ітератор, заданий третім аргументом функції, визначає адресу отримувача даних - вектора t.

Крім вищезгаданих, бібліотека STL містить інші корисні алгоритми для роботи з колекціями, наприклад, підрахунок елементів, порівняння інтервалів, заміна елементів, перетворення та об'єднання елементів, витирання елементів, перестановки, циклічне зсування елементів, числові алгоритми та інші.

9.5 Масиви значень

Клас valarray призначений для опрацювання масивів числових значень. Одновимірний, за концепцією побудови, масив, завдяки засобам обчислення індексів та виділення підмножин значень, дає змогу імітувати роботу з багатовимірними масивами.

Для використання засобів класу valarray необхідно під'єднати файл

У цьому файлі виконано оголошення класу valarray для роботи з масивами числових значень, класів slice, gslice для виконання базових операцій лінійної алгебри, включаючи множення матриць, розв'язування систем лінійних рівнянь та дії з векторами. Крім того, визначено ряд допоміжних класів для збереження тимчасових даних.

Створення масиву здійснюється одним із перевантажених конструкторів. При створенні масиву вказується кількість елементів та значення для їх ініціалізації, наприклад:

int а[5]= ; valarray х(10), у(-1, 7), z(a, 5);

Так, масив х складається з 5-ти елементів, які за замовчуванням ініціалізуються нульовими значеннями, масив у складається з 7-ми елементів, яким присвоюється початкове значення -1, масив z складається з 5-ти елементів, які ініціалізуються елементами масиву а.

Визначені у класі valarray методи та операції виконуються над кожним елементом масиву.

Методи призначені для обчислення математичних функцій: (abs () - абсолютне значення; cos () - косинус; sin () - синус; tan () - тангенс; acos () - арккосинус; asin() - арксинус; atan() - арктангенс; cosh() - гіперболічний косинус; sinh() - гіперболічний синус; tanh() - гіперболічний тангенс; sqrt() - корінь квадратний; ехр() - експонента; log() - натуральний логарифм; log10 () - десятковий логарифм).

Кількість елементів масиву можна визначити за допомогою методу size (). Зміна розміру масиву здійснюється методом rеsіzе (n) або resize (n, х), де n - нова кількість елементів, а х - елемент заповнення при розширенні масиву.

Для знаходження максимального елемента призначений метод тах(), для знаходження мінімального - метод min ().

Суму елементів масиву можна обчислити методом sum ().

Метод shift (ofs) зсуває елементи на ofs позицій праворуч або ліворуч залежно від знака ofs. Якщо ofs>0, то елементи масиву зсуваються ліворуч, інакше - праворуч. Звільнені елементи заповнюються нулями.

Метод cshift(ofs) виконує циклічне зсування елементів на ofs позицій праворуч або ліворуч.

У класі valarray перевантажено ряд операцій, які виконуються над кожним елементом масиву або над парами елементів двох масивів:

Операції застосовуються до цілісних масивів. Бінарні операції виконуються над масивами з однаковою кількістю елементів. Результат виконання операції повертається у вигляді масиву значень такої самої розмірності.

Операції відношення повертають масив значень логічного типу, кожен елемент якого є результатом відношення між відповідними парами елементів.

Перевантажена операція [ ] забезпечує звернення до елементів масиву за допомогою індексу.

Для прикладу обчислимо вираз у= (а*b-с) / (a+b+с) над масивами дійсних чисел a, b, с :

#include #include using namespace std; void main() < valarraya (-2, 5), b(4, 5), c(-7, 5), y(5); у = ( a * b - c ) / (a + b + c) ; for(int i=0; i

З масиву valarray можна виділяти підмножини елементів (зрізи) за допомогою методу slice(beg, count, step), аргументами якого є: beg - початковий індекс, count - кількість елементів множини, step - відстань між елементами (крок).

Виділення підмножин можна використати для імітування роботи з багатовимірними масивами. Наприклад, нижченаведена програма виводить масив valarray у вигляді матриці, яка складається з 4-х рядків та 3-х стовпчиків, виділення та виведення на екран другого (починаючи з нуля) стовпчика та другого рядка масиву.

#include #include #include using namespace std; template void MatrixPrint(const valarray v, int CountCol) < for(int i=0; i> template void VectorPrint(const valarray v, int Count) < for(int i=0; ivoid main () < valarrayM(12); //4x3 valarray row(3), col (4); // Заповнення масиву for(int i=0; i

9.6 Стеки

Стек - це область оперативної пам'яті з дисципліною доступу LIFO (Last Input - First Output), або останній записаний елемент буде прочитаний першим.

Для створення стека необхідно оголосити параметризований об'єкт класу stack, наприклад:

За замовчуванням стек реалізовано на основі контейнера дек. За необхідності можна визначити інший базовий контейнер стека, наприклад:

// стек на основі вектора stack > s2; // стек на основі списку stack > ІЗ;

Занесення елементів у стек здійснюється методом push (х), а вилучення - методом pop (). Аргументом методу push (х) є елемент х, який заноситься у стек. Для читання елемента з вершини стека використовується метод top (). Кількість елементів стека можна отримати, застосовуючи метод size(). Перевірка наявності елементів у стеку здійснюється методом empty (), який повертає логічне true, якщо стек порожній.

Застосування методів для роботи зі стеком проілюстровано на рис. 9.4, де використано такі позначення: s - об'єкт шаблонного класу stack; х - елемент стека.

Над об'єктами стека можна виконувати операції присвоєння та порівняння.

У нижченаведеній програмі використано методи класу stack для формування і читання стека цілих чисел, які набувають значення в інтервалі від 20 до 50.

Створити стек із 10 цілих випадкових чисел з діапазону [20,50]. Прочитати вміст стека.

#include #include #include #include using namespace std; void main() < stack s; stack ::size_type size; int x; srand((unsigned)time( NULL )); while(s.size ( ) size=s.size(); cout 0) < x = s.top( ); coutcout

9.7 Списки

Шаблонний клас list реалізує двонапрямлений список елементів. Кожен елемент списку, крім полів даних, містить допоміжні посилання на попередній та наступний елементи. Списки підтримують тільки послідовний доступ до своїх елементів. Наприклад, щоб прочитати деякий елемент, необхідно переглянути всі попередні у напрямку від початку до кінця списку (або всі наступні у напрямку від кінця до початку).

Створення списків здійснюється конструкторами шаблонного класу list, наприклад:

list s, si (5), s2(7, 0), s3(s2);

Перевантажені конструктори класу list дають можливість створити порожній список s, список si з початковою кількістю елементів, список s2 з початковою кількістю елементів (перший параметр) та значенням для ініціалізації усіх елементів (другий параметр), список s3, проініціалізований іншим списком цього самого типу та ін.

Формування або читання списку можуть бути виконані як з початку, так і з його кінця. Для занесення елементів у початок списку використовується метод push_front (х), а для занесення у кінець - метод push_back(х). Відповідно, для читання списку з початку призначений метод pop front (), а для читання з кінця - метод pop_back ().

Для роботи з двонапрямленим списком достатньо знати адресу його першого або останнього елемента. Адреси сусідніх елементів можна отримати з адресних полів поточного елемента. Для адресування елементів списку використовуються ітератори. Значення ітератора для початкового елемента списку повертається методом begin (). На кінець списку вказує ітератор, отриманий методом end ().

Читання значення елемента з початку списку здійснюється методом front (), а з кінця списку - методом back ().

Включення елемента у визначену значенням ітератора позицію списку забезпечує метод insert (iter, х), а вилучення елемента - метод erase(iter).

Дію методів роботи зі списком зображено на рис. 9.5, де прийнято такі позначення: s - об'єкт класу lis t; р, q - ітератори; х - значення елемента списку.

Витирання елементів списку, які мають задане значення х, здійснюється методом remove (х). Витирання всіх елементів здійснює метод clear (). Злиття списків si та s2 виконує метод si .merge (s2). Для цього вибираються і порівнюються між собою два чергові елементи списків si та s2. За замовчуванням порівняння здійснюється за критерієм less (), де T - тип елемента списку. Менший елемент включається у поточну позицію результуючого списку si. Для вибору більшого елемента необхідно використати критерій greater () .

Сортування списку забезпечується методом sort(). За замовчуванням список сортують за зростанням значень елементів. Для сортування за спаданням необхідно викликати функцію з аргументом: sort (greater). Поточну кількість елементів списку повертає метод size (). Зміна розміру списку (скорочення або розширення) здійснюється методом resize (n), де n - нова кількість елементів. Розширений список може бути заповнений символом х за допомогою перевантаженого методу resize (n, х).

Крім того, над об'єктами списку можна виконувати операції присвоєння та порівняння.

Наступний приклад програми демонструє роботу деяких з методів класу list.

Побудувати однонапрямлений лінійний список цілих чисел. Відсортувати список. Включити та витерти елемент списку. Після кожної операції вивести вміст списку на екран.

#include #include using namespace std ; int main() < lists; list::iterator p; int n=10, x; cout<<"Cndopeння списку з кінця"<<епсі1; for(int і=0; i9.8 Асоціативні відображення

Відображення без повторень ключів

Відображення елементів (карта, словник) та стек належать до групи асоціативних контейнерів. Елементи таких контейнерів складаються з двох частин: ключа та елемента даних, які перебувають в асоціативній залежності. Так, за значенням ключа можна відшукати відповідний елемент даних.

Створення відображення елементів починається з оголошення об'єкта шаблонного класу map, наприклад:

Можна створювати порожні відображення без ініціалізації та відображення зі зазначенням кількості елементів та значень для їх ініціалізації.

Колекції асоціативних контейнерів зберігаються у пам'яті впорядковано у вигляді бінарного дерева. Конструктори усіх асоціативних контейнерів містять необов'язковий параметр, який задає критерій сортування колекції його
елементів, наприклад:

map > ml; // за зростанням; map > m2; // за спаданням.

За замовчуванням використовується критерій сортування за зростанням.

Кожен елемент відображення складається з пари значень: ключа та відповідного йому поля даних. Наприклад, ключем може бути прізвище студента, а поле даних може містити його навчальний рейтинг. Для доступу до пар значень використовується об'єкт шаблонного класу pair, наприклад:

pair х, *p=new pair;

Поля пари значень мають назви first та second. Для звернень до них необхідно використати назву об'єкта та операцію "крапка", наприклад, х. first, х. second, або вказівник на об'єкт та операцію "стрілка", наприклад p->first, p->second.

Пару елементів можна створити за допомогою конструктора класу pair, наприклад:

x=pair ("Козак", 89.5 );

або за допомогою функції make_pair:

x=make_pair("Чуб", 78.4);

Доступ до елементів відображення забезпечується ітераторами. Метод begin () повертає ітератор на початок, а метод end () - на кінець колекції елементів. Інкремент ітератора вкаже на наступний елемент відображення (за впорядкованими значеннями ключів) незалежно від того, у якому вузлі бінарного дерева цей елемент розміщено у пам'яті.

Формування відображення здійснюється методом insert (iter, х). Аргументами методу є значення ітератора iter, який задає позицію вставки, та значення елемента х (значення пари pair). Включення елемента відбувається так, щоб не порушити впорядкованості колекції за ключем х. first. Якщо заданий ключ вже існує в колекції, то включення нового елемента не відбувається. Перевантажений варіант методу insert (х) розміщує пару х в колекцію контейнера без вказання місця вставки. Це можливо для контейнера map та усіх інших асоціативних контейнерів завдяки впорядкованому зберіганню колекцій.

Пошук елемента колекції виконується методом find (key). Аргументом методу є ключ елемента. Метод повертає ітератор, який вказує на знайдений елемент, або на map:: end, якщо елемент не знайдено.

Метод lower_bound(key) повертає ітератор на перший елемент контейнера map, який є менший або дорівнює заданому ключу. Метод upper__bound(key) повертає ітератор на перший елемент контейнера map, який є більшим за заданий ключ.

Метод count (key) повертає кількість елементів, ключі яких дорівнюють ключу, заданому у списку аргументів.

Витирання елемента здійснюється методом erase (iter), аргументом якого є значення ітератора цього елемента. При потребі витирання послідовності елементів вказується два аргументи-ітератори erase (iterl, iter2): витирати від iterl до iter2. На відміну від неасоціативних контейнерів (рядок, вектор, список, черга), у класі map витирання елемента може бути виконано також за значенням ключа key, наприклад, erase (key). Витирання усієї колекції відображення елементів здійснюється методом clear ().

Наявність елементів у контейнері перевіряється методом empty (), який повертає логічне true, якщо колекція порожня.

Застосування методів класу map зображено на рис. 9.6, де використано такі позначення: m - об'єкт класу map; р, q, f - ітератори, х - пара значень (pair), або елемент колекції.

Рисунок 9.6 — Дія методів контейнера mар

Над об'єктами класу map можна виконувати операції присвоєння та порівняння.

Приклад програми роботи з бінарними асоціативними відображеннями демонструє роботу основних методів шаблонного класу map.

#include #include #include using namespace std; void main() < map< string, int>m; map :: const_iterator p; typedef pair Student; minsert ( Student ( "First", 80 ) ); minsert ( Student ( "Second", 39 ) ); minsert ( Student ( "Third", 60 ) ); minsert ( Student ( "Fourth", 75 ) ); minsert ( Student ( "Fifth", 89 ) ); cout first second second first second

Результатом виконання програми є такі виведення:

Склад контейнера map:

Елемент контейнера map з ключем Second дорівнює: 39

Склад контейнера після витирання елемента з ключем Second:

9.9 Множини

Множини без повторень елементів

Множина є різновидністю відображення, у якій значення елемента дорівнює його ключу.

Множина задається асоціативним контейнером шаблонного класу set:

set si; set  s2; set  s3;

Другий аргумент шаблону є необов'язковим. Він визначає критерій сортування при занесенні елементів у множину. За замовчуванням приймається критерій less - сортування за зростанням значень елементів. Критерій greater визначає сортування за спаданням. У пам'яті множина зберігається у вигляді бінарного дерева.

Для роботи з множинами використовуються ті самі методи та операції, що і для класів map та multimap.

Елементи можна вводити до множини set у довільному порядку, навіть з повтореннями, але під час виведення вони будуть впорядковані так, як це задає критерій сортування, причому кожен елемент буде зберігатися в одному екземплярі.

Дію методів класу set зображено на рис. 9.7, де використано такі позначення: s - об'єкт класу set; р, q, f - ітератори; х - значення елемента множини.

Рисунок 9.7 — Дія методів контейнера set

Застосування методів класу set для роботи з множинами демонструє така програма.

Сформувати дві множини цілих чисел. Продемонструвати операції об'єднання, різниці, перетину та відношення множин.

#include #include using namespace std; #define m 5 #define n 7 int main( ) < set s1, s2, s3, s4, s5; set :: iterator p, q; int x; bool flagl, flag2; srand((unsigned)time( NULL )); for (int i=0; Km; i++) < x=10+unsigned((double)rand()/RAND_MAX*(20-10)); s1.insert( x ); >for (p=sl.begin () ; p!=sl.end(); p++) cout for (p=s2.begin () ; p!=s2.end(); p++) cout for (p=s4 .begin (); p!=s4.end(); p++) cout for (p=s5.begin (); p!=s5.end(); p++) cout > if ( flagl ) cout = flag2=true; for(p=s2.begin(); p!=s2.end(); p++) < q = sl.find( *p ); if ( q == si.end( ) ) > if ( flag2 ) cout << "Множина s2 є підмножиною si" << endl; // operator == if ( flagl==true && flag2==true ) cout

Множини з повтореннями елементів

Множини з повтореннями елементів є об'єктами шаблонного класу multiset, наприклад:

multiset si; multiset  s2;

Другий аргумент шаблону задає порядок сортування елементів при створенні множини multiset і є необов'язковим. За замовчуванням діє порядок less - сортування за зростанням. Множина з повтореннями елементів зберігається у пам'яті у вигляді бінарного дерева.

Для роботи з колекціями контейнера класу multiset використовуються ті ж самі методи і операції, що й для звичайного класу set. Дію деяких з методів зображено на рис. 9.8.

Рисунок 9.8 — Підпис до рисунка

Приклад формування контейнера multiset:

multiset ms; multiset :: iterator r; int x; ms.insert(40); ms.insert(20); ms.insert(40); ms.insert(30); ms.insert(10); ms.insert(30); for each (x in ms) cout

9.10 Приклад програми

Розробити телефонну книгу на основі класу Особа (Person) та контейнерного класу Множина з повтореннями елементів (multiset). Ввести прізвище Особи та визначити номер її телефону. Визначити кількість осіб, що мають однакове прізвище та ім 'я, і вивести на екран номери їхніх телефонів.

#include #include #include using namespace std; // Клас Особа class Person < string LastName; // string FirstName; // long PhoneNumber; // public: // Конструктор Person(string LN="", string FN="", long PN=0): LastName(LN), FirstName(FN), PhoneNumber(PN)<>// Перевантажена операція new void * operator new (size_t, void *ptr) // Перевантажена операція _== friend bool operator==(const Persons P1, const Persons P2) // Перевантажена операція < friend bool operator<(const Persons P1, const Persons P2) // Перевантажена операція потокового введення friend istream& operator>>(istream& is, Persons P) >P. LastName>>P. FirstName>>P. PhoneNumber; return is;> // Перевантажена операція потокового виведення friend ostream& operator <<(ostream& os, Persons P) >; // Головна функція void main() < // Множина з повтореннями елементів multiset> S; // Об'єкт класу Person Person P; cout>P) // Введення до натиснення Ctrl/Z S.insert(P); // Очищення потоку введення від ознаки EOF (Ctrl/Z) сіn.clear(); cout <<"Число записів="<::iterator i; for(i = S.beginO; і != S.end(); ++i) cout>LN; cout>FN; // Повторна ініціалізація об'єкта new(&P) Person(LN, FN, 0); соut

Список використаних джерел

Кравець П.О. Об'єктно-орієнтоване програмування: навч. посібник / П.О. Кравець. - Львів: Видавництво Львівської політехніки, 2012. - 624 с.

1С:Бухгалтерія: настройка рахунків, субконто та інших параметрів. Реферат

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

В Україні система рахунків встановлена державою та названа Планом рахунків бухгалтерського обліку фінансово-господарської діяльності підприємства. Цей план рахунків повинен застосовуватися на всіх підприємствах, крім банків, страхових організацій, бюджетних організацій, для яких встановлені спеціальні плани рахунків. Крім того, малі підприємства можуть використовувати скорочений план рахунків.

Оскільки план рахунків є основою ведення бухгалтерського обліку, то перед тим, як почати роботу з "1С:БУХГАЛТЕРІЄЮ", необхідно визначити по якій системі рахунків буде вестись бухгалтерський облік. В "1С:БУХГАЛТЕРІЮ" вже закладено систему рахунків, яка передбачена "Планом рахунків бухгалтерського обліку фінансово-господарської діяльності підприємств". Ви можете залишити її без змін або відкоригувати у відповідності зі своїми потребами.

Для перегляду і коректування плану рахунків необхідно вибрати в головному меню групу функцій "Операції", а в ній - функцію "Рахунки". На екран буде виведено план рахунків бухгалтерського обліку. Список рахунків може бути виведений на екран і при введенні даних в журнал операцій для вибору з нього конкретного рахунку або субрахунку.

Формат плану рахунків. План рахунків виводиться у вигляді списку, який має шість граф:

код (номер) рахунку (субрахунку)

назва рахунку або субрахунку

назва виду об'єкту аналітичного обліку (субконто), якщо по даному рахунку або субрахунку ведеться аналітичний облік

в цій графі стоїть символ "+", якщо по даному рахунку або субрахунку ведеться кількісний облік (ведення кількісного обліку означає ведення аналітичного обліку)

в цій графі стоїть символ "+", якщо по даному рахунку або субрахунку ведеться валютний облік

в цій графі стоїть символ "+", якщо по даному рахунку або субрахунку в звітах довільної форми необхідно виконувати аналіз оборотів з іншими рахунками по окремих об'єктах аналітичного обліку (субконто) даного рахунку

Список впорядковано по кодах (номерах) рахунків та субрахунків.

  • Для кожного рахунку (субрахунку) не можна призначити більше одного виду субконто, по якому для даного рахунка повинен вестись аналітичний облік.
  • Обмеження по вибору видів субконто для субрахунків одного рахунка наведені нижче (п. 3.2).

Перегляд плану рахунків. як і для всіх списків. Ви можете переглядати план рахунків за допомогою клавіш переміщення курсору і лінійок прокрутки. Натискаючи алфавітно-цифрові клавіші, Ви можете здійснити швидкий пошук рахунку по його коду (номеру).

Крім швидкого пошуку рахунка по його номеру Ви можете шукати потрібний рахунок по довільному рядку символів, які входять в його назву або в назву виду субконто, асоційованого з цим рахунком. Пошук здійснюється з допомогою клавіш і піктограм:

  • Ctrl F3 - завдання параметрів пошуку і його виконання;
  • F3 - повтор пошуку в тому ж напрямі;
  • Shift F3 - повтор пошуку вперед по списку (вправо і вниз);
  • Alt F3 - повтор пошуку назад по списку (вліво і вверх).

Вихід з перегляду. Якщо список рахунків був викликаний з головного меню, то для закриття вікна зі списком рахунків слід натиснути комбінацію клавіш Ctrl F4 або двічі клікнути мишшю кнопку системного меню в лівому верхньому куті вікна зі списком. Якщо список було виведено на екран для вибору з нього конкретного рахунку або субрахунку, то, натиснувши Enter або кнопку запиту Выб., або двічі клікнувши мишшю Ви вийдете з перегляду з вибраним рахунком або субрахунком, а натиснувши Ctrl F4 або двічі клікнувши мишшю кнопку системного меню в лівому верхньому куті вікна зі списком - вийдете з перегляду з відмовою від вибору.

Друк плану рахунків. Для друку плану рахунків слід натиснути клавішу F8 або піктограму в рядку піктограм програми (можна також вибрати пункт "Печать" з групи меню "Действия"). Програма виведе запит, в якому Ви повинні будете встановити один параметр: чи виводити відомості про субрахунки. Для зміни параметра натисніть Пробел або клікніть мишшю назву параметра. Встановивши параметр, натисніть клавішу Enter або кнопку запиту Сформировать. Програма виведе в окремому вікні звіт про список рахунків.

Ви можете переглядати цей рахунок, переміщаючись по ньому з допомогою клавіш переміщення курсору або лінійок прокрутки. Для виводу списку на принтер натисніть клавішу F8 або піктограму в рядку піктограм програми (можна також вибрати пункт "Печать" з групи меню "Действия"). Друк списку здійснюється у відповідності з біжучими установками принтера і параметрами друку, встановленими для стандартних звітів (вони задані в пункті "Параметры печати отчетов" групи меню "Сервис").

Для закриття вікна з підготованим до друку списком рахунків натисніть комбінацію клавіш Ctrl F4 або двічі клікніть мишшю кнопку системного меню в лівому верхньому куті вікна з цим списком.

Корегування плану рахунків

План рахунків, що входить до складу "1С:Бухгалтерії", відповідає затвердженому Міністерством Фінансів "Плану рахунків бухгалтерського обліку фінансово-господарської діяльності підприємств", тому, скоріше всього, він не потребує суттєвих змін. Тим не менше, Ви можете повністю поміняти план рахунків: змінити номери (коди) рахунків та субрахунків і їх назви. Однак слід мати на увазі, що форми звітності та типові проводки, які поставляються разом з програмою, орієнтовані на стандартний план рахунків, який поставляється разом з програмою. Якщо Ви вирішите змінити номери рахунків або субрахунків чи їх призначення, Вам необхідно буде відповідним чином скоректувати також форми звітності та типові проводки.

Завдання ведення аналітичного обліку (заповнення полів "Вид субконто" і "К. ") в плані рахунків не призведе до необхідності змін у формах звітності та типових проводках, які поставляються з програмою. Навпаки, ведення аналітичного обліку бажане для рахунків з розгорнутим сальдо (тобто активно-пасивних рахунків, наприклад, 71 "Розрахунки з підзвітними особами", 76 "Розрахунки з різними дебіторами та кредиторами" і т. д.), оскільки воно дає інформацію для правильного підрахунку розгорнутого сальдо в балансі.

Довжина кодів рахунків та субрахунків. Коди рахунків та субрахунків можуть мати довільні символи, однак на практиці рахунки та субрахунки переважно позначаються номерами. В "1С:Бухгалтерії" максимальна довжина кодів рахунків та субрахунків може мати 2 або 3 символи. В поставочному варіанті і коди рахунків, і коди субрахунків можуть мати максимальну довжину 2 символи. Якщо Вас це не влаштовує, встановіть в запиті "Общие параметры" потрібні кількості знаків у рахунках та субрахунках.

Ввід нового рахунку або субрахунку. Якщо при перегляді списку рахунків Ви натиснете клавішу Ins, або клавішу Нов. в нижній частині вікна зі списком програма запропонує Вам ввести код рахунку, код субрахунку і назву. Після вводу значення слід натиснути Enter або кнопку Зап. в нижній частині вікна зі списком. Програма не дозволить Вам ввести новий рахунок або субрахунок, якщо вказаний код рахунку або субрахунку співпадає з тим, який вже є в списку.

Новий рахунок або субрахунок буде поставлений в список рахунків на те місце, яке він повинен займати по порядку (список рахунків впорядкований по кодах рахунків і субрахунків).

При вводі рахунків та субрахунків спочатку введіть стрічку з кодом рахунку, пустим кодом субрахунку, і в ній вкажіть назву рахунка. Потім введіть стрічки для субрахунків даного рахунка.

Знищення рахунку або субрахунку. Для знищення коду рахунку або субрахунку виділіть стрічку з цим рахунком або субрахунком і натисніть клавішу Del або кнопку Уд. в нижній частині вікна зі списком. Програма виведе запит про необхідність знищення:

Для підтвердження знищення натискайте Enter або кнопку запиту Да, а для відмови - Esc або кнопку запиту Нет. Ні в якому разі не слід знищувати з плану рахунків рахунки або субрахунки, по яких мали місце будь-які операції в текучому або минулих періодах.

Коректування списку рахунків здійснюється у відповідності з правилами описаними в п. 2.10 зі наступними особливостями:

  • для графи "Вид субконто" при натисненні клавіші F4 або кнопки вибору (її видно в правій частині графи при її редагуванні) на екран виводиться список видів субконто. Для завдання аналітичного обліку по рахунку виберіть з даного списку вид субконто, що буде асоціюватися з даним рахунком, і натисніть клавішу Enter або кнопку Выб. в нижній частині вікна зі списком видів субконто. Якщо в списку немає потрібного виду субконто, слід спочатку натиснути Ins і ввести номер і назву потрібного виду субконто. Щоб відмінити ведення аналітичного обліку для даного рахунка або субрахунку, натисніть кнопку запиту Без субконто;
  • зміна графи "К." можлива тільки якщо для рахунку ведеться аналітичний облік (графа "Вид субконто" не пуста);
  • для граф "К."" В."" Ан." при натисненні клавіші F4 або кнопки вибору значення графи змінюється: "+" - відповідна ознака ввімкнута, пробел - вимкнена).

Не слід змінювати номери рахунків і субрахунків, по яких мали місце операції в біжучому або попередньому періодах.

Більш детально про аналітичний і кількісний облік буде йти мова в слідуючих параграфах цього розділу.

Якщо при вводі проводки в журнал операцій Ви вкажете в якості дебету чи кредиту рахунок, якого немає в плані рахунків, його номер автоматично буде включено до плану рахунків. Якщо помилково це не зроблено, то необхідно при коректуванні плану рахунків ввести назву цього рахунка або субрахунку.

Якщо Ви заповнили графу "Вид субконто" для рахунку, то ця графа для всіх підрахунків даного рахунку повинна бути або пустою, або мати такий самий вид субконто. При цьому в першому випадку залишки аналітичного обліку підраховуються тільки по рахунку (це пришвидшує розрахунки і зменшує об’єм інформації), а в другому випадку - також і по відповідних субрахунках.

Якщо графа "Вид субконто" для рахунку залишена пустою, то для субрахунків цього рахунку види субконто для ведення аналітичного обліку можуть бути різні.

Після коректування плану рахунків слід знову розрахувати залишки (пункт "Розрахунок залишків" групи "Звітність" головного меню).

Валютний облік

"1С:Бухгалтерія" дозволяє вести бухгалтерський облік в кількох валютах (до 999 валют). Для організації валютного обліку використовується список валют, історія курсів валют, настройка плану рахунків на валютний облік.

При необхідності ведення валютного обліку слід викликати з режиму "Валюти" пункту "Операції" головного меню список валют і ввести в нього повні і короткі назви валют, які будуть використовуватися, та їх курси на текучу дату.

При необхідності вводу курсів на інші дати необхідно виділити курсором потрібну валюту і натиснути F3 або кнопку Курсы в нижній частині вікна зі списком валют для переходу в список курсів валют. Кожна стрічка цього списку має дату встановлення курсу і курс (кількість гривень в одиниці даної валюти). Бажано вказувати курси валют на кінець кожного місяця.

Заповнивши список валют і список курсів валют, слід вказати в режимі коректування рахунків список рахунків, по яких необхідно вести валютний облік. Біля цих рахунків та субрахунків слід поставити символ "+" в графі "В. ". Цю ознаку можна вказувати, як по рахунках, так і по субрахунках. Якщо Ви вкажете ознаку валютного обліку тільки по рахунку, а по субрахунку - ні, то при підрахунку залишків по субрахунках не будуть формуватися залишки та обороти в валюті, тому ці залишки та обороти не можна буде використати в документах і звітах.

Зауваження. Список валют і список курсів валют (при одночасному виводі на екран) будуть зв'язані між собою: якщо Ви виділите в списку валют іншу стрічку (наприклад, клікнувши її мишкою), то у вікні зі списком курсів валют з" явиться список курсів виділеної Вами валюти.

Для проводок по рахунках, для яких вказаний облік в валюті, програма запитує та зберігає суми і в валюті, і в гривнях. При розрахунку підсумків програма розраховує і зберігає залишки та обороти в валюті по кожній валюті окремо, в гривнях по кожній валюті окремо і сумарні залишки та обороти. Якщо по рахунку (субрахунку) ведеться аналітичний облік, то ці дані вираховуються і для кожного об’єкта аналітичного обліку (субконто). Збереження сум проводок і залишків і в гривнях, і в валюті дозволяє виконувати переоцінку валюти.

Як правило, валютний облік ведеться по рахунках обліку грошових коштів (50, 52), розрахунків зі сторонніми організаціями (60, 61, 62, 64, 76 і т. д.) і з підзвітними особами (71). При необхідності Ви можете вести валютний облік по будь-яких потрібних Вам рахунках.

Аналітичний облік

При найпростішому використанні програми "1С:Бухгалтерія" бухгалтер може обмежитися тільки веденням синтетичного обліку. При цьому він може вводити різні проводки і на їх основі отримувати оборотно-сальдові відомості, карточки рахунків, головну книгу, вести касу, обробляти банківські документи, друкувати платіжні доручення і видавати звіти податковим органам.

Однак повністю можливості програми розкриваються при веденні аналітичного обліку. В цьому випадку програма дозволяє слідкувати за розрахунками з конкретними покупцями та постачальниками, враховувати кількість і рух товарів та основних засобів, виконання договорів, розрахунків по зарплаті і з підзвітними особами і т. д. Програма веде аналітичний облік в кількісному та грошовому виразі, а також у валюті.

В цьому параграфі будуть викладені основні поняття, які відносяться до ведення аналітичного обліку в "1С:Бухгалтерії", а також подані деякі рекомендації. Конкретні процедури ведення аналітичного обліку подаються в слідуючих параграфах.

Субконто. Для ведення аналітичного обліку програма дозволяє вести необмежену кількість довідників об’єктів аналітичного обліку:

  • по товарах,
  • матеріалах,
  • організаціях,
  • співробітниках,
  • основних засобах і т. д.

Для загальної назви групи об’єктів аналітичного обліку в "1С:Бухгалтерії" використовується термін "субконто". Список субконто виводиться і коректується в режимі "Види субконто" розділу "Операції" головного меню, його можна змінювати також при перегляді рахунків бухгалтерського обліку і при вводі операцій.

Аналітичний облік. Щоб задати ведення аналітичного обліку по тому або іншому синтетичному рахунку або субрахунку, слід в режимі перегляду рахунків (функція "Рахунки" з групи функцій "Операції") вказати в графі "Вид субконто" назву виду субконто, що буде зв’язаний з даним рахунком або субрахунком. Після цього при вводі проводок по даному рахунку або субрахунку програма буде пропонувати Вам вибрати з відповідного довідника об’єкт, до якого відноситься проводка. Наприклад, якщо Ви "закріпили" до рахунку 71 "Розрахунки з підзвітними особами" вид субконто "Співробітники", то при вводі операцій по 71 рахунку програма буде пропонувати Вам вибрати зі списку співробітника, до якого відноситься проводка. Якщо потрібного співробітника в списку немає, то список можна доповнити (для цього потрібно буде перервати ввід операції).

Кожний вид субконто може бути закріплено до будь-якого числа рахунків і субрахунків (наприклад, для рахунків 60, 61, 62, 64. 76 можна ввести єдиний список субконто - "Організації").

Аналітичний облік доцільно вести по тих рахунках, для яких необхідно мати залишки і обороти по кожному об’єкту. Найчастіше аналітичний облік ведеться по слідуючих рахунках:

  • 01 - Основні засоби.
  • 04 - Нематеріальні активи.
  • 05 – Матеріали.
  • 12 – МШП.
  • 40 - Готова продукція.
  • 41 – Товари.
  • 45 - Товари відвантажені.
  • 60 - Розрахунки з постачальниками.
  • 61 - Розрахунки по авансах виданих.
  • 62 - Розрахунки з покупцями.
  • 64 - Розрахунки по авансах отриманих.
  • 71 - Розрахунки з підзвітними особами.
  • 75 - Розрахунки з засновниками.
  • 76 - Розрахунки з дебіторами та кредиторами.

Крім того, аналітичний облік можна використовувати і для фінансового аналізу діяльності підприємства. Наприклад, якщо вести аналітичний облік по рахунку 46 "Реалізація", де позиціями аналітики будуть напрями Вашої діяльності (виробництво, транспорт, послуги і т. д.), Ви завжди зможете точно знати, який дохід дає кожний вид діяльності. Якщо вести аналітичний облік по рахунку 20 "Основне виробництво", де список позицій буде складатися з назв продукції або її типів, то можна отримати облік затрат на виробництво, які включатимуться в собівартість продукції. З допомогою аналітичного обліку Ви можете вести облік валюти, зарплати, нараховувати амортизацію і т. д.

Багаторівневі списки. В "1С:Бухгалтерії" списки об’єктів аналітичного обліку можуть мати багаторівневу структуру. Це дозволяє організовувати довідники об’єктів аналітичного обліку більш зручним чином. Наприклад, якщо при роботі з одним контрагентом Ви використовуєте кілька договорів, то можна в списку "Організації" на другому рівні вказувати назви договорів. Тоді при вводі проводок по рахунках, до яких "закріплений" вид субконто "Організації", Вам буде спочатку запропоновано вибрати назву організації, а потім, якщо по цій організації є ділення на договори, - назву договору. Аналогічно, Ви можете зберігати список співробітників, згрупований по підрозділах Вашої організації. Ви зможете отримати підсумки як по організаціях або підрозділах, так і по конкретних договорах або співробітниках.

Кількісний облік. По рахунках, для яких вказано ведення аналітичного обліку (вибраний вид субконто), можна вести облік в натуральному виразі. Ведення обліку в натуральному виразі ведеться незалежно від вартісного. При вводі проводок по рахунках, для яких заданий кількісний облік, програма буде запитувати про кількість та суму. Залишки та обороти по таких рахунках будуть вираховуватися і в натуральному, і у вартісному виразі. При обліку в натуральному виразі в кількості використовується три знаки в десятковій частині.

Для завдання необхідності ведення кількісного обліку необхідно поставити у відповідній стрічці списку рахунків символ "+" в графі "К. ".

Найчастіше кількісний облік використовується для рахунків, зв’язаних з товарно-матеріальними цінностями (основних засобів, нематеріальних активів, матеріалів і т. д.), але можливі і інші варіанти.

Параметри субконто. В "1С:Бухгалтерії" для кожного виду об’єктів аналітичного обліку можна задати деяку кількість параметрів. Наприклад, для співробітників можна вказати оклад, адресу, повне ім’я та по-батькові і т. д., для організації - повну назву, адресу, розрахунковий рахунок, банківські реквізити і т. д.

Назви параметрів субконто єдині для всіх об’єктів, що належать одному виду субконто, а значення цих параметрів, звичайно, для кожного об’єкта аналітичного обліку задаються індивідуально.

Значення параметрів можна використовувати в формах первинних документів, в формах звітів, в формулах типових проводок та ін. Наявність параметрів субконто дозволяє автоматизувати багато операцій бухобліку: нарахування зарплати, амортизації і т. д.

Список видів субконто

Для перегляду і корегування списку видів субконто слід використовувати функцію "Види субконто" з групи "Операції" головного меню. При цьому на екрані буде виведено список видів об’єктів аналітичного обліку. Цей список виводиться також при коректуванні графи "Вид субконто" списку рахунків (функція "Рахунки" групи "Операції" головного меню), а також при складанні стандартних звітів. При цьому список подається для вибору виду субконто, тобто для коректування графи списку потрібно буде використовувати комбінацію клавіш Shift Enter, а не Enter.

Формат списку видів субконто. Список видів субконто має дві графи: номер субконто та назва субконто. Ви можете впорядкувати список як по номеру субконто (натиснувши Ctrl 1), так і по назві субконто (натиснувши Ctrl 2). Впорядкувати список можна також з допомогою пункту "Сортировка" групи меню "Действия".

Перегляд списку видів субконто. Як і всі списки список видів субконто Ви можете переглядати за допомогою клавіш переміщення курсору і лінійки прокрутки. З допомогою алфавітно-цифрових клавіш Ви можете здійснити швидкий пошук виду субконто по його назві (якщо список відсортований по назві), або по його номеру (якщо список відсортований по номеру).

Крім швидкого пошуку виду субконто, Ви можете шукати потрібний вид субконто по довільному рядку символів, що входять в його назву. Пошук здійснюється з допомогою клавіш і піктограм:

Ctrl F3 - задання параметрів пошуку і його виконання;

F3 - повтор пошуку в тому ж напрямі;

Shift F3 - повтор пошуку вперед по списку (вправо і вниз);

Alt F3 - повтор пошуку назад по списку (вліво і вверх).

При перегляді списку видів субконто Ви можете, натиснувши клавішу F5 або кнопку Субконто в нижній частині вікна зі списком, перейти до коректування списку значень субконто для біжучого виду субконто (детальніше в п. 3.6). При цьому список видів субконто і список значень субконто будуть зв'язані між собою: якщо Ви виділите в списку видів субконто інший рядок (наприклад, клікнувши його мишкою), то у вікні зі списком значень субконто з" явиться список значень виділеного Вами виду субконто.

Вихід з перегляду. Для закриття вікна зі списком слід натиснути комбінацію клавіш Ctrl F4 або двічі клікнути мишкою кнопку системного меню в лівому верхньому куті вікна зі списком.

Коректування списку видів субконто. Для вставки в список нового виду субконто, натисніть клавішу Ins або кнопку Нов. в нижній частині вікна зі списком і введіть номер виду субконто (програма запропонує Вам перший вільний номер) і назву. Після вводу кожного значення натисніть клавішу Enter або кнопку Зап. в нижній частині вікна зі списком. Програма не дозволить Вам ввести код виду субконто, який співпадає з наявним в списку. Натиснення Esc дозволить Вам в будь-який момент відмінити ввід нового виду субконто.

Новий вид субконто буде поміщений в списку на те місце, яке він повинен займати згідно встановленому порядку сортування.

Для знищення виду субконто виділіть потрібну відповідну стрічку і натисніть клавішу Del або кнопку Уд. в нижній частині вікна зі списком. Програма виведе запит на підтвердження необхідності знищення. Для підтвердження натисніть Enter або кнопку запиту Да, а для відмови - Esc або кнопку запиту Нет. Не слід знищувати види субконто, по яких мали місце операції в біжучому або попередніх періодах.

При коректуванні граф списку видів субконто Ви можете змінювати тільки назви видів субконто. Змінити номери видів субконто програма Вам не дозволить, так як номери використовуються при збереженні даних в журналі операцій.

Використання списку видів субконто. Заповнивши список довідників об’єктів аналітичного обліку (видів субконто), слід уважно продивитися список рахунків (пар. 3.1) і визначити яким рахункам слід присвоїти той чи інший вид субконто для ведення аналітичного обліку. Кожний вид субконто може бути закріплений за будь-якою кількістю рахунків або субрахунків.

Задавши для рахунку або субрахунку ведення аналітичного обліку, доцільно відразу ж встановити в графі "К. " списку рахунків символ "+" (якщо по даному рахунку або субрахунку також потрібно вести облік і в натуральному виразі).

Прийняття рішення про формування списку видів субконто і прикріплення видів субконто рахункам і субрахункам має дуже велике значення для зручності ведення бухгалтерського обліку. Деякі рішення тут не є очевидними і залежать від специфіки організації. Наприклад, для постачальників і покупців можна вести або один загальний вид субконто, або використовувати два різних види субконто. Якщо постачальники і покупці практично не перетинаються (одна організація ніколи не буває постачальником і покупцем), то більш прийнятним є другий варіант. Так само і для підзвітних осіб можна вести один або два види субконто, і обидва ці рішення мають свої недоліки та переваги.

Список значень субконто (об’єктів аналітичного обліку)

Списки значень субконто складаються з переліку об’єктів аналітичного обліку одного виду. Можливим є також створення багаторівневих списків.

Звертання до списків значень субконто здійснюється:

  • зі списку видів субконто при натисненні клавіші F5 або кнопку Субконто в нижній частині вікна зі списком (при цьому виводиться список для того виду субконто, який виділений підсвіткою);
  • при вводі даних в журнал операцій для проводок по тих рахунках, по яких передбачене ведення аналітичного обліку (при цьому виводиться список для виду субконто, асоційованого з відповідним рахунком або субрахунком).

Формат списку значень субконто. Список значень субконто має три графи: код, назва субконто і (в залежності від настройки списку субконто) ціна або параметр субконто, або значення вказаного Вами виразу. При бажанні ця графа може бути залишена пустою.

Графа ціна заповнюється для тих об’єктів аналітичного обліку, для яких вона має зміст (наприклад, основні засоби, матеріали). Ціна субконто використовується при формуванні суми для тих рахунків, по яких ведеться кількісний облік.

Зліва від кожного рядка виводиться значок карточки: пустий або з плюсом. Цей значок використовується для переходу до списку підпорядкованих субконто, при цьому:

  • означає, що дане субконто має підпорядковані;
  • означає, що дане субконто не має підпорядкованих.

Сортування списку. Ви можете впорядкувати список по коду субконто (натиснувши Ctrl1) або по назві субконто (натиснувши Ctrl2). Сортування списку можна здійснювати і з допомогою пункту "Сортировка" групи меню "Действия".

Перегляд списку значень субконто. Як і всі списки, Ви можете переглядати список значень субконто з допомогою клавіш переміщення курсору і лінійки прокрутки. З допомогою алфавітно-цифрових клавіш Ви можете здійснити швидкий пошук субконто по його назві (якщо список впорядкований по назві), або по номеру (якщо список впорядковано по номеру).

Крім швидкого пошуку субконто, Ви можете найти потрібне субконто по довільному рядку символів, що входять в його опис в даному списку. Пошук здійснюється з допомогою слідуючих клавіш і піктограм:

  • Ctrl F3 - задання параметрів пошуку і його виконання;
  • F3 - повтор пошуку в тому ж напрямі;
  • Shift F3- повтор пошуку вперед по списку (вправо і вниз);
  • Alt F3 - повтор пошуку назад по списку (вліво і вверх).

Вихід з перегляду. Якщо список значень субконто був викликаний зі списку видів субконто, то для закриття вікна зі списком слід натиснути Ctrl F4 або двічі клікнути мишею кнопку системного меню в лівому верхньому куті вікна зі списком.

Якщо ж список був викликаний для вибору з нього конкретного субконто, то натиснення Enter або кнопки запиту Выб. призведе до виходу з вибором вказаного субконто, а натиснення Ctrl F4 або подвійне клікання мишшю кнопки системного меню в лівому верхньому куті вікна зі списком - до виходу з відмовою від вибору. Якщо Ви хочете вибрати не одне із значень субконто, а будь-яке з підпорядкованих йому, то Вам потрібно буде двічі клікнути мишшю значок в лівій графі списку або натиснути комбінацію клавіш Ctrl. Програма виведе список підпорядкованих субконто. Вибір з підпорядкованих субконто потрібного Вам здійснюється як це описано вище. Для повернення в список субконто вищестоящого рівня натисніть комбінацію клавіш Ctrl або двічі клікніть мишшю значок на початку списку.

Коректування списку субконто. Безпосередньо після створення виду субконто відповідний список значень субконто є пустим. Для вводу в список нової стрічки натисніть клавішу Ins або кнопку Нов. в нижній частині вікна зі списком і введіть номер субконто (програма запропонує Вам перший вільний номер), його назву і, якщо це необхідно, ціну або вибраний при настройці параметр субконто. Після вводу кожного значення, довжина якого менша ширини поля, натискайте клавішу Enter або кнопку Зап. в нижній частині вікна зі списком. Програма не дозволить Вам ввести код субконто, що співпадає з уже наявним в списку. Натиснення Esc дозволить Вам в будь-який момент відмінити ввід нового субконто.

Нове субконто буде вставлене в списку на те місце, яке воно повинно займати згідно встановленого порядку сортування списку.

Для знищення субконто слід виділити рядок з цим субконто (клікнувши в будь-яке місце рядка мишшю або перемістивши в нього підсвітку і натиснути клавішу Del або кнопку Уд. в нижній частині вікна зі списком. На екран буде виведено запит на підтвердження знищення. Натисніть Enter або кнопку запиту Да для знищення запису, або кнопку Esc чи кнопку запиту Нет для відмови від знищення. Не слід знищувати субконто, по яких проводились операції в біжучому або попередніх періодах.

При коректуванні граф списку субконто Ви не зможете змінити номери субконто, ці номери використовуються для зберігання даних аналітичного обліку в журналі операцій.

При перегляді списку субконто Ви можете, натиснувши клавішу F5 або кнопку Параметры в нижній частині вікна зі списком, перейти до коректування списку параметрів біжучого субконто. При цьому список субконто і список параметрів субконто будуть зв'язані між собою: якщо Ви виділите в списку субконто інший рядок (наприклад, клікнувши на нього мишшю), то у вікні зі списком параметрів субконто з" явиться список параметрів виділеного Вами субконто.

Настройка списку субконто. Вибравши пункт "Настройка списка" групи меню "Действия" Ви можете вивести на екран запит настройки списку субконто.

В цьому запиті Ви можете вибрати один з чотирьох варіантів використання правої колонки списку субконто:

Цена - в колонці виводиться ціна субконто. При цьому для даного виду субконто Ви можете розглядати і редагувати в списку субконто ціну субконто;

Параметр - в колонці виводиться значення параметра, вказаного Вами в полі "№ параметра". При цьому для даного виду субконто Ви можете редагувати і переглядати в списку субконто вказаний параметр;

Выражение - в колонці виводиться значення виразу, вказаного в полі запиту "Выражение" (це значення не редагується);

Не заполнять - залишати праву колонку списку субконто пустою.

При використанні режиму "Выражение" в полі запиту "Выражение" Ви можете задати формулу макромови (див. Додаток 1), значення якої буде виводитися в колонці. Для посилання на біжуче субконто в формулі слід використовувати символ "$". В кінці виразу (через пробел) Ви можете використовувати вказівку на формат виводу (наприклад, Е0, Т і т. д.).

Приклад.

СКД40:&Н Е0 - дебетовий залишок на кінець періоду по рахунку 40 по біжучому субконто в натуральному виразі, який виводиться без десяткової частини (кількісний залишок товарів по даній позиції в штуках).

В запиті Ви також можете задати заголовок правої графи списку субконто і спосіб вирівнювання значень в цій графі (вліво або вправо).

Закінчивши заповнення запиту настройки списку субконто, натисніть кнопку запиту ОК.

Багаторівневі списки субконто. В "1С:Бухгалтерії" списки об’єктів аналітичного обліку можуть мати багаторівневу структуру. Кожне субконто може мати підпорядковані субконто. Наприклад, для виду субконто "Організації", яке використовується для ведення аналітичного обліку по рахунках розрахунків зі сторонніми організаціями, можна з допомогою підпорядкованих субконто враховувати договори з цими організаціями.

Для переходу до коректування списку субконто, підпорядкованих певному субконто, двічі клікніть мишшю значок в лівій графі списка або натисніть комбінацію клавіш Ctrl і програма виведе на екран список субконто, підпорядкованих даному. Для повернення в список субконто вищестоящого рівня натисніть комбінацію клавіш Ctrl або двічі клікніть мишшю значок на початку списку.

Перегляд і коректування цього списку виконується так, як це описано вище.

Параметри субконто. Як вже було сказано, "1С:Бухгалтерія" дозволяє вказувати параметри для субконто. Назви параметрів субконто єдині для всіх субконто одного виду, а значення параметрів для кожного субконто задаються індивідуально. Значення параметрів можна використовувати в формах первинних документів, в формах звітів, в формулах типових проводок. Для посилань на параметри субконто в макромові передбачені відповідні макроімена. Наприклад, для субконто виду "Організации" можна передбачити параметри, що описують повну назву організації, номер її банківського рахунку, назву і реквізити банку і т. п. Тоді Ви зможете настроїти платіжні доручення, рахунки та інші документи так, щоб після вибору організації всі потрібні реквізити в документі проставлялися автоматично.

Для визначення параметрів субконто слід при перегляді списку значень субконто підвести курсор в стрічку з потрібним субконто і натиснути клавішу F5 або кнопку Параметры в нижній частині вікна зі списком.

На екран буде виведено список параметрів для даного субконто. Список впорядковано по номерах параметрів. Максимальна довжина значення параметра - 50 символів. В графі "Дл" (довжина) Ви можете задати обмеження довжини значення параметрів субконто. Це може бути зручно, якщо Ви використовуєте даний параметр в документах і хочете, щоб він вмістився у відведене для нього місце.

Ви можете переглядати і коректувати цей список, як звичайно. При цьому слід врахувати, що номери і назви параметрів є загальними для всіх субконто одного виду і при коректуванні назви параметра субконто або максимальної довжини його значення ці характеристики встановлюються відразу для всіх субконто даного виду.

Бажано встановлювати тільки ті параметри субконто, які Ви будете використовувати в звітах, типових проводках або первинних документах, які виводяться на друк.

Задання констант

При формуванні звітів (наприклад, балансу) більшість показників розраховуються на основі введених даних про господарські операції. Але в звіти необхідно включати також дані, які не можна отримати з інформації, що зберігається в журналі операцій. Такими даними є, наприклад, назва підприємства, прізвища керівників та головного бухгалтера, вид основної діяльності і т. п. В "1С:Бухгалтерії" ці дані необхідно занести в список констант.

Для перегляду і коректування списку констант виберіть пункт "Константи" з групи "Операції" головного меню. На екран буде виведено список констант.

Список впорядковано по номерах констант (ці номери не можуть повторюватися). Ви можете переглядати і коректувати список констант як звичайно, однак, програма не дозволить Вам знищити перші вісім констант списку або змінити в них назву чи номер (в них можна міняти тільки графу "Значення"). Значення констант, які відображають початок та кінець періоду, заносяться в список автоматично.

Значення констант можуть використовуватися і встановлюватися в звітах, проводках типових операцій і в формах первинних документів. підпорядкованих субконто Посилання на константи має вигляд [Кномер-константи]. Наприклад, якщо в текст форми звіту включити стрічку [К101], то в виведеному звіті на цьому місці буде значення константи з номером 101.

Настройка принтера

Перед тим, як друкувати текст, необхідно встановити режим роботи принтера: вибрати шрифт, задати міжрядковий проміжок і т. д. "1С:Бухгалтерія:Проф. " дозволяє настроювати принтер наступним чином:

  • в запиті "Параметри" можна встановити кількість стрічок і символів на друкованій сторінці, а також задати режим друку сторінками;
  • при виборі пункту "Принтер" в запиті "Параметри" Ви можете встановити ініціалізуючу стрічку для принтера.

Запит "Параметри" виводиться при виборі пункту "Встановлення параметрів" з групи "Сервіс" головного меню, а також при натисненні Alt F10 в багатьох режимах програми.

Призначення цих параметрів наступне:

  • якщо довжина друкованого документу (наприклад, звіту) перевищує задану кількість стрічок на сторінці, документ розбивається на сторінки з вказаною кількістю стрічок;
  • якщо ширина друкованого документу (наприклад, звіту) перевищує задану кількість символів, документ друкується полосами, причому ширина кожної з них не перевищує заданої кількості символів в стрічці (віддруковані сторінки Ви повинні будете склеїти);
  • параметр "Принтер" дозволяє вибрати ініціалізуючу стрічку принтера (див. нижче). Ініціалізуюча стрічка посилається на принтер перед кожним виводом документу на друк;
  • якщо включений режим "Постраничная печать", то перед друком кожної сторінки буде зроблено паузу;
  • якщо включений режим "В файл", то програма буде виводити друковані документи в файл. В цьому файлі будуть нагромаджуватися один за другим друковані документи. Ім'я файлу слід задати справа від напису "В файл";
  • якщо включений режим "На принтер", то програма буде виводити друковані документи на принтер;
  • якщо включений режим "Без рамок", то програма при формуванні друкованих документів заміняє псевдографічні символи на звичайні. Це знижує наглядність документів, але дозволяє значно пришвидшити друк на деяких матричних принтерах.

Ви можете, встановивши відповідні режими, виводити сформовані документи одночасно і на принтер, і в файл.

Встановлення параметрів. Для зміни параметрів "Кількість стрічок на сторінці" і "Кількість символів в стрічці" підведіть курсор у відповідне поле запиту, натисніть Enter, введіть нове значення і, якщо введене значення не повністю заповнює поле запиту, знову натисніть Enter. Для зміни параметрів "Постраничная печать", "В файл", "На принтер" і "Без рамок" встановіть курсор між дужками зліва від назви параметра і натисніть Enter. При цьому для включення параметра "В файл" необхідно попередньо вказати ім’я файлу справа від напису "В файл".

Для встановлення ініціалізуючої стрічки для принтера підведіть курсор до напису "Принтер" і натисніть Enter. На екрані буде виведено запит зі списком назв принтерів і послідовностями кодів їх настройки.

В списку наведені назви принтерів і управляючі послідовності їх настройки (останні задаються набором не більше ніж 12 десятинних кодів). Список впорядковано по назвах принтерів. Текучий принтер відмічено зірочкою в крайній лівій графі. Для переміщення по спискові Ви можете використовувати клавіши ç, è, é, ê, Home, End. Для повернення в запит "Параметри" натисніть Esc.

Для вибору ініціалізуючої послідовності з вже наявних підведіть курсор в крайню ліву графу потрібної стрічки і натисніть Enter (вибрана стрічка буде відмічена зірочкою). Далі можна натиснути Esc для повернення в запит "Параметри".

Список в запиті "Настройка принтера" можна коректувати так, як звичайно: клавіша Ins дозволить ввести нову стрічку в список, Del - знищити біжучу стрічку списка. Для коректування поля в стрічці виділіть його курсором і натисніть Enter.

Якщо в списку немає потрібного (або сумісного з ним) принтера, слід звернутися до інструкції до принтера і, підібравши відповідні коди, внести їх до списку.

Для 9-голкових Epson-сумісних матричних принтерів найбільш часто використовуються наступні управляючі послідовності (їх можна суміщати одну з другою):

установка шрифту Elite (12 символів на дюйм);

установка шрифту Condensed (16.67 символів на дюйм);