БОЛЬШАЯ НАУЧНАЯ БИБЛИОТЕКА  
рефераты
Добро пожаловать на сайт Большой Научной Библиотеки! рефераты
рефераты
Меню
Главная
Банковское дело
Биржевое дело
Ветеринария
Военная кафедра
Геология
Государственно-правовые
Деньги и кредит
Естествознание
Исторические личности
Маркетинг реклама и торговля
Международные отношения
Международные экономические
Муниципальное право
Нотариат
Педагогика
Политология
Предпринимательство
Психология
Радиоэлектроника
Реклама
Риторика
Социология
Статистика
Страхование
Строительство
Схемотехника
Таможенная система
Физика
Философия
Финансы
Химия
Хозяйственное право
Цифровые устройства
Экологическое право
Экономико-математическое моделирование
Экономическая география
Экономическая теория
Сельское хозяйство
Социальная работа
Сочинения по литературе и русскому языку
Товароведение
Транспорт
Химия
Экология и охрана природы
Экономика и экономическая теория

Дипломная работа: Мова програмування С++

Дипломная работа: Мова програмування С++

Дипломна робота

Мова програмування С++


Зміст

1. Створення простих програм на С++

1.1 Структура програми

1.2 Етапи виконання програми

1.3 Порядок запуску програми

2. Форматний ввід/вивід у мові С/С++

2.1 Функції вводу/виводу мови С

2.2 Функції вводу/виводу та маніпулятори мови С++

3. Лінійні програми на С++

3.1 Стандартні типи даних мови С++

3.2. Операції мови С++

4. Основні оператори мови С++

4.1 Складові оператори

4.2 Оператори розгалуження

4.3 Оператори циклу

4.4 Оператори переходу

5. Вказівними та операції над ними

5.1 Поняття вказівника

5.2 Дії над вказівниками

6. Робота з одновимірними масивами

6.1 Статичні та динамічні масиви

6.2 Рядки, як одновимірні масиви

7. Двовимірні масиви

8. Символьна інформація та рядки

8.1 Збереження символьної інформації

8.2 Функції вводу/виводу для роботи з рядками

8.3 Спеціальні функції для роботи з рядками та символами

9. Функції користувача

9.1 Функції: визначення, опис, виклик

9.2 Передача масивів у функцію

9.3 Перевантаження функцій у С++

9.4 Функції зі змінною кількістю параметрів

10. Структури

Список літератури


1. Створення простих програм на С++

C++ (Сі-плюс-плюс) — універсальна мова програмування високого рівня з підтримкою декількох парадигм програмування: об'єктно-орієнтованої, узагальненої та процедурної. Розроблена Б'ярном Страуструпом (англ. Bjarne Stroustrup) в AT&T Bell Laboratories (Мюррей-Хілл, Нью-Джерсі) у 1979 році та названа «Сі з класами». Страуструп перейменував мову у C++ у 1983 р. Базується на мові Сі. Визначена стандартом ISO/IEC 14882:2003.

1.1 СТРУКТУРА ПРОГРАМИ

Розглянемо програму, що виводить на екран монітора фразу “Ласкаво просимо до С++!”:

Приклад 1.

// Welcome.cpp – ім’я файла з програмою

# include <iostream.h>

void main ()

{ cout << ” Ласкаво просимо до С++! \ n”;

}

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

Ласкаво просимо до С++!

У першому рядку програми міститься однорядковий коментар, що починається з символу “//”, який вказує, що після цього символу йде однорядковий коментар. Коментарі не викликають ніяких дій комп’ютера і ігноруються компілятором С++, а лише допомагають іншим людям читати і зрозуміти Вашу програму.

У другому рядку розміщено команду (директиву) препроцесору, що забезпечує включення до програми засобів зв’язку зі стандартними потоками вводу і виводу даних. Вказані засоби містяться у файлі під назвою iostream.h (мнемоніка: “і” (input) – ввід; “output” – вивід; “stream” – потік; “head” - заголовний). Рядок, що починається з ”#”, обробляється препроцесором перед компіляцією програми. Файл iostream.h повинен бути залучений для всіх програм, що виводять дан на екран монітора або вводять дані з клавіатури.

