- •1. Компіляція і виконання програм в середовищі Windows
- •Void main(void) {
- •Void main(void) {
- •Void main
- •3. Виведення повідомлень на екран
- •Void main(void)
- •4. Програми зберігають інформацію в змінних
- •Void main(void)
- •Int test_score;
- •Int student_age, test_score, grade;
- •Void main(void)
- •Void main(void)
- •5. Виконання простих операцій
- •Void main(void)
- •6. Введення даних з клавіатури
- •Void main(void)
- •Int first, second; // Числа, введені з клавіатури
- •Void main(void)
- •7. Програма Приймає рішення
- •If (умова виконується)
- •Void main(void)
- •Void main(void)
- •Void main(void)
- •Int test_score;
- •8. Повторення одного або декількох операторів
- •Void main(void)
- •9. Функції
- •Void show_message(void)
- •Void main(void)
- •Void show_number(int value)
- •Void main(void)
- •Void show_big_and_little(int а, int b, int c)
- •Void main(void)
- •Void show_employee(int age, float salary)
- •Void main(void)
- •10. Прототипи функцій
- •Void main(void)
- •11. Зміна значень параметрів
- •Void cbange_values(int *a, int *b)
- •Void main(void)
- •12.Локальні змінні і ділянка видимості
- •Void some_function(void)
- •Int count;
- •Void sound_beeps(int beeps)
- •Void main(void)
- •13.Глобальні змінні
- •Void main(void)
- •Void first_change(void)
- •Void second_change(void)
- •Void main(void)
- •Void show_numbers(int number)
- •Void main(void)
- •14. Перезавантаження функцій
- •Int add_values(int а, int b)
- •Int add_values(int а, int b, int с)
- •Void main(void)
- •Void main(void)
- •Використовування посилань як параметРів
- •Void change_value(int &alias)
- •Void main(void)
- •Int number;
- •Void change_value(int &alias)
- •16. Зберігання значень в масивах
- •Int test_scores[100];
- •Int employee_age[100];
- •Void main(void)
- •Void main(void)
- •17. Передача масивів у функції
- •Void some_function(int array[], int number_of_elements);
- •Void show_array(int array[ ], int number_of_elements)
- •Void main(void)
- •18. Символьні рядки
- •Void main(void)
- •Int index;
- •19. Передача рядків у функції
- •Void show_string(char string[ ])
- •Void main (void)
- •Void show_string(char string[ ])
- •20. Зберігання зв'язаної інформації в структурах
- •Int office_number;
- •21. Структури і функції
- •Int office_number;
- •Void show_employee(employee worker)
- •Void main(void)
- •Void show_employee(void)
- •23. Визначення методів класу зовні класу
- •Void show_employee(void);
- •Void employee::show_employee(void);
- •Void main(void)
- •24. Конструктор
- •Void show_employee(void);
- •Int change_salary(float);
- •25. ДеструКтор
- •Void show_employee(void);
- •Int change_salary (float);
- •Void employee :: show_employee(void)
- •Void main(void)
- •26. Спадковість
- •Void show_employee (void);
- •Int stock_options;
- •Void show_manager(void);
- •Int stock_options;
- •Void main(void)
- •27. Множинна Спадковість
- •Void main(void)
- •Int processor, int speed, int ram) :
- •Int processor, int speed, int ram);
- •Void show_work_station(void);
- •Int processor, int speed, int ram) :
- •28. Приватні елементи і друзі
- •Void show_book(void);
- •Void main(void)
- •29. Використовування шаблонів функцій
- •Void main(void)
- •Void main(void)
- •30. Використовування шаблонів класів
- •Void main(void)
- •Void main(void)
- •Values.Show_array( );
- •Void main(void)
- •Void main(void)
- •Int size;
- •Void main(void)
- •Очищення пам'яті, якщо вона більше не потрібна
- •Void main(void)
- •Void main(void)
- •32. Керування вільною пам'яттю
- •Void end_program(void)
- •Void end_program(void)
- •Void main(void)
- •Створення власних операторів new і delete
- •Void main(void)
- •Void main(void)
- •33.Додаткові можливості cin і cout
- •Файл iostream.H
- •Використовування cout
- •Void main (void)
- •Void main(void)
- •Використовування символу-заповнювача
- •Void main(void)
- •Керування виведенням чисел з плаваючою крапкою
- •Void main(void)
- •Виведення і введення одного символу за один раз
- •Void main(void)
- •Void main(void)
- •Введення з клавіатури по одному символу за один раз
- •Void main(void)
- •Читання з клавіатури цілого рядка
- •Void main(void)
- •Void main(void)
- •Void main(void)
- •Читання з вхідного файлового потоку
- •Ifstream input_file("filename.Ext");
- •Void main(void)
- •Ifstream input_file("bookinfo.Dat");
- •Читання цілого рядка файлового введення
- •Void main(void)
- •Визначення кінця файлу
- •Void main(void)
- •Void main(void)
- •Void main(void)
- •Перевірка помилок при виконанні файлових операцій
- •Void main(void)
- •Закриття файлу, якщо він більше не потрібен
- •Керування відкриттям файлу
- •Ifstream output_file("filename.Ext", ios::app);
- •Ifstream output_file("filename.Ext", ios::out | ios::noreplace); виконання операцій читання і запису
- •Input_file.Read(buffer, sizeof(buffer));
- •Void main(void)
- •Void main(void)
- •Ifstream emp_file("employee.Dat");
- •35. Вбудовані функції і асемблерні коди
- •Void show_message(int count, char *message)
- •Void main(void)
- •Void main(void)
- •Використовування ключового слова inline
- •Inline int max(int а, int b)
- •Inline int min(int а, int b)
- •Void main(void)
- •Вбудовані функції і класи
- •Void show_employee(void)
- •Inline void employee::show_employee(void)
- •Використовування операторів мови асемблера
- •Void main(void)
- •36. Використання аргументів командного рядка
- •Void main(int argc, char *argv[])
- •Void main(int argc, char *argv[])
- •Void main(int argc, char *argv[])
- •Void main(int argc, char *argv[]) виконання циклу до тих пір поки argv he містить null
- •Void main(int argc, char *argv[])
- •Трактування argv як Вказівника
- •Void main(int argc, char **argv)
- •Void main(int argc, char **argv)
- •Аргументи командного рядка
- •Доступ до змінних середовища операційної системи
- •Void main(int argc, char *argv[], char *env[])
- •Void main(int argc, char *argv[], char *env[])
- •37. Використовування констант і макрокоманд
- •Використовування іменованих констант
- •Void main(void)
- •Void main(void)
- •Використовування іменованих констант для спрощення зміни тексту програми
- •Void main(void)
- •Int test_scores[50];
- •Int student;
- •Void main(void)
- •Int test_scores[class_size];
- •Int student;
- •Заміна виразів макрокомандами
- •Void main(void)
- •Void main(void)
- •Чим відрізняються макрокоманди від функцій ?
- •Використовування макрокоманд надає велику гнучкість програмам
- •Void main(void)
- •38. Поліморфізм
- •Void main(void)
- •Int amount;
- •Int amount;
- •Void main(void)
- •Int amount;
- •Void main(void)
- •Література
Ifstream output_file("filename.Ext", ios::out | ios::noreplace); виконання операцій читання і запису
Всі програми, представлені в даному розділі, виконували файлові операції над символьними рядками. В міру ускладнення програм, можливо, вам знадобиться читати і записувати масиви і структури. Для цього програми можуть використовувати функції read і write. При використовуванні функцій read і write ви повинні вказати буфер даних, в який дані читатимуться або з якого вони записуватимуться, а також довжину буфера, в байтах, як показано нижче:
Input_file.Read(buffer, sizeof(buffer));
output_file.write(buffer, sizeof(buffer));
Наступна програма STRU_OUT.CPP використовує функцію write для виведення вмісту структури у файл EMPLOYEE.DAT:
Void main(void)
{
struct employee {
char name[64];
int age;
float salary;
} worker = { "Джон Дой", 33, 25000.0 };
ofstream emp_flie("EMPLOYEE.DAT");
emp_file.write((char *) &worker, sizeof(employee));
}
Функція write звичайно одержує вказівник на символьний рядок. Символи (char *) є оператор приведення типів, який інформує компілятор, що ви передаєте вказівник на інший тип. Так само наступна програма STRU_IN.CPP використовує метод read для читання з файлу інформації про службовця:
Void main(void)
{
struct employee {
char name [64];
int age;
float salary;
} worker = { "Джон Дой", 33, 25000.0 };
Ifstream emp_file("employee.Dat");
emp_file.read((char *) &worker, sizeof(employee));
cout << worker.name << endl;
cout << worker.age << endl;
cout << worker.salary << endl;
}
35. Вбудовані функції і асемблерні коди
Якщо в програмі описується функція, то компілятор C++ переводить код функції в машинну мову, зберігаючи тільки одну копію інструкцій функції всередині програми. Кожного разу, коли програма викликає функцію, компілятор C++ розміщує в програму спеціальні інструкції, які заносять параметри функції в стек і потім виконують перехід до інструкцій цієї функції. Коли оператори функції завершуються, виконання програми продовжується з першого оператора, який слідує за викликом функції. Занесення аргументів в стек, перехід у функцію і вихід з неї вимагає часу, через це програма виконується трохи повільніше, ніж якби ті ж оператори були прописані просто всередині програми. Наприклад наступна програма CALLBEEP.CPP викликає функцію show_message, яка задане число раз видає сигнал на динамік комп'ютера і потім виводить повідомлення на дисплей:
Void show_message(int count, char *message)
{
int i;
for (i = 0; i < count; i++)
cout << '\a';
cout << message << endl;
}
Void main(void)
{
show_message(3, "Вчимося програмувати на C++");
show_message(2, "Розділ 35");
}
Наступна програма NO_CALL.CPP не викликає функцію show_message. Натомість програма містить необхідні оператори всередині:
_
Void main(void)
{
int i;
for (i = 0; i < 3; i++)
cout << '\a';
cout << " Вчимося програмувати на C++" << endl;
for (i = 0; i < 2; i++)
cout << '\a';
cout << "урок 35" << endl;
}
Обидві програми виконують одне і те ж. Оскільки програма NO_CALL не викликає функцію show_message, вона виконується трохи швидше, ніж програма CALLBEEP. В цьому випадку різницю в часі виконання визначити неможливо, але, якщо функція викликатиметься 1000 разів, ви, ймовірно, помітите невелике збільшення продуктивності. Проте програма NO_CALL більш заплутана і важча для сприйняття, ніж її двійник CALLBEEP, що написана з використанням функції. Для написання невеликих програм переважно використовують функції. Проте, якщо створювати програму, для якої продуктивність має першорядне значення, то в ній слід зменшувати кількість викликів функцій. Один із способів зменшення кількості викликів функцій полягає в тому, щоб прописати відповідні оператори просто в програму, як було зроблено в NO_CALL. Проте, як видно, що безпосередня заміна операторами навіть однієї функції, вносить значну плутанину в програму.
