Основні визначення мови Сі.
Алфавіт мови складається з латинських великих і малих букв, які мають різні коди, тому progіProgне одне й те ж, цифр і спеціальних знаків: ., ,, ‘, :.
Спеціальні символи (кожен окремо, або в комбінації з іншими) дозволяють задавати оператори і знаки операцій, серед яких найбільш часто використовують такі:
1) = оператор присвоювання. Допускається вираз а = b= с. Тут змінні а і в отримують значення змінної с.
2) +, -, *, /.
Допустимі операції
a+ =bа = а +b
a- =bа = а –b
a* =bа = а *b
a/ =bа = а /b
3) >, <, = =, > = , < =, ! = - не дорівнює, = = дорівнює
Наприклад : 3 > 2, 4! = 5, 2 < =2, 6 = = 6 – істинні
4) % - знак операції ділення по модулю;
5) // або / *, * / - використовується для коментарів ;
6) + + - знаки операції декремента – збільшення на 1;
7) - - − знаки операції інкремента – зменшення на 1;
+ + а – збільшення змінної а на 1 до використання змінної в виразах;
а + + - збільшення змінної а на 1 після використання цієї змінної в виразах;
-- а і а -- - аналогічно.
8) && - “ і ”; | |– або; ! – ні;
9) &,|,^,< <,> >, = інверсія знака порозрядних логічних операцій;
10) ? : - тернарної операції;
11) *, & - знаки адресних операцій;
12) . , - для використання в записах або структурах.
13) [ ] – для запису індексів масивів ;
14) ( ) – для функцій та встановлення черт використання операцій;
15) “ – лапки, для виведення символьної інформації на дисплей;
16) ‘ – апостроф, для визначення констант;
В подальшому будуть розглянуті всі принципи використання і будуть дані пояснення. Ідентифікатор використовують в якості назви об’єкту (функції, змінної, константи). Назва ідентифікатора повинна задовольняти такі умови:
починаються з букви латинського алфавіту а....z, або з символа прідкресленим _, який отримуємо натискуючи А15.
Як вводити і виводити інформацію.
Розглянемо чотири функції: printf, scanf, putchar, i setchar . Перші дві призначаютьсядля реалізації форматного введення і виведення даних.
Функція printf формально описується таким чином:
Printf(„керуючий рядок”, аргумент1, аргумент2...)
Керуючий рядок містить об`єкти трьох типів: звичайні символи, які просто виводяться на екран дисплею (копіюються в стандартий вихідний потік); специфікація перетворення, кожна з яких викликає виведення на екран значення чергового елемента зі списку і керуючі символьні константи.
Кожна специфікація перетворення починається зі знака % і закінчується деяким символом, який задає перетворення. Між знаком % і символом перетворення може бути: знак мінус, який вказує, що перетворений параметр потрібно вирівняти вліво в своєму полі; рядок цифр, який задає мінімальний розмір поля; крапка, яка відокремлює розмір поля від рядка цифр; рядок цифр, який задає максимальне число символів, які треба ввести або кількість цифр, які потрібно вивести справа від десяткової крапки в значеннях float або double.
Далі записується один із символів перетворення :
d – значенням аргумента є дійсне ціле число;
o - значенням аргумента є 8-не ціле число;
х – значенням аргумента є 16-не число;
с – значенням аргумента є символ;
s – значенням аргумента є рядок символів (виводяться до ознаки кінця рядка);
е – значенням аргумента є дійсне десяткове число в експотенційній формі;
f – значенням аргументя є дійсне десяткове число з плаваючою крапкою;
q – використовується як %е або %f і вилучає вивід несуттєвих нулів;
р – значенням аргумента є вказівник (адреса)
Якщо після знака % записаний не символ перетворення, то він виводиться на екран.
Фунція printf використовує керуючий рядок для того, щоб скільки всього аргументів і їх типи. Аргументами можуть бути змінні, константи, вирази, виклики функцій, головне, щоб їх значення відповідали заданій специфікації.
При наявності помилок (наприклад в кількості аргументів або типів перетворення ) результати будуть невірними.
Серед керуючих символьних констант найбільш частіше використовуються такі:
\a – для короткочасноїподачі звукового сигналу;
\b – для переведення курсора вліво на одну позицію;
\n – для перехода на новий рядок;
\r – для повернення каретки або переведення курсора в початок поточного рядку;
\t – для горизонтальної табуляції;
\v – для вертикальної табуляції;
Наприклад в результаті запису інструкції виклику функції:
Printf( ” \t ЕОМ \n % d\n”, i);
Спочатку виконується горизонтальна табуляція (\t), тобто курсор зміститься з початку краю екрана, потім на екран виведеться на екран слово ЕОМ, після чого курсор перейде в початок нового рядка (\n), потім буде виведено ціле значення і по формату d і на закінчення курсор перейде в початок нового рядка (\n).
Приклад : на малюнку показано використання функції printf при умові, що і = 123456 (тип long ) та j = 127 ( тип int) .
Printf ( ’’ \t і = %ld ; \n j = %d \n ’’, і , j );





















Р
ядок
k
і
= 1 2 3 4 5 6 ;



Р
ядокk
+ 1 j
= 127



Р
ядокk
+ 2
Функція scanf формально записується таким чином:
Scanf (” керуючий рядок ”, аргумент 1, аргумент 2, ....)
Аргументом Scanf повинен бути покажчик на відповідні значення (перед імнем змінної записується символ &). Призначення покажчиківрозглянемо потім.
Керуючий рядок містить специфікації перетворення і використовується для встановлення кількості і типів аргументів. В нього можуть входити : проміжки, символи табуляції і перехода на новий рядок (всі вони ігноруються); специфікації перетворення, які складаються із знака % або символа * ( заборона присвоєння ) або можливо числа, що задає максимальний розмір поля.
На рисунку показано, як інтерпретується символ & перед іменем і змінної. Комбінація &і розуміється як адреса комірки, де зберігається значення і (покажчик на і).
Адреса
і
-
&і
Пам’ять
З
начення
і
Scanf розташовує за адресою &і введене значення. В функції Scanf допускаються деякі символи пертворення функції printf.
Наприклад:
d - на вході очікується десяткове ціле число;
o - на вході очікується 8-ве ціле число;
x - на вході очікується 16-ве число;
u - на вході очікується поява беззнакового числа;
c - на вході очікується поява одиночного символа;
s - на вході очікується поява рядка символів;
f - на вході очікується поява дійсного числа;
p - на вході очікується поява покажчика (адреси) у вигляді 16кового числа;
Перед символами d, o , x , f може стояти буква l. В перших трьох випадках відповідні змінні повинні мати тип long, а в останньому – double. Приклад демонструє деякі можливості використання функції scanf, а також відповідність аргументів символам специфікації. Біля останнього аргумента l не записаний знак & тому, що рядок є масивом символів , оголошений як charl [20];
рядок
Дійсне
число
Scanf ( ’’ % d % f % c % s ’’ , і , j , & k, l )
Дес
дійс сим ряди
Дес.
символ
Число 20 в квадратних дужках після ідентифікатора l означає розмір масиву символів. В мові Сі ім’я масиву є покажчиком ( адресою першого елемента в масиві).
Оскільки це так то знак & перед ідентифікатором l не потрібен. Самий простий механізм введення – читання по одному символу з клавіатури за допомогою функції getchar. Інструкція вигляду c = getchar (); дозволяє присвоїти змінній с черговий вводимий символ . Звернення putchar (c), видає значення змінної с ( а цим значеннм є теж символ ) в стандартний вихідний потік ( на екран дисплея). Змінна с повинна мати тип int або char. Самостійно: модифікатор * і його використання з функціями printf() і scanf ()