Третій рядок є заголовком функції з іменем main. Будь-яка програма на С++ повинна містити лише одну функцію з таким менем. Саме з неї починається виконання програми. void – специфікатор типу, який вказує, що функція main в даному прикладі не повертає ніякого значення. Круглі дужки після main потрібні в зв’язку з форматом (синтаксисом) заголовка будь-якої функції. В них розміщується список параметрів. У нашому прикладі параметри не потрібні.

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

Рядок

cout << ” Ласкаво просимо до С++! \ n”;

є командою комп’ютеру надрукувати на екрані рядок символів, що записаний у лапках. Повний рядок, включаючи cout, операцію <<”, рядок ”Ласкаво просимо до С++! \ n” і крапку з комою “;”, називається оператором. Всі вводи і виводи в С++ виконуються над потоками символів. Таким чином потік символів Ласкаво просимо до С++! спрямовується до об’єкта стандартного потоку виводу cout, який пов’язаний з екраном. Вже зараз слід відмітити одну з принципових особливостей мови С++, яку називають перевантаженням або розширенням дії стандартних операцій. Операція ”<<” називається операцією „розмістити у потік” лишень у тому випадку, коли зліва від неї знаходиться ім’я об’єкта cout. Інакше пара символів “<<” означає бінарну операцію зсуву вліво. Символи правого операнда зазвичай виводяться так само, як вони виглядають між лапками.

Слід зазначити, що символи ”\n не виводяться на екран. Комбінацію символів, що починаються з позначки оберненого Стеша (”\”), називають знаком переходу або escape-символом. Керуюча послідовність \n” означає перехід на початок нового рядка. Цей символ в лапках може знаходитися будь-де в рядку, при цьому послідовність символів, що знаходиться за ним, виводитиметься з нового рядка. Тобто результат виконання операції

cout << ” Ласкаво просимо \nдо С++! \ n”;

матиме вигляд:

Ласкаво просимо

до С++!

1.2 ЕТАПИ ВИКОНАННЯ ПРОГРАМИ

Вихідна програма, підготовлена на мов С++ у вигляді текстового файла з розширенням *.срр (welcome.cpp), проходить 3 етапи обробки:

1)   препроцесорне перетворення тексту програми;

2)   компіляція;

3)   компоновка (редагування зв¢язків чи складання).

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

Задачею препроцесора є перетворення (доповнення) тексту програми до початку її компіляції. Правила препроцесорної обробки визначаються програмістом за допомогою директив препроцесора. Директива починається з ”#” (¢дієс¢, ¢шарп¢). Наприклад,

1) #define - визначає правила заміни в тексті:

#define ZERO 0.0

Це означає, що кожне використання у програм мені ZERO буде замінюватися на 0.0.

2) #include< ім¢я заголовного файла > - передбачена для залучення до тексту програми тексту файлу з каталогу “Заголовних файлів” INCLUDE, які постачаються разом зі стандартними бібліотеками. Кожна бібліотечна функція чи об¢єкт С++ має відповідний опис в одному з заголовних файлів (наприклад, iostream.h, stdio.h, conio.h, math.h). Список заголовних файлів визначається стандартом мови. Використання директиви include не під¢єднує відповідну стандартну бібліотеку, а лише дозволяє долучити до тексту програми описи із зазначеного заголовного файлу. В нашому випадку препроцесор обробляє директиву #include <iostream.h> під’єднує до вихідного тексту програми засоби для обміну з дисплеєм. Далі файл передається на компіляцію, у ньому виявляються синтаксичні помилки, які потрібно усунути програмістові. Після безпомилкової компіляції текст програми перекладається компілятором на машинну мову, далі отримуємо об’єктний файл з розширенням *.obj. Підключення об¢єктних кодів файлів з визначеннями необхідних стандартних функцій і об¢єктів з бібліотеки відбувається на етапі компоновки, тобто після компіляції. У об¢єктному коді створюваної програми ніби замуровуються дірки за допомогою кодів стандартних функцій. Хоча в заголовних файлах містяться всі описи стандартних функцій, до коду програми залучаються лише функції й об¢єкти, які використовуються в програмі.

