Лекція1_

Содержание

Слайд 2

Методичне забезпечення

Б.Л.Голуб \ Б.Л.Голуб, Є.М.Шукайло. Методичний посібник до вивчення дисципліни “Програмування та

Методичне забезпечення Б.Л.Голуб \ Б.Л.Голуб, Є.М.Шукайло. Методичний посібник до вивчення дисципліни “Програмування
алгоритмічні мови”. Методичний посібник. – Видавничий центр НУБіП, 2012. – 64 с.
Б.Л.Голуб \ Б.Л.Голуб, О.І.Примак. Методичні вказівки до виконання лабораторних робіт з дисциплін “Основи програмування”, “Програмування та алгоритмічні мови” (частина І). – Видавничий центр НУБіП, 2009. – 38 с.
Б.Л.Голуб \ Б.Л.Голуб, О.І.Примак. Методичні вказівки до виконання лабораторних робіт з дисциплін “Основи програмування”, “Програмування та алгоритмічні мови” (частина ІІ). – Видавничий центр НУБіП, 2009. – 50 с.

Слайд 3

Рекомендована література

Базова
Б.Керниган \ Б.Керниган, Д.Ритчи. Язык программирования С. – Санкт-Петербург, 2001. –

Рекомендована література Базова Б.Керниган \ Б.Керниган, Д.Ритчи. Язык программирования С. – Санкт-Петербург,
300 с.
Х.М.Дейтел \ Х.М.Дейтел, П.Дж.Дейтел. Как программировать на С. – М.:”Бином”, 2000. – 1005 c.
Додаткова
Крис Паппас \ Крис Паппас, Уильям Мюррей. Программирование на С и С++. Серия «Библиотека студента». – «Ирина», BHV, Киев, 2000. – 320с.
ANSI, American National Standart for Information Systems – Programming Language C. – New York, 1990.

Слайд 4

Лекція 1_Тема №1 Введення в програмування

Лекція 1_Тема №1 Введення в програмування

Слайд 5

1.1. Алгоритми та програми

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

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

Слайд 6

Структури алгоритмів

1) слідування (лінійна структура, коли перетворення інформації відбувається послідовно за певними формулами);
2) розгалуження

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

Слайд 7

У словнику будь-якої мови знайдуться слова для опису трьох можливих структур алгоритму,

У словнику будь-якої мови знайдуться слова для опису трьох можливих структур алгоритму,
для зображення алгоритму графічно розроблені спеціальні графічні фігури, в будь-якій мові програмування існують інструменти для реалізації лінійної структури, структури з перевіркою умов та циклічної структури. Способи опису алгоритмів: словесний; словесно-формульний; графічна схема; блок-схема; операторна схема; НІРО-схема; таблиця рішень, тощо.
В даному курсі ми будемо користуватись представленням алгоритмів у вигляді блок-схем.

1.2. Блок-схема як засіб графічного зображення алгоритмів. Лінійні алгоритми. Алгоритми з розгалуженням. Алгоритми з циклами та циклічними структурами.

Слайд 9

Блок-схема алгоритму обчислення коренів квадратного рівняння

Блок-схема алгоритму обчислення коренів квадратного рівняння

Слайд 10

1.3. Мови програмування. Компілятори програмування

У вузькому сенсі під програмуванням (кодуванням) розуміють написання

1.3. Мови програмування. Компілятори програмування У вузькому сенсі під програмуванням (кодуванням) розуміють
програм (інструкцій) на конкретній мові програмування. Відповідно, люди, які цим займаються, називаються програмістами.
Якщо висловлюватися мовою програміста, дії, які треба виконати – це оператори, а визначення послідовності їх виконання називається керуванням програмою.
Програмісти розробляють програми на різних мовах програмування, деякі з яких безпосередньо зрозумілі комп'ютеру, а інші поневіряються проміжній стадії – трансляції. Усі мови можуть бути поділені на три загальних типи:
машинні мови;
мови асемблера;
мови високого рівня.

Слайд 11

Компілятори програмування

Для перетворення програм на мові високого рівня у програми на машинній

Компілятори програмування Для перетворення програм на мові високого рівня у програми на
мові використовуються спеціальні програми, які називаються компіляторами.
Існують багато компіляторів та інтегрованих середовищ розробки:
Borland C++
C++ Builder
Microsoft Visual C++
Microsoft Visual Studio
Dev-C++
Code::Blocks
Embarcadero RAD Studio та ін.

Слайд 12

