C є основою для C++. Хоча C++ частіше застосовується для розробки програмного забезпечення для комп’ютерів і відеоігор, мова C є чудовим стартом, особливо для тих, хто тільки починає свій шлях у програмуванні. Продовжуйте читати, щоб дізнатися, чому.
Що таке C?
C – це структурована мова програмування високого рівня. Програми, створені на C, є переносними. C залишається однією з провідних мов програмування завдяки своїй надійності. Її використовують для складних застосунків, зокрема вбудованих систем, драйверів, ядер, системних програм, операційних систем, наприклад Microsoft Windows, Apple OS X, баз даних, таких як MySQL, та деяких IoT-пристроїв.
C є компільованою мовою, що створює проміжний рівень між машинним кодом і програмою.
Простий приклад програми на C для складання двох чисел має такий вигляд:
#include<stdio.h> int main() { int a, b, sum; printf("Введіть два числа для додавання: "); scanf("%d%d", &a, &b); sum = a + b; printf("nСума %d і %d дорівнює %d", a, b, sum); return 0; }
Результат:
Вивід прикладу програми на C
Програми на C використовують stdio.h – стандартний заголовок вводу/виводу.
STDIO надає базові функції вводу-виводу, такі як printf та scanf. printf використовується для відображення інформації (повідомлень, вихідних даних) на консолі, а scanf потрібен для отримання вхідних даних з консолі. Застосовуємо %d, щоб показати, що числа є цілими.
Якщо ввести десяткові дроби, отримаєте неочікувані результати. Щоб уникнути цього, можна використовувати %f. Функція main() виконується першою під час запуску програми. Синтаксис доволі простий: оголошуйте типи змінних, а потім їх використовуйте.
Що таке C++?
C++ базується на принципах об’єктно-орієнтованого програмування, таких як абстракція, поліморфізм, спадкування та інкапсуляція. C++ можна уявити як розширення C з доданою концепцією класів та об’єктів.
Використання об’єктів для збереження даних забезпечує програмам чітку структуру. Наприклад, якщо потрібно зберегти дані про студента, створюється клас Student, а в ньому атрибути на кшталт імені, віку, хобі, оцінок тощо. Коли це буде необхідно, можна створити реальний об’єкт-студент!
class Student { public: char name[20]; int age; float marks; }; //Створюється об'єкт Student student1 = new Student();
Сам об’єкт і виділення пам’яті для нього відбуваються вже під час виконання програми.
C++ демонструє високу продуктивність, тому й зараз є популярним вибором для розробки потужних ігрових двигунів, вбудованих систем, браузерів, компіляторів та графічних програм, що працюють із зображеннями.
Деякі бази даних, наприклад MongoDB, розроблені на C++. Як і C, C++ є портативним.
Розглянемо попередню програму складання на C++: зверніть увагу на відмінності у функціях.
#include <iostream> using namespace std; int main() { int a, b; cout << "Введіть числа: "; cin >> a >> b; int sum = a + b; cout << a << " + " << b << " = " << sum; return 0; }
Зауважте, що замість printf і scanf використовуються cout і cin. Окрім цього, оголошення типу можна робити будь-де в програмі до використання змінної (наприклад, змінної sum). Оператор виведення досить простий, лише з назвами змінних. Зверніть увагу, що використовується простір імен std із заголовка iostream. std містить такі методи як cout, in і багато інших.
Спільні риси C і C++
Можна стверджувати, що C є підмножиною C++. Між C і C++ є багато спільного, як у способі написання програм, так і в сферах їх застосування. Обидві мови є надійними, переносними та демонструють високу продуктивність. Кілька важливих схожостей:
№ | Характеристика | Пояснення |
1. | Синтаксис | Обидві мови мають схожий синтаксис, наприклад, оголошення змінних, крапка з комою наприкінці рядка, правила іменування тощо. |
2. | Структурність і процедурність | Кожен рядок коду виконується послідовно. Програми структуровані таким чином: спочатку імпорт, потім оголошення змінних, а тоді основний код. |
3. | Функція Main() | Весь код, який потрібно виконати, повинен знаходитися всередині функції main(). main() є першою функцією, яка викликається під час виконання програми. |
4. | Покажчики | І в C, і в C++ покажчики використовуються аналогічно. Покажчик – це змінна, що зберігає адресу пам’яті іншої змінної. Наприклад, int a = 1;. Після виконання цього коду, для a виділяється пам’ять (скажімо, XX0011). Адресу розташування a в пам’яті можна отримати за допомогою амперсанда (&) у вигляді int ptr_a = &a |
5. | Ключові слова й оператори | Усі ключові слова та оператори C також дійсні для C++. Наприклад, scope, static, public, int тощо. C++ також містить додаткові оператори і ключові слова. |
Схожість між C і C++
Відмінності між C і C++
C++ розробили, щоб усунути деякі недоліки C, і є надмножиною C. Тож будь-яка програма, написана на C, працюватиме на C++, але не навпаки! Головна відмінність між C і C++ полягає в тому, що C++ ґрунтується на об’єктно-орієнтованих принципах програмування (ООП). Крім того, C++ приділяє більше уваги перевірці типів. Існують і деякі інші відмінності, які перелічені нижче:
C | C++ |
Розроблена Деннісом Річі в лабораторіях AT&T Bell Labs у 1969-1973 роках. | Створена Б’ярне Страуструпом у 1979 році. |
Не дотримується принципів об’єктно-орієнтованого програмування. | Базується на концепціях ООП, таких як інкапсуляція, поліморфізм та спадкування. |
C містить 32 ключових слова, такі як char, switch, int, static, union та інші. | Усі ключові слова C дійсні в C++, і додатково є ще 31 ключове слово. |
Підтримує лише процедурне програмування. | C++ підтримує декілька парадигм програмування, зокрема ООП, узагальнене та функціональне програмування. |
Неможливо реалізувати функції ООП у C. | Такі функції, як друзі, віртуальні функції в C++, поліпшують сутність ООП. |
C підтримує вбудовані типи даних. | C++ підтримує як вбудовані, так і визначені користувачем типи даних завдяки концепції класів. |
Не передбачено перевантаження операторів чи функцій. | C++ підтримує і перевантаження операторів, і перевантаження функцій (поліморфізм) |
Виділення пам’яті здійснюється за допомогою функцій malloc() і calloc(), а звільнення – за допомогою free(). | Виділення пам’яті відбувається за допомогою оператора new, а видалення – за допомогою оператора delete. |
C не підтримує обробку винятків. | Підтримує обробку винятків. |
Орієнтована більше на процедуру чи метод, ніж на дані. | Більше зосереджена на даних. |
Відмінності між C і C++
Деякі важливі функції, що є тільки в C++:
- Застосовуючи ключове слово простору імен, можна створювати змінні з однаковими іменами в різних просторах імен.
- Можна використовувати функції всередині структури. Структури також можуть мати модифікатори доступу.
- Підтримує довідкові змінні.
Коли використовувати C або C++
Це поширена дискусія серед програмістів: навіщо вивчати C, якщо все можна робити на C++?
Вивчення C забезпечить міцну основу щодо структур даних, покажчиків, ключових слів, концепцій стека, купи та розподілу пам’яті.
Окрім цього, C досі широко застосовується для високопродуктивних програм, оскільки компілятор C швидший за компілятор C++. Отже, якщо потрібно написати фрагменти коду, які не потребують об’єктів і класів, віртуальних функцій або шаблонів, обирайте C, оскільки C++ може бути надмірним зі своїми великими бібліотеками.
Більша частина низькорівневого кодування, такого як ядра, операційні системи та бази даних, усе ще підтримується C, тож знання C також допоможе швидше вивчити C++.
C++ вважається однією з найшвидших і найефективніших мов, тому вона досі є однією з найкращих мов програмування, особливо для потужних програм, таких як ігрові двигуни, пристрої IoT та настільні застосунки. У багатьох програмах поєднується код C і C++ для досягнення оптимальної продуктивності та переваг об’єктно-орієнтованого програмування.
Підсумок
У цій статті ми розглянули основи C і C++ на простому прикладі програми. Обговорили ключові відмінності та схожість між обома мовами, а також випадки, коли краще застосовувати кожну з них.
Якщо ви тільки починаєте свій шлях у розробці програмного забезпечення, то початок із C додасть вам впевненості, оскільки він простий і охоплює всі концепції програмування, такі як структури даних, покажчики, пам’ять тощо.
Вам може бути цікаво скористатися онлайн-компілятором C і компілятором C++ від techukraine.net.