Неактивна зіркаНеактивна зіркаНеактивна зіркаНеактивна зіркаНеактивна зірка
 

Розділ 1. Основи програмування

1.1. Історія розвитку мови С

Мова програмування С була розроблена у 1972 році працівником компанії AT&T Bell Laboratories, фахівцем із системного програмування Деннісом Рітчі. Спочатку вона розроблялась як мова для операційних систем, зокрема, для Unix, але згодом отримала широке розповсюдження.

У 1978 році опублікована перша специфікація мови програмування С. Широке використання мови С на комп’ютерах різних апаратних платформ призвело до появи різноманітних варіацій цієї мови, що зумовило потребу її стандартизації. У 1983 Американський Інститут Стандартів (ANSI) сформував Технічний Комітет для створення стандарту мови С, у 1989 році вийшов перший стандарт цієї мови, а в 1990 році цей стандарт адаптовано до вимог Міжнародної організації стандартизації ISO. Похідними від мови С є мови програмування C++, C#, а також Java, Scala тощо.

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

Серед основних переваг мови С виділяють такі:

  • кросплатформність;
  • компактність та універсальність коду;
  • швидкість виконання програм;
  • гнучкість;
  • висока структурованість.

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

1.2. Структура програми

Отримання виконуваного коду програми на мові Сі здійснюється в декілька етапів: препроцесорна обробка тексту програми, компіляція, редактування зв’язків (компоновка) та виконання. Препроцесорна обробка програми здійснюється за допомогою спеціальної програми-препроцесора CPP.EXE перед компіляцією програми. Задачею препроцесора є перетворення вхідного тексту програми. На виході препроцесора отримується змінений текст програми на мові Сі. Компiлятор мови Turbo С сам викликає препроцесор для обробки тексту програми, але препроцесор може бути запущений також автономно, наприклад:

C:\>cpp iм’я.c

В останньому випадку на диску створюється перетворений препроцесором текстовий файл *.i (з тим самим iменем та розширенням ‘i’). Керування роботою препроцесора здійснюється за допомогою директив. Директиви препроцесора - це команди, якi препроцесор виконує для обробки тексту перед компіляцією програми.Директиви препроцесора не транслюються в машиннi коди i впливають лише на текст програми, що йде пiсля цiєї директиви до кiнця файлу. Директива препроцесора повинна починатися з символа #. Перед символом # та пiсля нього можуть бути пропуски. В одному рядку допускається використання тiльки однiєї директиви. В рядку, де розмiщена директива, не повинно бути iнших операторiв. Пiсля директиви препроцесора крапка з комою не ставиться, але може задаватися коментар. Директиви препроцесора включають команди визначення i замiни iдентифiкаторiв, макроси, включення файлiв та команди умовної компiляцiї.

Структура програми має таку послідовність:

  1. Коментар про призначення програми.
  2. Підключення бібліотек.
  3. Визначення препроцесора.
  4. Оголошення прототипів функцій.
  5. Оголошення глобальних змінних.
  6. Визначення головної функції.
    • 1. Оголошення локальних змінних.
    • 2. Виклик функцій.
    • 3. Оператори.
  7. Визначення інших функцій.

Коментарі використовуються для пояснень і для тимчасового “вимкнення” певного фрагмента програми під час її відлагодження. Жодних дій вони не виконують, тому що ігноруються компілятором.

Коментарі бувають одно- та багаторядкові. Однорядкові коментарі позначаються символами // зліва перед текстом коментаря:

//  Текст після символа // і до кінця рядка є коментарем

//  Це також однорядковий коментар

Багаторядкові коментарі записуються між символами /* (початок коментаря) та символами */ (кінець коментаря).

/*

Коментар до програми

може займати

кілька рядків

*/

Основні функції мови С визначаються в системних бібліотеках і описуються в заголовочних файлах (табл. 3.1). Список заголовочних файлів визначений стандартом мови.

                                                                                                                                  Таблиця 3.1.
                                                           Основні заголовочні файли

Назва

Призначення

conio.h

функції консольного введення-виведення

ctype.h

функції для перевірки літер

float.h

константи для розмірів дійсних типів

math.h

математичні функції та макроси

stdarg.h

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

stdio.h

функції введення-виведення, а також типи та макроси

stdlib.h

функції перетворення чисел, запиту пам’яті тощо

string.h

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

time.h

типи і функції, пов’язані з датою та часом

Заголовочні файли мають розширення .h і підключаються директивою #include. Вони містять заголовки (прото­типи) функцій, а також оголошення типів, констант та змінних з ключовим сло­вом extern. Перевага заголовочних файлів полягає у тому, що створений заголовочний файл для одного модуля (одного чи декількох c-файлів) програми, можна використати у іншій програмі. Переважно для кожного c-файла створюється власний заголовочний файл з таким самим ім’ям і розширенням h. І, навпаки, для кожного заголовочного файла створюється c-файл з реалізацією функцій, оголошених у h-файлі. При підключенні у програмі заголовочного файла його текст (а з ним і текст відповідного c-файла) автоматично вставляється до програми замість рядка з відповідною директивою #include. При компіляції програми усі підключені заголовочні файли з файлами їхньої реалізації перекомпільовуються, тому підключення надмірної кількості заготовочних файлів сповільнює компіляцію програми. Хоча в заголовочних файлах містяться всі описи стандартних функцій, у код програми включаються лише ті функції, які використовуються у програмі.

Приклад 3.1. Написати програму, що виводить повідомлення на екран.

// перша програма мовою С

#include <stdio.h>   /* під’єднання бібліотечного файлу з описами функцій ведення та виведення */

int main()

{

     printf("My first C-program!\n");

     return 0;

}

Початкова програма, написана на С/С++ у вигляді текстового файла, проходить такі три етапи опрацювання:

  • 1) препроцесорне перетворення тексту;
  • 2) компіляція;
  • 3) компонування (редагування зв’язків або збірка).

 

(Для ознайомлення з повним текстом статті необхідно залогінитись)