- •1. Кроки для створення виконання програми
- •2. Змінні та константи
- •3. Символьні масиви і рядки
- •4. Директиви препроцесора
- •Тема 2: введення-виведення даних план
- •Аргументи для setiosflags і resetiosflags
- •2. Функція printf
- •2. Операції відношення
- •3. Логічні операції
- •4. Додаткові операції
- •5. Порозрядні операції
- •Тема 4: організація циклів план
- •1. Організація циклів за допомогою while і do...While
- •2. Організація циклів із використанням оператора for
- •3. Оператори switch і goto
- •Тема 5: створення функцій план
- •1. Створення функцій
- •2. Видимість змінних
- •3. Передача значень
- •4. Повертаємі значення і прототипи функцій
- •Тема 6: зовнішні пристрої і символьне введення/виведення план
- •1. Загальна концепція
- •2. Функції символьного введення-виведення
- •3. Символьні функції
- •4. Рядкові функції
- •5. Числові функції
- •6. Функції роботи з датою та часом
- •Тема 7: масиви план
- •1. Одномірні масиви, їхня ініціалізація
- •2. Сортування масивів
- •3. Розміщення одномірного масиву в пам’яті
- •4. Багатомірні масиви і їхнє розміщення в пам’яті
- •Тема 8. Вказівки і посилання план
- •1. Вказівки
- •2. Масиви і вказівки
- •Тема 9: робота з файлами план
- •1. Загальна характеристика роботи з файлами
- •2. Послідовні файли
- •Можливі режими доступу
- •3. Файли довільного доступу (із випадковим доступом)
- •Тема 10. Структури план
- •1. Загальна характеристика структури
- •2. Масиви структур
- •3. Використання масивів, як елементів структур
- •2. Робота зі структурами є універсальною, передбачено додавання записів до файлу (флаг ios:app). Для підрахунку кількості структур на диску приведемо наступні рядки програми:
- •Список літератури
3. Символьні масиви і рядки
Строкових змінних у C++ немає, для цього використовуються масиви символів (символьні масиви).
Припустимо необхідно зберегти ім’я людини, вік, зарплату. З віком і зарплатою проблем немає:
int age;
float salary;
Змінної строкової немає, але можна створити масив символів:
char name[15];
У пам’яті резервується місце під масив символів.
Під час оголошення нашого масиву можна привласнити значення.
char name[6] = “Маша”;
У пам’яті ЕОМ:
[0] |
М |
[1] |
а |
[2] |
Ш |
[3] |
А |
[4] |
\0 |
Можна одержати доступ до визначеного елемента масиву:
name[0] = ’П’
У пам’яті ЕОМ:
[0] |
П |
[1] |
А |
[2] |
Ш |
[3] |
А |
[4] |
\0 |
При виведенні результату можна зазначити тільки ім’я рядку:
cout<<name; //Результат: Паша
Можна оголосити масив символів так:
char cc[] = {’a’, ’b’, ’c’};
Цей масив не може бути рядком, просто він містить три різних символи.
char bb = cc[1]; // Змінній bb привласнено
// значення ’b’
cout<<сс;
ПОМИЛКА! Наприкінці ланцюжка символів немає ASCII-нуля, виведення выдбуватиметься доти, поки не зустрінеться ’\0’. Тому може виводитися дуже довгий рядок.
Програма помилкова.
void main()
{
char name[20];
name = “ Петя ”; //Не можна імені масиву
//привласнити значення, що
//можливо тільки при
//оголошенні.
}
Для ініціалізації масиву існує 5 основних засобів. 3 з них ініціалізуються під час оголошення.
#include <iostream.h>
#include <string.h>
void main()
{
// 1-ий засіб
char f1[] = “Привіт”;
// 2-ий засіб
char f2[7] = “Привіт”;
// 3-ій засіб
char f3[] = {’П’,’р’,’и’,’в’,’і’,’т’,’\0’};
// 4-ий засіб
char f4[7];
//використання бібліотечної функції
strcpy(f4, “Привіт”);
// 5-ий засіб
char f5[7];
f5[1]= ’П’;
f5[2]= ’р’;
f5[3]= ’и’;
f5[4]= ’в’;
f5[5]= ’і’;
f5[6]= ’т’;
f5[7]= ’/0’;
}
4. Директиви препроцесора
Директиви препроцесора - команди для препроцесора. Вони не є командами С++. Починаються зі знаку #, наприкінці “ ; ” не ставиться Директиви препроцесора використовуються до компіляції програми.
Приклад:
#include <iostream.h>
#define age 28
#define massage “Привіт! ”
Директива #include використовує 2 формати:
#include <файл>
#include “файл”
Кутові дужки вказують препроцесору шукати файл, який включається у зазначених каталогах (у нашому випадку в зазначеному каталозі IDE). Звичайно це каталог INCLUDE. Якщо зазначені (“ ”), то пошук файла здійснюється в каталозі, де знаходиться вихідний текст, а потім, якщо він не буде знайдений, то в тих же каталогах, що й у випадку з кутовими дужками.
Препроцесор цілком вставляє текст зазначеного файла замість директиви #include.
Директива #include частіше усього використовується для включення заголовних файлів, (h-файли). У цих файлах описується, як інтерпретувати бібліотечні функції, використовувані в програмі. Наприклад: iostream. h - містить необхідну для компілятора інформацію про бібліотечні оператори потокового введення-виведення cout, cin, а також про інші бібліотечні функції, що забезпечують введення - виведення.
Директива #define - призначення: знайти і замінити, наприклад:
#define DD 28
По всьому тексті перед компіляцією препроцесор змінює х1 на b+c.
Приклад:
#include <iostream.h>
#define x1 (b+c)
#define x2 (x1+x1)
void main()
{
int b=2;
int c= 3;
int e = x2; //b+c+b+c
cout <<e; //10
}
Щоб не плутати аргументи #define із змінними у програмі, їх виділяють заголовними буквами. В основному #define використовується для визначення констант. Альтернативно, оголошення констант може відбуватися так:
сonst float c=10.2;
const char d = ’A’;
Ці константи видимі тільки усередині блоку { }.
Таким чином, директива #define є чудовим засобом для визначення цифрових і строкових констант.