Основні мови програмування

FORTRAN
COBOL
PASCAL
BASIC
C
C++
Об'єктно-орієнтовні мови програмування

Основні мови програмування FORTRAN COBOL PASCAL BASIC C C++ Об'єктно-орієнтовні мови програмування

Слайд 13

 Рейтинг TIOBE Index

Рейтинг TIOBE Index

Слайд 14


Рейтинг TIOBE Index побудований на оцінці результатів пошукових запитів, що містять

Рейтинг TIOBE Index побудований на оцінці результатів пошукових запитів, що містять назву
назву мови.
Логіка цього індексу дуже проста: «Якщо мову шукають в пошукових системах, то вона популярний». Звичайно ж, ця заява спірне, тому що програмісти-професіонали вкрай рідко будуть шукати в пошуковику саме назва мови програмування. Вони частіше шукають вирішення конкретного завдання. Але величезний плюс цього рейтингу в тому, що він досить об'єктивно показує інтерес до тій чи іншій мові.

Слайд 15

Рейтинг IEEE Spectrum

Рейтинг IEEE Spectrum

Слайд 16

Щорічний рейтинг IEEE Spectrum Top Programming Languages використовує 11 метрик з 8-ми

Щорічний рейтинг IEEE Spectrum Top Programming Languages використовує 11 метрик з 8-ми
джерел, включаючи пошукові запити, згадки в твіттері і навіть згадки у вакансіях на роботу програміста.
З одного боку цей рейтинг використовує більше даних, але з іншого боку в багатьох джерелах дані мають пов'язаний характер.
Чим більше публікуються вакансій на деяку мову програмування, тим більше запитів буде в пошукових системах. Тобто у нових мов більше шансів потрапити на вершину рейтингу.

Слайд 17

ІСТОРІЯ МОВИ С
ХАРАКТЕРИСТИКА С-СИСТЕМ
С - розроблена Деннісом Річі у 1972

ІСТОРІЯ МОВИ С ХАРАКТЕРИСТИКА С-СИСТЕМ С - розроблена Деннісом Річі у 1972
році.
С++ - Б'єрном Страуструпом розроблено доповнення до мови С у 1983 році (мова С++ надає можливості об'єктно-орієнтованого програмування).
С# - об'єктно-орієнтована мова програмування. Розроблена в 1998-2001 роках групою інженерів під керівництвом Андерса Хейлсберга.

Слайд 18

С-системи

С-системами - комплекс програмних продуктів, які дозволяють розроблювати програми на мові С.

С-системи С-системами - комплекс програмних продуктів, які дозволяють розроблювати програми на мові

Вони складаються з:
середовища;
мови програмування;
стандартної бібліотеки.
Бібліотечні функції виконують такі операції, як введення/виведення, математичні обчислення.
Під час розробки С-програми проходять шість етапів: редагування, передпроцесорна обробка, компіляція, компонування, завантаження, виконання.

Слайд 19

Алфавіт мови.

Алфавіт мови С/С++ складається з:
великих і малих літер латинського алфавіту:

