- •Введення
- •1. Структура та обсяг дисципліни
- •2. Основи програмування на мові с
- •2.1 Найпростіші конструкції мови
- •2.2 Типи даних
- •2.4 Операції мови с
- •2.5 Структура простої с програми
- •2.6 Організація введення-виведення
- •2.7 Компіляція в системі Linux
- •2.8 Організація розгалужень в програмі
- •2.9 Організація циклів
- •2.10 Оператор break
- •2.11 Оператор continue
- •2.11 Масиви
- •2.12 Функції
- •2.13 Вызов функции с переменным числом параметров
- •2.14 Рекурсивні функції
- •2.15 Читання і запис текстових файлів
- •2.16 Структури даних
- •2.17 Перелік|перерахування| (enumeration)
- •2.18 Об'єднання (union)
- •3. Операційні системи і системне програмування
- •3.1. Поняття операційної системи
- •4. Корисні команди Linux
- •4.1. Загальні|спільні| команди
- •4.1.1. Команда arch – виведення архітектури комп'ютера
- •4.1.2. Команда clear – очищення екрану
- •4.1.3. Команда date
- •4.1.9. Команда uptime – інформація про роботу системи
- •4.1.10. Команда users – інформація про користувачів
- •4.1.11. Команди w, who і whoami інформація про користувачів
- •4.1.12. Команда xf8config – настройка графічної підсистеми
- •4.2. Команди для роботи з текстом
- •4.2.1. Команди diff і cmp
- •4.2.2. Команди grep і egrep – текстовий фільтр
- •4.2.3. Команди more и less – посторінкове виведення
- •4.2.4. Команди head і tail – виведення начала і хвоста файлу
- •4.2.5. Команда wc – підрахунок слів у файлі
- •5. Захист інформації в інформаційних системах
- •5.1 Основні завдання забезпечення безпеки
- •5.2 Базові поняття криптографії
- •5.2.1 Поняття криптографічного алгоритму і протоколу
- •5.2.2 Криптосистеми з секретним ключем
- •5.2.3 Криптосистеми із відкритим ключем
- •5.2.4. Гибридні криптосистеми
- •5.2.5. Цифрові підписи
- •5.2.6. Сертифікати
- •5.3. Принципи аутентифіекації і керування доступом
- •5.3.1. Основи аутентифікації
- •5.3.2. Основи керування доступом
- •5.4. Аутентифікація та керування доступом в unix
- •5.4.1. Облікові записи користувачів
- •5.4.2. Аутентифікація
- •5.4.3. Керування доступом
- •6. Програмний інтерфейс unix. Системні виклики і функції стандартних бібліотек
- •6.1. Підтримка програмування в oc unix. Вивчення передачі інформації
- •6.2. Змінні оточення
- •6.3. Обробка помилок
- •6.4. Правила формування і засоби розбору командних рядків
- •7. Операції над файлами
- •7.1 Файлові операції posix
- •7.2. Збирання інформації про атрибути файла
- •7.3. Операції над каталогами
- •Література
2.5 Структура простої с програми
Програма складається з сукупності однієї або більш функцій, одна з яких повинна називатися main(). Заголовок містить операторів (директиви) препроцесора, наприклад, #include і імяфункциі. Ім'я функції можна дізнатися по круглих дужках, які можуть бути порожніми. Тіло функції поміщене у фігурні дужки і складається з ряду операторів, кожний з яких закінчується крапкою з комою:
Заголовок
-----------------------------------------------
#include<stdio.h>
int main(void)
-----------------------------------------------
Тіло
-----------------------------------------------
{
int q;
q=1;
printf(“q=%d \n”,q);
return 0;
}
------------------------------------------------
В даному прикладі тіло програми містить оператора оголошення, що оголошує ім'я і тип використовуваної змінної. Крім того, присутній оператор привласнення, що привласнює значення змінної. Потім слідує оператор друку, який викликає функцію printf(). Функція main() закінчується оператором повернення.
Коротко кажучи, проста програма ANSI C повинна мати наступний формат:
#include<stdio.h>
int main(void)
{
Операторы
return 0;
}
2.6 Організація введення-виведення
Мова С має могутню бібліотеку функцій введення-висновку (есліне наймогутнішу серед всіх мов програмування). Розглянемо дві з них - printf() і scanf().
Функція printf()
Формат функції:
printf(“Управляюча строка”, список аргументів);
Управляюча строка - рядок символів, що показує, як повинні бути надруковані параметри. У рядку, що управляє, міститься інформація двох різних видів:символы, печатаемые текстуально;
ідентифікатори даних, звані також специфікаторами перетворення.
Список аргументів - це перераховані через кому друковані параметри, які можуть бути:
змінними;
константами;
виразами, що обчислюються тут же при виведенні на друк.
Кожному аргументу із списку повинна відповідати одна специфікація перетворення, відповідна типу даного:
%d – для цілих чисел;
%f – для дійсних чисел;
%c – для виведення символа;
%s – для виведення рядка.
Наприклад:
int i=5;
char symbol=’A’;
float pi=3.14159;
char *str=”Hello!”;
printf(“%d %c %f %s”,i,symbol,pi,str);
Функція scanf()
Функція scanf() приймає значення з консолі (клавіатури) до натиснення клавіші Enter, перетворить одержані символи і значення записує за адресою змінної.
Формат функції:
scanf(%специфікатор_типу”,&им’я_змінної>)
Якщо вам потрібно ввести деяке значення і привласнити його змінною одного з базових типів, то перед ім'ям змінної потрібно ставити &. Якщо ви хочете ввести значення строкової змінної, використати & не потрібно.
Наприклад:
int a;
float b;
char s1,s2[10];
printf(“Enter a: “);
scanf(“%d”,&a);
printf(“Enter b: “);
scanf(“%f”,&b);
printf(“Enter symbol: “);
scanf(“%c”,&s1);
printf(“Enter string: “);
scanf(“%s”,s2);
2.7 Компіляція в системі Linux
Хай, наприклад, за допомогою текстового редактора біл підготовлений наступний код програми :
#include<stdio.h>
int main()
{
printf(“This is my first C-program!”);
return 0;
}
Файли, що містять код програми, повинні мати розширення .с. Збережемо нашу програму під ім'ям myprg.c.
Щоб перевести код програми в машинний код, необхідно виконати компіляцію програми. В результаті буде одержаний виконуваний файл.
Наприклад, щоб скомпілювати програму myprg, необхідно ввести команду:
gcc myprg.c
Якщо в програмі немає синтаксичних помилок, то в результаті виконання цієї команди буде одержаний файл а.out. Це виконуваний файл, що містить результат компіляції даної програми. Для запуску на виконання цього файлу введіть команду:
a.out
В результаті роботи програми на екрані з'явиться:
This is my first C-program!
Якщо необхідно зберегти исполняемій файл (а.out), перейменуйте його. Інакше, після виконання наступної компіляції якої-небудь програми, він буде замінений новим файлом а.out.
Компілятор gcc також створює файл об'єктного коду, що має те ж саме основне ім'я, що і початковий файл, і розширення .о ( у нашому випадку файл об'єктного коду називатиметься myprg.o). Але компонувальник після створення виконуваної програми цей файл видаляє. Проте, якщо початкова програма складається з декількох файлів початкового коду, файли об'єктного коду зберігаються. Трохи пізніше ми детально розглянемо роботу з програмами, що складаються з декількох файлів.
Ви можете зіткнутися з проблемою, що полягає в тому, що вікно, в якому виконується програма, зникає після закінчення роботи програми. Якщо таке відбувається, ве можете зробити припинення виконання програми, що припиняється при натисненні клавіші Enter. Для цього в кінці програми перед оператором return додайте виклик функції getch(). Ця функція считиваєткод натиснутої клавіші, тому програма робить паузу до тих пір, поки ви не натиснете Enter.
