ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 09.08.2020
Просмотров: 354
Скачиваний: 2
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
Національний університет “Львівська політехніка”
ОСНОВНІ ПОНЯТТЯ МОВИ C++
ІНСТРУКЦІЯ
до лабораторної роботи № 3 з курсу
“Основи програмування”
для базового напрямку “Програмна інженерія”
Затверджено
На засіданні кафедри
програмного забезпечення
Протокол № від
ЛЬВІВ – 2011
1. МЕТА РОБОТИ
Мета роботи – навчитися програмувати на мові С++ найпростіші лінійні алгоритми із застосуванням потокового введення вхідних даних та виведення результатів.
2. ТЕОРЕТИЧНІ ВІДОМОСТІ
2.1. Вступ
Мова С++ розвинулася з мови С, яка в свою чергу була створена на основі двох ранніх мов програмування – BCPL і B. Мова BCPL була створена у 1967 році Мартіном Річардом як мова для написання компіляторів і програмного забезпечення операційних систем. Автором мови В, яка була дублікатом мови BCPL, вважається Кен Томпсон. Він використовував її для створення ранніх версій операційної системи (ОС) UNIX в компанії Bell Laboratories в 1970 р. І BCPL, і B були “нетиповими” мовами – кожний елемент даних займав одне машинне слово в пам’яті і увесь тягар обробки елемента даних, наприклад, як цілого числа чи дійсного числа лягав на плечі програміста.
Мова С була розвинута з мови В Денісом Рітчі в Bell Laboratories і вперше була реалізована на комп’ютері DEC в 1972 р. Мова С успадкувала багато важливих концепцій BCPL і B, а також додала поняття типів даних та інші корисні можливості. Першопочатково мова С набула широкої популярності як мова розробки ОС UNIX. Сьогодні більшість операційних систем написані на С або С++. Протягом двох наступних десятиліть мова С стала доступною для переважної більшості комп’ютерів. Зараз прийнято вважати, що мова С є апаратно незалежною, що означає, що при належній і ретельній розробці на С можна створювати мобільні програми, які можуть бути перенесені на комп’ютер будь-якої архітектури. До кінця 70-х років минулого століття, внаслідок постійного вдосконалення, мова С “доросла” до рівня, який тепер прийнято називати “класичним С” або “C Кернігана і Рітчі“. Публікація книги Кернігана і Рітчі “The С programming language” стала справжньою віхою в історії цієї мови (і програмування вцілому). Однак широке поширення мови С для різних типів комп’ютерів привело, на жаль, до великої кількості варіацій мови, які були схожими, але несумісними. Це стало серйозною проблемою для спільноти розробників програмного забезпечення, оскільки вони мали велику потребу в написанні таких програм, які можна було б виконувати на різних апаратних платформах (тобто сумісних програм). Стало очевидно, що необхідна стандартна версія мови С. У 1983 р. Американський Національний Інститут Стандартів ANSI приступив до розробки такого стандарту, який був затверджений у 1989 р. Пізніше в кооперації з Міжнародною організацією стандартів ISO був створений і опублікований у 1990 р. міжнародний стандарт ANSI/ISO 9899:1990, який і використовується до сих пір.
Мова С++ - це розширення мови С. С++ була розроблена Б. Страустропом на початку 80-років знову ж таки в Bell Laboratories. Мова С++ має ряд нових властивостей, які “приводять в порядок” мову С, і що найголовніше, забезпечує можливість об’єктно-орієнтованого програмування. Однак, на відміну від “чистих” об’єктно-орієнтованих мов програмування, таких як Smalltalk чи Java, С++ є гібридною мовою програмування. Вона надає можливість програмісту писати програми як в класичному стилі мови С, так і в об’єктно-орієнтованому стилі.
2.2. Алфавіт та елементарні конструкції мови С++
Кожна мова програмування має свій алфавіт, тобто набір допустимих символів з яких може складатися програма. Алфавіт мови С++ містить:
-
великі і малі букви латинського алфавіту;
-
арабські цифри від 0 до 9;
-
прості спеціальні символи: ‘+’, ‘-‘, ‘*’, ‘/’, ‘:’,’;’, ‘,’,’=’, ‘>’, ‘<’, ‘[‘,’]’, ‘(‘,’)’,‘{‘,’}’,’ ‘;
-
складені спеціальні символи: ‘<>’, ‘>=’, ‘<=’ , ‘->’.
Із цих символів складаються базові елементи мови. До них належать:
-
ідентифікатори;
-
числа;
-
рядки.
Усі імена, які використовуються в програмі для означення різних об’єктів і конструкцій називаються ідентифікаторами. Усі ідентифікатори мови С++ можна поділити на три групи:
-
Службові (зарезервовані) слова мови: призначення цих слів визначено самою мовою, їх не можна використовувати інакше, як це передбачено правилами (синтаксисом) мови. Основні службові слова подано нижче:
asm
continue
float
new
signed
try
auto
default
for
operator
sizeof
typedef
break
delete
friend
private
static
union
case
do
goto
protected
struct
unsigned
catch
double
if
public
switch
virtual
char
else
inline
register
template
void
class
enum
int
return
this
volatile
const
extern
long
short
throw
while
-
Бібліотечні ідентифікатори: використовуються для позначення констант, функцій, об’єктів та класів з різних бібліотек функцій та об’єктів, які є складовою частиною системи програмування С++. Наприклад, COS – ідентифікатор для позначення стандартної функції cos(x), COUT - ідентифікатор для позначення об’єкту стандартного потоку виведення.
-
Ідентифікатори користувача: використовуються для позначення об’єктів (типів, змінних, констант, функцій тощо) визначених самим програмістом.
Слід пам’ятати такі основні правила запису ідентифікаторів користувача:
-
Ідентифікатор складається з букв, цифр і знаку підкреслення (до складу ідентифікатора не може входити будь-який інший спеціальний символ).
-
Першою повинна бути тільки буква Не рекомендується починати ідентифікатори із знаку підкреслення оскільки багато бібліотечних об’єктів та функцій починаються саме з цього знаку.
-
У мові С++ розрізняється регістр букв, тобто, наприклад, Х і х - це два різні ідентифікатори.
-
Ідентифікатори користувача не повинні співпадати з службовими словами та бібліотечними ідентифікаторами.
Числа в мові C++ можуть записуються в десятковій системі числення, а також у вісімковій (починаються з префікса 0) та шістнадцятковій (починаються з префікса 0х) системах. Числа у десятковій формі можуть бути цілими і дійсними. Цілі числа записуються у звиклій формі послідовності цифр. Особливістю мови С++ є те, що при записі цілих чисел можна використовувати суфікси, які означають довжину цілого (кількість двійкових розрядів). Наприклад, суфікс L означає довге ціле зі знаком, а суфікс UL – беззнакове довге ціле. Числа дійсного типу мають дві форми запису:
-
з фіксованою крапкою – у вигляді цілої та дробової частини, розділеної крапкою: 25.34, 3.1415;
-
з плаваючою крапкою – у вигляді мантиси та порядку, розділених буквою Е: 0.31415Е1.
Рядки – це послідовність символів, записаних між парою подвійних лапок: “Hello World!”.
2.3. Поняття змінної та константи.
Будь-яка програма задає конкретні команди, які виконує комп’ютер. Ці команди мають вигляд операторів мови програмування, і вони, як правило, передбачають наявність певних величин або об’єктів над якими виконуються дії задані операторами. Ці величини прийнято називати даними. Іншими словами, в найбільш загальному випадку можна стверджувати, що програма=оператори+дані. Для представлення даних в програмі найчастіше використовуються такі програмні об’єкти як змінні та константи. Змінні – це величини, які можуть змінюватися в процесі виконання програми, а константи – це величини, які не змінюють свого значення протягом усього часу виконання програми. Константи записуються або значеннями: 3.1415, 10, або іменами : Pi, EPS – іменовані константи.
Всі змінні в С++-програмі повинні бути обов’язково оголошені (задекларовані) до того як вони будуть використані. Оголошення змінної має задавати тип даних змінної та ідентифікатор змінної, а також може містити початкове значення змінної (ініціалізація змінної). Типи даних у мові С++ поділяються на прості (скалярні) та складені (структуровані). До скалярних типів відносяться:
-
char - одиничний байт, що містить один символ;
-
int - ціле число;
-
float - число з плаваючою крапкою одиничної точності;
-
double - число з плаваючою крапкою подвійної тосності.
Для розширення базових типів використовуються кваліфікатори:
1) short - короткий; 2) long – довгий.
Ці кваліфікатори застосовуються до цілого типу: short int (можна писати просто short) - короткий цілий, long int (скорочено long) – довгий цілий. Наприклад, якщо ціле число типу int може займати в пам’яті машини або 16 біт або 32 біти, то long займає 32 біти, а short - 16 біт.
Кваліфікатор long може розширювати тип double. Тип long double - числа з плаваючою крапкою підвищеної точності.
Кваліфікатор 1) signed - із знаком; 2) unsigned - без знака - застосовуються до типів int i char. Якщо значенню типу char відводиться 8 біт (1 байт), то unsigned приймає значення від 0 до 255, а signed від -128 до 127.
У мові C не існує логічного або булевського типу, хоча логічні операції використовуються. Треба запам’ятати, що значенню “істина” відповідає “не нуль”, тобто будь-яке число, що не дорівнює нулю, а “не істина” - “нуль”.
Вибір імені (ідентифікатора) змінної бажано узгоджувати з її змістом. Приклади оголошення та ініціалізації змінних:
char sym, ls=’A’;
int n=10, m, k;
float eps=0.001;
long int number;
unsigned char s;
До будь-якої змінної в оголошенні можна використати кваліфікатор const, тоді змінна перетворюється в константу, тобто її значення при виконанні програми не змінюється:
const int n=20;
const double pi=3.1415;
2.4. Структура програми
Будь-яка мова програмування високого рівня (С++ не є виключенням) має свої вимоги та правила щодо організації програми. Традиційно для пояснення структури програми мовою С++ розглядається найпростіша програма, яка виводить певне текстове повідомлення (наприклад, “Моя перша програма мовою С++!”) на екран монітора. Вихідний текст (адаптований до середовища програмування MS Visual C++ 2010 Express Edition) такої програми має вигляд:
#include <iostream>
main()
{
using namespace std;
cout<<"Моя перша програма мовою С++! \n";
return 0;
}
Ця проста програма ілюструє цілий ряд важливих особливостей мови С++. Розглянемо детально кожний рядок цієї програми.
Перший рядок
// Моя перша програма мовою С++
починається з символа //, який означає, що наступний після нього текст є коментарем. Коментарі використовуються для того, щоб документувати програму і полегшити її розуміння. Коментарі допомагають іншим людям читати і розуміти Вашу програму. Коментарі ігноруються компілятором С++, і тому вони не викликають ніяких дій з боку комп’ютера. Як правило, коментар у першому рядку програми просто описує призначення програми. Коментар, який починається з символа // називається однострічковим коментарем, тому, що він закінчується в кінці поточного рядка. Багатострічковий коментар в С++ повинен розміщатися між парою символів /* та */.
Рекомендація. Кожна програма повинна починатися з коментара, який описує ціль програми.
Рядок
#include <iostream>
є директивою препроцесора мови С++, яка дає вказівку препроцесору включити в текст програми вміст файлу iostream (в стандарті мови С++ файл iostream.h). Сам файл з розширенням .h прийнято називати заголовочним файлом або header-файлом. Рядки програми на С++, які починаються з символа # є директивами і обробляються препроцесором перед початком компіляції програми. Всі програми, які використовують потоки введення/виведення для обміну даними з оточуючим середовищем повинні містити директиву включення головного файлу потоку введення/виведення iostream.
Рядок
main()
повинен бути пристунім у кожній програмі на С++. Пара круглих дужок після слова main означають, що main – це програмний блок, який називається функцією. Будь-яка С++-програма складається з однієї чи декількох функцій, одна з яких повинна обов’язково називатися main. Функція main називається головною функцією і вона є точкою входу в програму. Це означає, що кожна програма на С++ починає виконуватися з функції main, навіть якщо ця функція не є першою в тексті програми.
Ліва фігурна дужка { починає тіло кожної функції. Відповідно, права фігурна дужка } повинна завершувати кожну функцію. Проводячи аналогію з мовою Паскаль, пара фігурних дужок {} відповідає ключовим словам begin end мови Паскаль.
Рядок
using namespace std;
містить команду using namespace, яка не вимагається стандартом мови С++ і є специфічною особливістю середовища MS Visual C++ 2010. Ця команда просто вказує на те, що в нашій програмі буде використовуватися простір імен std, в якому описані багато стандартних об’єктів, наприклад об’єкт cout.