Після компоновки утворюється модуль програми з розширенням *.ехе.

Отже, в нашому випадку, виконавши директиви, препроцесор сформує повний текст програми, компілятор створить об’єктний файл welcome.obj, за замовчуванням обравши для нього зазначене ім’я, а компоновщик (редактор зв’язків Linker) доповить програму бібліотечними функціями, наприклад, для роботи з об’єктом cout і побудує модуль welcome.exe, запустивши, який ми одержуємо на екрані бажану фразу. Схема етапів виконання програми наведена на рис. 1.1.

1.3 ПОРЯДОК ЗАПУСКУ ПРОГРАМИ

1.         Відкрийте нове вікно редагування (File > New) надайте йому ім’я Welcome (File > Save As);

2.         У новому вікні наберіть текст програми, що наводиться у Прикладі 1.

3.         Відкомпілюйте програму (Compile > Compile або (Alt+F9)). В разі повідомлень про помилку, перевірте текст програми усуньте невідповідності. Щоразу, вносячи зміни у вихідний текст програми, зберігайте файл (File > Save або F2). Після чого змінену програму слід відкомпілювати;

4.         Запуск відкомпільованої програми здійснюється за командою (Run > Run або Ctrl+F9). Якщо з моменту останньої компіляції вихідний код було модифіковано, ця команда виконає послідовно компіляцію і компоновку. Результат виконання програми можна переглянути, натиснувши комбінацію клавіш Alt+F5.


2. Форматний ввід/вивід у мові С/С++

2.1 ФУНКЦІЇ ВВОДУ/ВИВОДУ МОВИ С

У мові С++ немає вбудованих засобів вводу/виводу – вони здійснюються за допомогою функцій, типів та об’єктів, що містяться у стандартних бібліотеках. Використовується два способи: функції, успадковані з мови С та об’єкти С++.

Основні функції вводу/виводу в стил С, опис яких міститься у заголовному файлі <stdio.h>:

рrintf (<керуючий рядок>, <список аргументів>);

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

Специфікація перетворення має такий вигляд:

% <прапор> <розмір поля . точність> специфікація,

де прапор може набувати наступних значень:

- вирівнювання вліво числа, що виводиться (за замовчуванням виконується вирівнювання вправо);

+ виводиться знак додатного числа;

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

точність задає точність числа, тобто кількість цифр його дробової частини;

специфікація вказує на вигляд інформації, що виводиться. У таблиці 2.1 наведено основні формати функції друку.

Таблиця 2.1

Формат Тип інформації, що виводиться
%d десяткове ціле число
% і для виведення цілих чисел зі знаком (printf (“a=%i”, -3));
%u для виводу беззнакових цілих чисел (printf(“s=%u”, s))
%c один символ
%s рядок символів
%e число з плаваючою крапкою (експоненційний запис)
%f число з плаваючою крапкою (десятковий запис) (printf(“b=%f\n, c=%f\n, d=%f\n”, 3.55, 82.2, 0.555 ));
%u десяткове число без знака

Керуючий рядок може містити наступні керуючі символи:

\n – перехід на новий рядок;

\t – горизонтальна і \v – вертикальна табуляція;

\b – повернення назад на один символ;

\r – повернення на початок рядка;

\a – звуковий сигнал;

\” –лапки;

\? – знак питання;

\\ - зворотний слеш.

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

Приклад 1.

#include <stdio.h>

#define PI 3.1415926

void main()

{

int number=5, cost=11000, s=-777;

float bat=255, x=12.345;

printf ("%d студентів з¢їло %f бутербродів.\n", number, bat);

printf ("Значення числа pi рівне%f.\n", pi);

printf ("Вартість цієї машини %d%s\n", cost,"у.е");

printf ("x=%-8.4f s=%5d%8.2f ", x, s, x);

}

