↓Блог

↓Скачати

↓Відео

↓Інфо


Пошук

Пошук по блогу. Мінімум 4 символи


Профіль

Запамятати мене.


Зареєструватись


Сторінки блогу

Блог

Скачати

Відео

Музика

Фотошоп

Радіо

Інфо

Аналіз сайту

Форум

Категорії

HTML

PHP

CSS

Photoshop

SEO

CMS

Web-дизайн

javascript

Hard Ware

Відео обробка

Вільний блог

Linux

Програмування

Щоденники Дакара

C++

Мій особистий блог

Дизайн

F1

Mobile

Графіка

jQuery

Скачати

Шаблони сайтів

CMS

Для студентів

C++

Стилі для Photoshop

Кисті для фотошопу

Action для Photoshop

LOST

Відео

Відео уроки

Soft для мобільного

Книжки

South Park

OS

Soft

Фільми

Програми для телефонів

Відео

Мої роботи

Кліпи

Авіація

Спорт

Приколи

Трейлери

Джип-спринт

Аеробіка в ТНЕУ 2010

Музика

Rock

Pop

haus

Rap

Останні статті

Conky з темою для Ubuntu і зручною настройкою - красива панель індикаторів

Як ми мішаємо спокою вулиці

Opera Нормальне скачування файлів

Гарячі клавіші Visual Studio 2010

Як роблять зошити

ТОП 10

Урок - Створення відео, за допомогою Windows Movie Maker

Точкові і векторні зображення: порівняльний аналіз

Розбився Ту-154М з президентом Польщі

Ubuntu Server на домашньому комп'ютері. Роздамо інтернет, скачати torrent

Портфоліо у вигляді записного блокнота

Візуалізація даних у вебі: діаграми Ганта

Макет web-сторінки: можливо, все-таки Adobe Illustrator?

Все про C++ для початківців і не тільки

Блок картинок вирівняний по лівій і правій стороні

Зустріч citynet 27.03.2010

Останні файли

онного журналу UserAndLINUX

QuickOffice Premier v6.0.270 для Symbian 9.x S60

Djvu Reader v1.0 alpha для Symbian 9.x S60

PanoMan v3.0.667 для Symbian OS 9.х S60

Theme DIY v1.5 для Symbian OS 9.x S60

Останні пісні

Blue Foundation - Eyes on fire

Blue Foundation - Bonfires

Потап і Настя Каменських - Край мі е рівер

Crezter - I'm a bitch

Robbie Williams - Supreme

ТОП 10 файлів

Стилі для фотошопа - Армія

Кисть для фотошопа - Тропічні метелики

Навчальний курс "Об'єктно-орієнтоване програмування"

Південний Парк (14 сезон: 1 серія) / South Park / 2010 / TVRip

Економічна теорія - світова валютна система

LOST Загублені 6 сезон 13 серія The Last Recruit

Відео уроки по C++

Загублені LOST 6 сезон 4серія

Б. СТРАУСТРАП - ВВЕДЕНИЕ В ЯЗЫК СИ++

EQ BlueTool v.1.1

ТОП 10 пісень

Потап і Настя Каменських - Край мі е рівер

Muse - Supermassive Black Hole

Robbie Williams - Supreme

Crezter - I'm a bitch

Amy MacDonald - This Is The Life

Blue Foundation - Bonfires

Blue Foundation - Eyes on fire

Архів

2010-08

2010-07

2010-06

2010-05

2010-04

2010-03

2010-02

2010-01

2009-12

2009-11

2009-09

Галерея

Днюха Оксани

Квіти

Кемпінг

Кіт

Я

Аватарки

Students life

Портфоліо

Елементи дизайну

Дизайн

ASUS Open 2010

Демотиватори

AFT

СТОК

Miss SIS

Оксанені роботи

Я малий

Дискотека в 8-школі 23.04.10

Арт

Випускний 2010

my HardWare

Friends

Авто

Обробка фотографій

Наші друзі

military

k-design

Блог про блоги

habrahabr

Блог Віктора Бружини

Останє фото

Гербери

Гербери

Банери:
Rambler's Top100


Остаться в живых - LOST. Лучший сайт сериала.
Статистика

Зараз на сайті→4

На нашому блозі

Статей: 131

Коментарів: 93

Коментарі до файлів: 23

Зображень: 680

Відео: 68

Пісень: 7

