Стислий екскурс в історію алгоритмічної мови С 1972 р. - співробітник фірми Bell Laboratories Деніс Рітчі створив алгоритмічну мову С р. - на мові С Деніс Рітчі реалізував операційну систему Unix Середина 80-х рр. - Б'ярн Страуструп розробив мову «С з класами», що надалі стали називати мовою C++ Мова C++ є мовою високого рівня і основою багатьох систем програмування: Borland C++, Visual C++, Borland C++ Builder.
Елементи мови Сі Елементи будь-якої мови: –символи (алфавіт мови) - це основні неподільні знаки, за допомогою яких пишуться всі тексти на мові програмування; –слова (лексеми) - мінімальні одиниці мови, які мають самостійний зміст; –словосполучення (вирази) задають правило обчислення деякого значення; –речення (оператори) задають кінцевий опис деякої дії.
Алфавіт –великі та малі латинські літери: A-Z, a-z. Компілятор мови Сі розглядає літери верхнього та нижнього регістрів як різні символи; –арабські цифри; – символи: графічні та ескейп-послідовності ( символи табуляції, символ переходу на наступний рядок тощо; –символи,. ; : ? ' ! | / \ ~ ( ) [ ] { } # % ^ & - + * = Лексеми – ідентифікатори, ключові слова, константи, рядки, знаки операцій.
Ідентифікатори Ідентифікатори використовуються для іменування різних об'єктів: –змінних, –констант, –міток, –функцій тощо. При записі ідентифікаторів можуть використовуватися –великі та малі латинські літери; –арабські цифри; –символ підкреслення. Приклад: Sum sum sUm SUM sUM Наочність та зрозумілість file_name
Константи Константами називають сталі величини, які в процесі виконання програми не змінюються. –цілі десяткові (Приклад: 3, 10, 123, 1024); вісімкові (починаються з 0, після якого розміщуються цифри 0-7, Приклад: 023, 0701); шістнадцяткові (починаються з 0х або 0Х, після яких розміщуються цифри 0-F, Приклад: 0xF123, 0X10A); –дійсні [ ціла_частина ][. дробова_частина ][ Е [-] степінь ] Приклад: 2.2, 220е-2, 22.Е-1,.22Е1
–символьні - це один або декілька символів, які заключені в апострофи. Приклад: A * \n Послідовності символів, які починаються з символу \ (обернений слеш) називаються керуючими або escape-послідовностями - рядкові - послідовності символів, заключених в подвійні лапки. Компілятор долучає в кінець рядка нуль-символ \0 Записи c i c є різними. Приклад: "Це рядковий літерал!\n" Національний університет\КПІ\
Коментарі Види: –однорядкові (Приклад: int a = 3; // ініціалізація змінної а) –багаторядкові. Текст на Сі, що міститься у дужках /* та */ ігноруватиметься компілятором, тобто вважатиметься коментарем до програми. Приклад: /* функція обчислює cуму матриць */
Ключові слова Ключові слова - це зарезервовані ідентифікатори, які мають спеціальне значення для компілятора.
Структура програми Основними частинами типової структури програми на Cі є такі: –директиви препроцесорної обробки; –опис зовнішніх змінних (вихідних даних і результатів) та функцій; –функції програми; –головна функція програми main().
Функції Функція – це синтаксично та логічно завершений самостійний фрагмент, що має імя та реалізує певну задачу. Синтаксис ([список параметрів]) { } Тіло – з описів операторів, кожен завершується ; Тип void - не повертає функція значення ОС, int - повертає ціле число ( 0. якщо без помилок завершено програму)
Приклад Обчислити значення функції y=f(x)=a*cos2(kx). Де k=1.25, а значення а і х ввести з клавіатури. #include void main ( ) { float a, x, k=1.25, y; puts (Ввести значення a і x); scanf (%f%f, &a, &x); y=a*pow(cos(k*x),2); printf (При x=%f результат y=%f\n, x, y); puts (Бажаю ще більших успіхів!); }
Директиви препроцесора #include Використання таких директив призводить до того, що препроцесор підставляє на місце цих директив тексти файлів у відповідності з тими, що перелічені у дужках. Приклад: #include main() { printf("Hello !...\n"); return 0; } #define - макропідстановка #define N 20
Базові типи даних Тип задає обсяг памяті для зберігання даних, визначає діапазон допустимих значень та встановлює операції, які можуть виконуватись.Типи: скалярні, агреговані (складені). Базові типи даних Сі 1.char - символ 2.int - ціле 3.float - число з плаваючою комою одинарної точності 4.double - число з плаваючою комою подвійної точності Дані дійсного типу представлені наближено. Точність представлення ( десяткових цифр мантиси) Float - 7 double - 16
Тип вказується явно в описах, тип констант – встановлюється за формою запису. Приклад: int I, k, letter ; double sum, result ; int m=10, symb=* ; const double pi=
Функції введення та виведення Функція printf() призначена для виведення інформації за заданим форматом у стандартний вихідний потік ( на екран). Синтаксис функції printf(): printf("Рядок формату"[, аргумент1[, аргумент2, [...]]]); Приклад : #include void main() { int a=10,b=20,c=30; printf(" a==%d \n b==%d \n c==%d \n",a,b,c); } Специфікації повині бути узгоджені в порядку зліва направо із списком виведення. Специфікації перетворення для функції printf(): –%d - десяткове ціле; –%f - представлення величин float та double з фіксованою точкою; –%e або %Е - експоненціальний формат представлення дійсних величин; –%g - представлення дійсних величин як f або Е в залежності від значень; –%c - один символ (char); –%s - рядок символів;
Приклад: #include void main() { printf("/%d/\n",336); printf("/%2d/\n",336); printf("/%10d/\n",336); printf("/%-10d/\n",336); }; Результат виконання програми буде виглядати так : /336/ /336/ / 336/ /336 /
Так, як і для функції printf(), для функції scanf() вказується рядок формату і список аргументів. Функція printf() використовує імена змінних, констант та вирази, в той час, як для функції scanf () вказується тільки покажчики на змінні. scanf("Рядок формату",&аргумент1[,&аргрумент2[,...]]); Кількість параметрів у списку введення повино відповідати кількості специфікацій, а тип змінних – бути сумісним з відповідними спеціфікаціями. Функція scanf () реалізує буферний принцип введення. Приклад: #include void main() { int a,b,c; printf("A="); scanf("%d",&a); printf("B="); scanf("%d",&b); c=a+b; printf("A+B=%d",c); }
Приклад #include int a,b,res; void main(void) { scanf("%d %d",&a,&b); res = a + b; printf("%d + %d = %d\n",a,b,res); }