В результаті виконання останньої функц printf() на екрані буде виведено:

х=12.3450 s= -777 12.34

Функція scanf передбачена для форматного вводу інформації довільного вигляду. Загальний вигляд функції:

scanf (<керуючий рядок>, < список адрес>);

На відміну від функції виводу printf(), scanf() використовує у списку адреси змінних, для одержання яких перед іменем змінної ставиться символ ”&”, що позначає унарну операцію одержання адреси. Для вводу значень рядкових змінних символ ”&” не використовується. При використанні формату %s рядок вводиться до першого пропуску. Вводити дані можна як в одному рядку через пропуск, так і в різних рядках.

Дану особливість ілюструє відповідна частина програми:

int course;

float grant;

char name[20];

printf ( "Вкажіть ваш курс, стипендію, м¢я \n");

scanf ( "%d%f", &course, &grant);

scanf ( "%s", name); /* ”& відсутній при зазначенні масиву символів */

Для зміни кольору тексту використовують функції із файла <conio.h>: clrscr() – очищує екран; textcolor(Колір) задає колір символів; textbackground (Колір) – встановлює колір фону. Вивід тексту на екран здійснюється за допомогою функції cprintf(), яка використовується аналогічно printf(). Зверніть увагу на те, що перехід на початок нового рядка у цій функції здійснюється за допомогою комбінації ”\n\r”.

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


Таблиця 2.2

Колір

Константа

Значення константи

Чорний BLACK 0
Синій BLUE 1
Зелений GREEN 2
Червоний RED 4
Фіолетовий MAGENTA 5
Сірий GREY 8
Блакитний LIGHTBLUE 9
Помаранчевий LIGHTRED 12
Жовтий YELLOW 14
Білий WHITE 15

2.2 ФУНКЦІЇ ВВОДУ/ВИВОДУ ТА МАНІПУЛЯТОРИ МОВИ С++

А ось як виглядає програма вводу/виводу з використанням бібліотеки класів С++:

Приклад 2.

# include <iostream.h>

void main()

{ int i;

cout<< “Введіть ціле число\n”;

//об’єкт для вводу з клавіатури і >>розміщення у потік виводу

cin>> i;

cout<< “Ви ввели число”<< i <<”дякую!”;

}

Для форматного виводу у С++ використовуються маніпулятори, для використання яких до програми потрібно підключити заголовний файл <iomanip.h>:

setw(int) – встановлює максимальну ширину поля виводу чисел та рядків (не символів);

setprecision(int) – встановлює максимальну кількість цифр дробової частини для дійсних чисел з фіксованою крапкою;

setiosflags(ios::showpoint | ios::fixed) – вивід дійсних чисел з фіксованою крапкою;

setiosflags(ios::left) або setiosflags(ios::right) – вирівнювання по лівому або правому полю;

endl – при виводі включає у потік символ нового рядка, еквівалентний “\n” (його опис міститься у файлі iostream.h).

Маніпулятори спрямовуються в потік виводу, аналогічно тому, як це зроблено у прикладі 3:

Приклад 3.

# include<iostream.h>

#include <iomanip.h>

void main()

Результат виводу (ˆ позначає пробіл):

ˆˆˆˆˆˆ52.287

ˆˆˆˆˆ410.000

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


3. Лінійні програми на С++

3.1 СТАНДАРТНІ ТИПИ ДАНИХ МОВИ С++

Всі об¢єкти (змінні, масиви тощо), з якими працює програма в С/С++, необхідно визначати або описувати. Найпростіша форма визначення змінної:

<тип> <список імен змінних>;

При оголошенні об¢єкти можна ініціалізувати (задавати початкове значення).

Наприклад: int j=10, m(3), n;

float c(-1.3), l=-10.23, f1;