Алфавіт мови. Алфавіт мови С/С++ складається з: великих і малих літер латинського
"А", ..., "Z", "а", ..., "z";
цифр 0, 1, ..., 9;
спеціальних символів: " ' () [] {} < > . , ; : ? ! ~ * + - = / \ | # % $ & ~ @ та символу підкреслення _.
Програми складаються із синтаксичних конструкцій, які називаються командами (інші назви — оператори). Команди будуються з лексем - неподільних елементів мови: слів, чисел, символів операцій. Слова поділяють на ідентифікатори і ключові слова. Ідентифікатор - це назва (ім'я), яку користувач надає об'єктам, наприклад, змінним, сталим, функціям. Усі слова можуть складатися з рядкових чи прописних літер англійського алфавіту, цифр, а також містити символ підкреслення. Ідентифікатор завжди починається з букви або із символу підкреслення. Однакові за змістом малі та великі літери у моні С++ вважаються різними символами. Зарезервовані ідентифікатори називаються ключовими словами. Вони використовуються для написання команд. Змінити призначення ключового слова у програмі не можна. Основні ключові слова мови С/С++: int, double, bool, main, new, break, printf, scanf, cin, cout, while, for, switch, struct, return і т.д.

Слайд 20

Директиви препроцесора

Препроцесор - це програма, яка опрацьовує директиви. Директиви препроцесора - це

Директиви препроцесора Препроцесор - це програма, яка опрацьовує директиви. Директиви препроцесора -
команди компілятора відповідної мови програмування, які виконуються на початку компіляції програми. Директиви мови C/С++ починаються із символу #.
Директива # include означає, що до програми необхідно приєднати програмний код із зазначеного після неї файлу.
Файли, які приєднують директивою #include, називаються файлами заголовків (header-файлами, бібліотеками).
Щоб приєднати модуль до програми користувача, директиву препроцесора необхідно зазначити на початку програми так:
#include <назва файлу.розширення>
або так:
#include "шлях до файлу\назва файлу.розширення"

Слайд 21

Наприклад:
#include
для підключення бібліотеки зі стандартними математичними функціями,
або #include "d:\stud\MyBib.h"
для

Наприклад: #include для підключення бібліотеки зі стандартними математичними функціями, або #include "d:\stud\MyBib.h"
підключення власного створеного бібліотечного файлу.
Увага! Згідно зі стандартом ISO/ANSI файли заголовків для С++ у директиві #include в деяких середовищах програмування деякі бібліотеки прийнято записувати без розширення, наприклад #include , #include . Файли заголовків мови С, які використовуються у С++ - програмах, починаються з літери с, наприклад #include .

Слайд 22

Директива #define має подвійне значення.
По-перше, вона може задати стале значенню (оголошує сталу).

Директива #define має подвійне значення. По-перше, вона може задати стале значенню (оголошує
Наприклад, якщо у програмі задано:
#define N 25
То N під час виконання програми матиме значення 25.
По-друге, вона дає змогу описати макроси - короткі команди (переозначити команди) чи записати функції: #define D{a, b, с) ((b) * (b) - 4 * (а) * (с))
Тепер скрізь для обчислення дискримінанта замість команди d=b*b-4*a*c можна записувати d = D(a, b ,с)
Директива #undef скасовує дію директиви #define:
#define D(a,b,c) ((b) * (b) - 4 * (а) * (с))
#undef D
#define D(a,b,c) ((a) * (b) * (c))

Слайд 23

Головна функція

Головна функція, яка має бути у кожній програмі - це функція

Головна функція Головна функція, яка має бути у кожній програмі - це
вигляду:
int main(void)
{
тіло функції з командою return 0;
}
або
main()
{
тіло функції з командою return 0;
}
Ключове слово void означає, що функція не залежить від параметрів, його записувати не обов'язково.

Слайд 24

Головна функція

або
void main()
{
тіло функції;
}
Така функція називається функцією main() типу void. Вона

Головна функція або void main() { тіло функції; } Така функція називається
не повертає у програму жодних значень, тому команду return писати не треба.

Слайд 25

Коментар

Коментар - це фрагмент тексту програми, який слугує для пояснення призначення програми

Коментар Коментар - це фрагмент тексту програми, який слугує для пояснення призначення
чи окремих команд і не впливає на виконання команд. Його записують так:
//текст коментарю
або так:
/* текст коментарю */
У першому випадку коментар має бути або у кінці рядка, або єдиним у рядку. Другий спосіб більш універсальний: коментар можна записати будь-де, не розриваючи лексем.

Слайд 26

Стандартний вигляд програми

// коментарі
#include <назва бібліотечного файла>
int main()
{
<тіло функції>;
return 0; //

Стандартний вигляд програми // коментарі #include int main() { ; return 0;
або return (0);
}

Слайд 27

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

/*Виведення

Приклад простої програми, виконання якої дозволить отримати на екрані монітора рядок тексту
рядка тексту*/
#include
main()
{
printf("\nЛаскаво запрошуємо на навчання в НУБіП!\n");
return 0;
}

Слайд 28

Функція виведення даних printf
printf ("Рядок Форматів", об'єкт 1, об'єкт 2, ...,

Функція виведення даних printf printf ("Рядок Форматів", об'єкт 1, об'єкт 2, ...,
об'єкт n);
Рядок Форматів складається з наступних елементів:
керуючих символів;
тексту, представленого для безпосереднього виведення;
форматів, призначених для виведення значень змінних різних типів.
Об'єкти можуть бути відсутніми.
Керуючі символи не виводяться на екран, а керують розташуванням символів, що виводяться. Відмінною рисою керуючого символу є наявність зворотного слеша '\' перед ним.
Текст виводиться у подвійних лапках.
Формати потрібні для того, щоб вказувати вид, в якому інформація буде виведена на екран. Відмінною рисою формату є наявність символу відсоток '%' перед ним.

Слайд 29

Команди форматування (специфікатори формату) для printf ()

Команди форматування (специфікатори формату) для printf ()

Слайд 30

Основні керуючі символи

'\ n' - новий рядок;
'\ t' - горизонтальна табуляція;
'\ v'

Основні керуючі символи '\ n' - новий рядок; '\ t' - горизонтальна
- вертикальна табуляція;
'\ b' - повернення на символ;
'\ r' - повернення на початок рядка;
'\ a' - звуковий сигнал.

Слайд 31

Наприклад,
int main()
{
printf ("Celebration:%c %d %s\n", ‘s’, 22,” of September!");
return

Наприклад, int main() { printf ("Celebration:%c %d %s\n", ‘s’, 22,” of September!");
0;
}
призводить до результату
«Сelebration: s 22 of September!».

Слайд 32

Типи даних

Типи даних

Слайд 33

Типи даних(продовження)

Типи даних(продовження)

Слайд 34

Функція введення даних scanf()

Функція введення даних з клавіатури scanf() виконує читання даних,

Функція введення даних scanf() Функція введення даних з клавіатури scanf() виконує читання
що вводяться з клавіатури, перетворює їх у внутрішній формат і передає функції. При цьому програміст задає правила інтерпретації вхідних даних за допомогою специфікацій рядка формату.
Загальна форма запису функції scanf()
scanf ("Рядок форматів", адреса змінної1, адреса змінної2, ...);
Рядок форматів аналогічний функції printf().
Для формування адреси змінної використовується символ амперсанд '&':
Адреса = &об'єкт
Рядок форматів і список аргументів для функції обов'язкові.

Слайд 35

Арифметика мови С

Арифметика мови С

Слайд 36

Програма знаходить суму двох чисел

/* Програма знаходження суми */
#include
main()
{
int d1, d2,

Програма знаходить суму двох чисел /* Програма знаходження суми */ #include main()
sum; /* Об'ява змінних*/
printf("Ввести перше число:"); /* Підказка */
scanf("%d",&d1); /* Прочитати ціле */
printf("Ввести друге число:"); /* Підказка */
scanf("%d",&d2); /* Прочитати ціле */
sum=d1+d2; /* Присвоїти суму */
printf("Сума дорівнює %d",sum); /*Вивести суму */
return(0); /* Програма закінчилася успішно */
}

Слайд 37


Усі арифметичні операції є двомісними. Результат ділення двох цілих чисел також

Усі арифметичні операції є двомісними. Результат ділення двох цілих чисел також буде
буде ціле число (7/4=1, 17/18=0).
Операцію обчислення залишка частки можна виконувати тільки з цілими числами.
У мові С обчислення арифметичного виразу здійснюються за порядком, який відповідає правилам старшинства операцій

Слайд 38

Операції присвоєння

У мові С передбачено декілька операцій присвоєння.
c=c+3; або c+=3;
Будь-який оператор

Операції присвоєння У мові С передбачено декілька операцій присвоєння. c=c+3; або c+=3;
виду
змінна=змінна операція вираз;
може бути записаний у вигляді
змінна операція = вираз;

Слайд 39

Бібліотека математичних операцій

sqrt(x) –знаходження кореня числа х
tan(x) – тангенс числа

Бібліотека математичних операцій sqrt(x) –знаходження кореня числа х tan(x) – тангенс числа
х
sin(x) – синус числа х
cos(x) – косинус числа х
log(x) – логарифм числа х
abs(x) – модуль числа х або fabs(x)
pow(x,y) - піднесення числа х до степені у

Слайд 40

Приклад

#include
#include
int main()
{
int a1=2, a2; /* Об'ява змінних*/
float b1,b2,rez;
a2=5;
printf("Ввести перше

Приклад #include #include int main() { int a1=2, a2; /* Об'ява змінних*/
число:"); /* Підказка */
scanf("%f",&b1); /* Прочитати дійсне число */
printf("Ввести друге число:"); /* Підказка */
scanf("%f",&b2); /* Прочитати дійсне число */
rez=(b1*a2+a1*sin(b2))/log(b1-b2); /* Обчислення, якщо b1>b2*/
// rez=(b1*a2+a1*sin(b2))/log(abs(b1-b2));
printf(“Результат дорівнює %f",rez); /*Вивести результат */
return 0; /* Програма закінчилася успішно */
}

Слайд 41

Підключення української мови

Підключення української мови

Слайд 42


Windows-1251 (також вживаються назви Win1251, CP1251) — кодування символів) — кодування символів, що є стандартним 8-бітовим

Windows-1251 (також вживаються назви Win1251, CP1251) — кодування символів) — кодування символів,
кодуванням для всіх локалізованих українських і російських версій Microsoft Windows. Користується досить великою популярністю.

Слайд 43


ASCII(від назви Американський стандартний код для інформаційного обміну, англ. American Standard

ASCII(від назви Американський стандартний код для інформаційного обміну, англ. American Standard Code
Code for Information Interchange) в обчислювальній техніці — система кодів, у якій числа від 0 до 127 включно поставлені у відповідність літерам, цифрам і символам пунктуації.
ASCII (1963 рік) була розроблена для кодування символів, коди яких розміщувалися в 7 біт (128 символів; 2^7 = 128); при цьому старший 7-й біт (нумерація з нуля) був використаний для контролю помилок, що виникли при передачі даних. Потім - кодування було розширено до 256 символів (28 = 256); коди перших 128 символів не змінилися. Такий 8-бітний варіант коду називають розширеним ASCII.
Система широко використовується для зберігання тексту і передачі інформації між комп‘ютерами.

Слайд 44

Таблиця ASCII (кодиування Windows-1251)

Таблиця ASCII (кодиування Windows-1251)

Слайд 46

Приклад 1

Написати програму, яка обчислює суму двох цілих чисел

Приклад 1 Написати програму, яка обчислює суму двох цілих чисел

Слайд 47


#include
int main()
{int x,y;
printf("\n Calculate sum: ");
printf("\nInput x=");
scanf("%d",&x);
printf("\nInput y=");
scanf("%d",&y);
printf("%d+%d=%d",x,y,x+y);
return 0;
}

#include int main() {int x,y; printf("\n Calculate sum: "); printf("\nInput x="); scanf("%d",&x);

Слайд 49


#include
int main()
{int x,y;
printf("\n Calculate sum: ");
printf("\nInput x=");
scanf("%d",&x);
printf("\nInput y=");
scanf("%d",&y);
printf("%5d+%5d=%7d",x,y,x+y);
return 0;
}

#include int main() {int x,y; printf("\n Calculate sum: "); printf("\nInput x="); scanf("%d",&x);

Слайд 51


printf("%05d+%05d=%07d",x,y,x+y);

printf("%05d+%05d=%07d",x,y,x+y);

Слайд 52


#include
#include
int main()
{
int x,y;
printf("\n Calculate sum: ");
scanf("%d%d",&x,&y);
printf("%d+%d=%d",x,y,x+y);
return 0;
}

#include #include int main() { int x,y; printf("\n Calculate sum: "); scanf("%d%d",&x,&y); printf("%d+%d=%d",x,y,x+y); return 0; }

Слайд 54


#include
#include
int main()
{ int x,y;
printf("\n Calculate sum: ");
scanf("%d+%d",&x,&y);
printf("%d+%d=%d",x,y,x+y);
return 0;
}

#include #include int main() { int x,y; printf("\n Calculate sum: "); scanf("%d+%d",&x,&y); printf("%d+%d=%d",x,y,x+y); return 0; }

Слайд 56

Формат виведення дійсних чисел

float b=323.765381;
printf("%f\n",b);
printf("%5.3f\n",b);
printf("%3.10f\n",b);
printf("%.4f\n",b);
printf("%.5f\n",b);
printf("%3.0f\n",b);

Формат виведення дійсних чисел float b=323.765381; printf("%f\n",b); printf("%5.3f\n",b); printf("%3.10f\n",b); printf("%.4f\n",b); printf("%.5f\n",b); printf("%3.0f\n",b);

Слайд 57

Приклад 2

 

Приклад 2

Слайд 59


#include
#include
int main()
{int a=2;
float x,y,t1;
printf("\nInput x=");
scanf("%f",&x);
printf("Input y=");
scanf("%f",&y);
t1=1/a*(x*x+2)*(5*y-log(x));

#include #include int main() {int a=2; float x,y,t1; printf("\nInput x="); scanf("%f",&x); printf("Input y="); scanf("%f",&y); t1=1/a*(x*x+2)*(5*y-log(x));

Слайд 60

printf("%f",t1);
return 0;
}

printf("%f",t1); return 0; }

Слайд 61


t1=1.0/a*(x*x+2)*(5*y-log(x));

t1=1.0/a*(x*x+2)*(5*y-log(x));