Файлів: 60

Користувачів: 11

Адміністраторів: 1

Реклама

Все про C++ для початківців і не тільки

Автор: admin

Дата публікації: 28 квітня

Все більше людей прагне опанувати бодай якусь мову програмування. Я особисто роблю акцент на С++ і частково на Delphi. Але це вже на ваш смак. Деколи мені в пошуках вирішення якоїсь проблеми з написанням коду приходиться годинами вчитуватись в Help і серфити по сайтах, тому вирішив зібрати все основне тут. Статтю буду писати поступово, і постійно оновлювати, тому слідкуйте якщо вам цікаво

C++

Парадигма: декілька: об’єктно-орієнтована, узагальнена, процедурна
Дата появи: 1983
Творці: Б’ярн Страуструп
Система типізації: статична, не безпечна, номінативна
Основні реалізації: G++, Microsoft Visual C++, Borland C++ Builder
Діалекти: ISO/IEC C++ 1998, ISO/IEC C++ 2003
Під впливом від: C, Simula, Ada 83, ALGOL 68, CLU, ML
Вплинула на: Ada 95, C#, Java, PHP, D, Aikido, Dao

Б’ярн Страуструп, творець мови

Б’ярн Страуструп, творець мови - Kemping.te.ua

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

У 1990-х роках С++ стала однією з найуживаніших мов програмування загального призначення.

Особливості


При створенні С++ прагнули зберегти сумісність з мовою С. Більшість програм на С справно працюватимуть і з компілятором С++. С++ має синтаксис, заснований на синтаксисі С.

Нововведеннями С++ порівняно з С є:

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

У 1998 році ратифіковано міжнародний стандарт мови С++: ISO/IEC 14882 «Standard for the C++ Programming Language». Поточна версія цього стандарту — ISO/IEC 14882:2003.

Приклад програми «Hello, world!»


Нижче наведено приклад простої програми на С++, яка виводить на стандартний канал виводу рядок Hello, world!.

Історія назви


Назва «Сі++» була вигадана Ріком Масситті (Rick Mascitti) і вперше було використана в грудні 1983 року. Раніше, на етапі розробки, нова мова називалася «Сі з класами». Ім'я, що вийшло у результаті, походить від оператора Сі «++» (збільшення значення змінної на одиницю) і поширеному способу присвоєння нових імен комп'ютерним програмам, що полягає в додаванні до імені символу «+» для позначення поліпшень. Згідно Страуструпу, «ця назва указує на еволюційну природу змін Cі». Виразом «С+» називали ранішню, не пов'язану з Сі++, мову програмування.

Деякі програмісти на Сі можуть відмітити, що якщо виконуються вирази x=3; y=x++; то в результаті вийде x=4 і y=3, тому що x збільшується тільки після присвоєння його у. Проте якщо другий вираз буде y=++x; то вийде x=4 і y=4. Виходячи з цього, можна зробити висновок, що логічніше було б назвати мову не Сі++, а ++Сі. Проте обидва вирази c++ і ++c збільшують с, а крім того вираз c++ поширеніший.

Педанти також можуть відмітити, що введення мови Сі++ не змінює самого Сі, тому найточнішим ім'ям було б «С+1».

Технічний огляд


В 1998 році мова Сі++ була стандартизована Міжнародною організацією стандартизації під номером 14882:1998 — Мова Програмування Сі++. В даний час робоча група МОС працює над новою версією стандарту під кодовою назвою C++09 (раніше відомий як C++0X), який має вийти в 2009 році.

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

Стандарт Сі++ містить нормативне посилання на стандарт Сі від 1990 року і не визначає самостійно ті функції стандартної бібліотеки, які запозичуються із стандартної бібліотеки Сі.

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

Стандартизація визначила мову програмування Сі++, проте за цією назвою можуть ховатися також неповні, обмежені достандартні варіанти мови. Спочатку мова розвивалася поза формальними рамками, спонтанно, у міру завдань, що ставилися перед ним. Розвиткок мови супроводив розвиток кросс-компілятора Cfront. Нововведення в мові відбивалися в зміні номера версії кросс-компілятора. Ці номери версій кросс-компілятора розповсюджувалися і на саму мову, але стосовно теперішнього часу мову про версії мови Сі++ не ведуть.

Стандартна бібліотека


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

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