Оголошення повідомляють компілятору про властивості та імена об¢єктів і функцій. Змінні можуть змінювати свої значення. При наданні значення змінній у комірці пам¢яті, яка відводиться під неї, розміщується код цього значення. Доступ до значення цієї змінної можливий через ім¢я змінної, а доступ до ділянки пам¢яті здійснюється за адресою. Розмір ділянки пам¢яті, що відводиться змінній, визначається її типом. Перелік базових типів даних наведено у таблиці 3.1.

Таблиця 3.1

Тип даних Назва Розмір, біт Діапазон значень
unsigned char Беззнаковий цілий довжиною не менше 8 біт 8 0 . . 255
сhar Цілий довжиною не менше 8 біт 8 -128 . . 127
unsigned int Без знаковий цілий 16 0 . . 65535
short int (short) Короткий цілий 16 -32768 . . 32767
unsigned short Беззнаковий короткий цілий 16 0 . . 65535
int Цілий 16 -32768 . . 32767
unsigned long Беззнаковий довгий цілий 32 0 . . 4294967295
long int (long) Довгий цілий 32 -214748348 . . 2147483647
float Дійсний одинарно точності 32 3.4Е-38 . . 3.4Е+38
double Дійсний подвійно точності 64 1.7Е-308 . . 1.7Е+308
long double Дійсний максимально точності 80 3.4Е-4932 . . 1.1Е+4932

3.2 ОПЕРАЦІЇ МОВИ С++

Позначки операцій – це один або декілька символів, що визначають дію над операндами. Операції поділяють на унарні, бінарні та тернарні за кількістю операндів, які беруть участь в операції (таблиця 3.2).

Таблиця 3.2.

Операція Короткий опис

Унарні операції

& Операція одержання адреси операнда
* Звернення за адресою (розіменування)
- Унарний мінус змінює знак арифметичного операнда
~ Порозрядове інвертування внутрішнього двійкового коду (побітове заперечення)
! Логічне заперечення (НЕ) значення операнда. Цілочисельний результат 0 (якщо операнд ненульовий, тобто стинний) або 1 (якщо операнд нульовий, тобто хибний). Таким чином: !1 дорівню 0; !2 дорівнює 0; !(-5)=0; !0 дорівнює 1.
++

Інкремент (збільшення на одиницю):

Префіксна операція (++х) збільшує операнд на 1 до його використання.

Постфіксна операція (х++) збільшує операнд на 1 після його використання.

int m=1, n=2;

int a=(m++)+n; // a=3, m=2, n=2

int b=m+(++n);// b=6, m=2, n=3

- -

Декремент (зменшення на одиницю):

Префіксна операція (--х) зменшує операнд на 1 до його використання.

Постфіксна операція (х--) зменшує операнд на 1 після його використання.

sizeof

Обчислення розміру (в байтах) об¢єкта того типу, який має операнд. Має дві форми:

1) sizeof (вираз);

sizeof(1.0); // Результат - 8,

Дійсні константи за замовчуванням мають тип double;

2) sizeof (тип)

sizeof (char); // Результат – 1.

Бінарні операції

Арифметичні операції
+ Бінарний плюс (додавання арифметичних операндів)
- Бінарний мінус (віднімання арифметичних операндів)
Мультиплікативні
* Добуток операндів арифметичного типу
/ Ділення операндів арифметичного типу (якщо операнди цілочисельні, абсолютне значення результату заокруглюється до цілого, тобто 20/3 дорівнює 6)
% Одержання залишку від ділення целочисельних операндів (13%4 = 1)
Операції зсуву (визначені лише для цілочисельних операндів)
<<  Зсув вліво бітового представлення значення лівого цілочисельного операнда на кількість розрядів, рівну значенню правого операнда (4<<2 дорівнює 16, т.я. код 4 100, а звільнен розряду обнуляються, 10000 – код 16)
>>  Зсув вправо бітового представлення значення правого цілочисельного операнда на кількість розрядів, рівну значенню правого операнда
Порозрядні операції
& Порозрядна кон’юнкція (І) бітових представлень значень цілочисельних операндів