Так само, як і в Сі, можливості бібліотек активізуються використанням директиви #include для включення стандартних файлів. Всього в стандарті Сі++ визначено 50 таких файлів.

STL до включення в стандарт Сі++ була сторонньою розробкою, на початку — фірми HP, а потім SGI. Стандарт мови не називає її «STL», оскільки ця бібліотека стала невід'ємною частиною мови, проте багато людей до цих пір використовують цю назву, щоб відрізняти її від решти частини стандартної бібліотеки (потоки введення/виведення (Iostream), підрозділ Сі тощо). Проект під назвою STLport, заснований на SGI STL, здійснює постійне оновлення STL, IOstream і рядкових класів. Деякі інші проекти також займаються розробкою приватних застосувань стандартної бібліотеки для різних конструкторських завдань. Кожен виробник компіляторів Сі++ обов'язково поставляє якусь реалізацію цієї бібліотеки, оскільки вона є дуже важливою частиною стандарту і широко використовується.

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

Нові можливості в порівнянні з Сі


Мова Сі++ багато в чому є надмножиною Сі. Нові можливості Сі++ включають оголошення у вигляді виразів, перетворення типів у вигляді функцій, оператори new і delete, тип bool, посилання, розширене поняття константності та змінності, функції, що підставляються, аргументи за умовчанням, перевизначення, простори імен, класи (включаючи і всі пов'язані з класами можливості, такі як успадкування, функції-члени (методи), віртуальні функції, абстрактні класи і конструктори), перевизначення операторів, шаблони, оператор ::, обробку винятків, динамічну ідентифікацію і багато що інше. Сі++ є також мовою строгого типування і накладає більше вимагань щодо дотримання типів, порівняно з Сі.

У Сі++ з'явилися коментарі у вигляді подвійної косої риски («//»), які були в попереднику Сі — мові BCPL.

Деякі особливості Сі++ пізніше були перенесені в Сі, наприклад ключові слова const і inline, оголошення в циклах for і коментарі в стилі Сі++ («//»). У пізніших реалізаціях Сі також були представлені можливості, яких немає в Сі++, наприклад макроси vararg і покращена робота з масивами-параметрами.

Не об'єктно-орієнтовані можливості


В цьому розділі описуються можливості, безпосередньо не пов'язані з об'єктно-орієнтованим програмуванням (ООП). Багато які з них, проте, особливо важливі у поєднанні з ООП.

  • Ключове слово inline означає, що функція є хорошим кандидатом на оптимізацію, при якій в місцях звернення до функції компілятор вставить тіло цієї функції, а не код виклику. Приклад: inline double Sqr(double x) {return x*x;}
  • Замість функцій malloc і free, введені нові оператори new і delete. Якщо T — довільний тип, то
  • ul>

  • new T виділяє пам'ять, достатню для розміщення одного об'єкту типу Т; після завершення виклику оператора, компілятор здійснює ініціалізацію об'єкта (викликаючи його конструктор, якщо такий був визначний) і повертає вказівник типу Т*.
  • new T[n] виділяє пам'ять, достатню для розміщення n об'єктів типу Т; після завершення виклику оператора, компілятор здійснює ініціалізацію кожного з n об'єктів і повертає вказівник типу Т*.
  • delete p — звільняє пам'ять, на яку посилається вказівник p, виділену для нього раніше операцією new T. Деініціалізація об'єкту (викликаючи деструктора) забезпечується компілятором ще до виклику оператора delete.
  • delete [] p — звільняє область пам'яті, виділену для цього масиву раніше операцією new T[n]. Деініціалізація кожного елементу масиву забезпечується компілятором ще до виклику оператора.

Як видно, однією з принципових відмінностей операторів new та delete від своїх попередників, malloc і free, є обов'язковість ініціалізації об'єктів, пам'ять під які було призначено. Іншою відмінністю є те, що загальна реалізація (тобто визначена за умовчанням) оператора new не повертає нулеву вартість вказівника в випадку помилки призначення пам'яті (наприклад з причини її браку). Натомість, new кидає виняток (наприклад, std::bad_alloc в ситуації браку пам'яті). Так само як і для free, якщо вартістю аргументу оператора delete є 0, ані звільнення пам'яті, ані деініціація не відбувається (при тому, подібна ситуація не вважається помилковою).

  • Функції можуть приймати аргументи за посиланням. Наприклад, функція void f(int& x) {x=3;} присвоює своєму аргументу значення 3. Функції також можуть повертати результат за посиланням, і посилання можуть бути поза всяким зв'язком з функціями. Наприклад, {double&b=a[3]; b=sin(b);} еквівалентно а[3]=sin(а[3]);. Посилання певною мірою схожі з вказівниками, з наступними особливостями: при описі посилання ініціалізувалися вказівкою на існуюче значення даного типу; посилання довічно указує на одну і ту ж адресу; при зверненні до посилання операція читання пам'яті за адресою посилання проводиться автоматично. На відміну від вказавників, посилання не може бути константним саме по собі, однак може посилатися на константний об'єкт. Наприклад, int const & const ref = a[3]; на відміну від int const * const ref = &a[3]; - є некоректним, з точки зору С++, виразом; в свою чергу, і int const & ref = a[3];, і int const * ref = &a[3]; - є цілком прийнятними.
  • Можуть бути декілька функцій з одним і тим же ім'ям, але різними типами або кількістю аргументів (перевантаження функцій; при цьому тип значення, що повертається, на перевантаження не впливає). Наприклад, цілком можна писати:

void Print(int x);
void Print(double x);
void Print(int x, int y);

  • Один або декілька останніх аргументів функції можуть задаватися за умовчанням. Наприклад, якщо функція описана як void f(int x, int y=5, int z=10), виклики f(1), f(1,5) і f(1,5,10) еквівалентні.
  • При описі функцій відсутність аргументів в дужках означає, на відміну від Сі, що аргументів немає, а не те, що вони невідомі. Якщо аргументи невідомі, треба користуватися багатокрапкою, наприклад int printf(const char* fmt …). Тип першого аргументу повинен бути заданий.
  • Можна описувати оператори над новими типами. Наприклад, так:

struct Date {int day, month, year;};
void operator ++(struct Date& date);

Оператори нічим не відрізняються від (інших) функцій. Не можна описувати оператори над зумовленими типами (скажімо, перевизначати множення чисел); не можна вигадувати нові операції, яких немає в Сі++ (скажімо **); арність (кількість параметрів) і пріоритет операцій зберігається (скажімо, у виразі a+b*c спочатку виконуватиметься множення, а потім складання, до яких би типів не належали а, b і с.) Можна перевизначити оператор [] (з одним параметром) і () (з будь-яким числом параметрів).

  • Додані простори імен namespace. Наприклад, якщо написати

то поза фігурними дужками ми повинні звертатися до T, x, f, g як Foo::T, Foo::x, Foo::f, Foo::g. Якщо ми в якійсь одиниці трансляції (файл основного коду, наприклад myFile.cpp, та всі заголовкові файли що він включає) хочемо звертатися до них безпосередньо, ми можемо написати

using namespace Foo;

Або ж

using Foo::T;

Також можна створити синонім на вже існуючий простір імен (наприклад, аби уникнути постійно повторювати довгу назву простору)

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

namespace {
...
}

Всі імена, описані в ньому, доступні в поточній одиниці трансляції і більше ніде, неначебто ми до кожного опису приписали static.

  • Доданий новий тип bool, що має значення true і false. Операції порівняння повертають тип bool. Вирази в дужках після if, while приводяться до типу bool.
  • // означає, що вся частина рядка, що залишилася, є коментарем.
  • Додані шаблони (template). Наприклад, template T Min(T x, T у) {return x struct Array{int len; T* val;}; визначає масив значень будь-якого типу, після чого ми можемо писати Array x;
  • Введена стандартна бібліотека шаблонів (STL, англ. Standard Template Library), що визначає шаблони і функції для векторів (одновимірних масивів довільної довжини), множин, асоціативних масивів (map), списків, символьних рядків, потоків введення-виводу і інші шаблони і функції.
  • Якщо описана структура, клас (про класи див. нижче), об'єднання (union) або перерахування (enum), її ім'я є ім'ям типу, наприклад:

struct Time{int hh,mm,ss;};
Time t1, t2;

  • Усередині структури або класу можна описувати нові типи, як через typedef, так і через опис інших структур або класів. Для доступу до таких типів поза структурою або класу, до імені типу додається ім'я структури і дві двокрапки:

struct S {typedef int** T; T x;}; S::T у;

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

Переглядів: 359

Коментарі

Добавити коментар



Доведіть що ви не бот, введіть суму чисел на зображенні