Лекції з програмування:
Структура алгоритмів.Лінійний алгоритм
Циклічні алгоритми 05.10
Алгоритмом цикл. Структури – назив. алгоритм, який виконується декілька разів.
Цикл – група операцій, яка виконується певну к-сть разів.
Класифікація циклу:
З передумовою;
З після-умовою;
За місцем розташування;
за способом контролю закінчення циклу;
К-сть повторень циклу не відома;
Задача 1:Дано масив.Скласти схему алгоритму обчислення суми і добутку елементів цього массиву.
4) обчислення проміжних значень S і P;
Найпростіші алгоритми та програми на мові програмування Сі 09.10
Кожна ф-я повинна мати набір параметрів який може бути пустим.Тіло ф-ї це блок, послідовність визначень описів і операторів, що взяті в фігурні дужки.
Препроцесор – це програма, що опрацьовує текст програми до її компіляції.
Директива препроцесора - це команда компілятора, яка виконується на початку програми.Директива поч. з символа решітки.
після директив препроцесора крапка з комою не ставляться!
Директиви:
#include.
#define – вказує правила заміни в тексті. Напр.: #define N 25;
Макрос – коротка команда, ф-я.
#include <stdio.h>
#include <math.h>
int main(){
sqrt(); - корінь числа.
}
Відлагодження програми – це такий процес, який полягає в знаходженні і усуненні помилок.
Помилки:
синтаксичні (порушені правила мови Сі). Може привести до того що компілятор буде знаходити неіснуючі помилки в інших місцях.
уявні
семантичні (виникають тоді коли не правильно використана семантика якоїсь конструкції, наприклад: передача параметрів ф-ї, які не відповідають її аргументам);
логічні (призводять до невірного результату).
Етапи створення виконуваного коду програми
Щоб забезпечити перетворення програмного коду на мові Сі у виконуваний файл – необхідно виконати наступні дії:
написати програму і зберегти її у файл;
скомпілювати код програми;
зв’язати об’єктний код основної програми отриманий в процесі компіляції з додатковим об’єктним кодом бібліотечних і користувацький ф-ї і таким чином скомпонувати єдину програму;
Основи мови Сі 12.10
Малі та великі латинські літери.
Арабські цифри.
Спец. символи (крапка, кома і т.д.).
Керуючі послідовності.
\t – горизонтальна табуляція;
\n - перехід на новий рядок
\v - вертикальна табуляція
\” - лапки
\’ - апостроф
\\ - символ
Ідентифікатори (назва, яку користувач надає об’єктам, наприклад: змінним, константам чи ф-ям).
Ключові слова (зарезервовані ідентифікатори, які використовуються для написання команд).
специфікатори типів
char, double, enum, float, int, long, short, struct, signed, unsigned, union, void, typedef.
кваліфікатори типів
const, volatile
класи пам’яті
auto, extern, register, static
для побудови операторів
break, continue, do, for, goto, if, return, switch, while, default, case, else, sizeof
Представлення данних у мові Сі.
Данні, значення, яких не змінюється в процесі виконання програми називаються константами.
Основні типи даних:
const b=286;
const short a=14;
const double c=5.5E7;
const d=”A”;
const E=”Hello”;
Типи даних
Розмір в байтах
Діапазон значень
Масив, вказівник 19.10
float x[10];
int y[20];
Вказівник - це змінна яка може містити … іншого об’єкта (ним може бути інша змінна, масив, функція, тощо…).
int * p;
char * c;
З допомогою Сі для ініціалізації вказівника можна використати один з двох способів:
Ініціалізація вказівника адресою існуючої змінної.int *p_i=&i.
Ініціалізація вказівника адресою динамічно виділеної пам’яті.
Обчислювання алгоритмів та їх реалізація на мові програмування Сі
Комбінація знаків операцій і операндів, результатом, якого є певне значення називається виразом. Знаки операції визначають дії, які повинні бути виконані над операндами. Кожен операнд у виразі може бути виразом. Значення виразу залежить від розташування знаків операції і круглих дужок у виразі, а також від пріоритету виконання операцій.
При обчисленні виразів, тип кожного операнда може бути перетворений до іншого типу. Перетворення типів можуть бути неявними, або явними (при виконанні операцій при введенні типів).
Операнд – це константа, літерал, ідентифікатор, виклик функції, індексний вираз, вираз вибору елемента, або більш складний вираз, сформований комбінацією операндів, знаків операції і круглих дужок.
Будь-який операнд, який має константне значення називається константним виразом.
Кожен операнд має тип.
Якщо в якості опернда використовується константа, то йому відповідає значення і тип константи, що його представляє.
Операції Сі
За к-стю операндів, що беруть участь в операції, операції поділяються на:
унарні (1 операнд);
бінарні (2 операнди);
тернарні (3 операнди).
Унарні операції в Сі
* Унарні операції виконуються з права на ліво
Арифметичні заперечення:
~ – побітове логічне заперечення;
! – логічне заперечення;
* – розадресація (доступ до значення через вказівник);
& - обчислення адреси;
+ - унарний плюс;
++ - збільшення на одиницю (інкремент);
-- - зменшення на одиницю (декремент).
sizeof(вираз) – обчислює розмір байта;
Якщо знак операції записаний перед операндом (наз. префіксна форма), то зміна операнда відбувається до його використання у виразі.
Якщо знак операції записаний після операнда (наз. постфіксна форма), то операнд спочатку використовується у виразі, а потім відбувається його зміна.
Бінарні операції
Мультиплікативні (множення, ділення, залишок від ділення).
Адитивні (додавання, віднімання).
Операції зсуву:
<< - зсув вліво;
>> - зсув вправо.
Операції відношення (менше, більше, менше-рівно, більше-рівно, рівно, не рівно).
Порозрядні операції:
& - порозрядне і;
| - порозрядне або;
^ - порозрядне виключне або;
Логічні операції (і, або).
Операції присвоєння (присвоєння, множення з присвоєнням, додавання з присвоєнням, зсув з присвоєнням, залишок від ділення з присвоєнням, …).
Тернарна операція
В Сі є тільки одна тернарна операція – це умовна операція.
операнд1 ? операнд2 : операнд3 ;
Операнд1 може бути цілого типу, плаваючого типу або вказівник. Він оцінюється з точки зору його рівності нулю. Якщо опернад1 не рівний нулю то обчислюється операнд2. і його значення є результатом операції. Обчислюється або операдн2 або операнд3.
Пріорітети оперцій і порядок обчислення
Функції вводу-виводу 23.10
PRINTF()
int printf(const char format [, argument]…);
↑ форматований вивід аргументів. Формат виводу може включати керуючі символи, текст, спеціфікатор формату.
Спец. формату:
%[flags][width][.precision][{h|l|I64|L}]type
flags:
«-» - вирівнювання по лівому краю;
«+» - додатні – зі знаком плюс (+5, -5);
«#» - виводить спочатку 0 для %0, 0х дл %х;
«0» - заповнює поле нулями замість пробілів.
« » - дані зі знаком друкуються з пробілом, якщо вони додатні і з мінусом, ящо від’ємні (_5, -5).
width:
мінімальна ширина поля
.preasion:
точність для %е, %Е, %f, задається кількість цифр, які будуть виведені справа від числа
%g, %G - максимальне число символів , дія цілих задається мінімальне число цифр
h – використовується для кодування short, unsigned short
l – для long, unsigned long
I64 для – int 64;
L для long double;
type – символьне перетворення
i - десяткове ціле число;
u - десяткове ціле з знаком;
o – беззнакова вісімкова форма;
х – без знакова шістнадцяткова форма;
с – окремий символ;
s – рядок символів;
e – число з рухомою комою експоненціальне представнення;
f – число з рухомою комою;
g – використовується %е або %%f (%e –використовується, ящо показник експоненти < 4 );
p – вказівник;
Керуючі та спеціальні символи:
\n – новий рядок;
\t – табуляція;
\\ - \ ;
\’ – ‘.
SCANF()
int scanf(const char, format [, argument]…);
Специфікатор фомату:
%[*][width][{h|l|I64|L}]type
* ігнорує наступний тип;
width – задає максимальну ширину поля
h – для %hd, %hi для зберігає значення в short %ho, % hx, % hu – usigned short;
l - %ld, %li – дані збережуться в long %lo, %lx, %lu – тип unsigned long%le, %lf, %lg – тип double
L – тип long double.
type – символи перетворення
d, i – десяткове ціле зі знаком
n – ціле без знака
o – вісімкове ціле зі знаком
x – шістнадцяткове ціле зі знаком
с – символ
s – рядок символів
e, f, g – число з рухомою комою
р - вказівник
Приклад:
#include …… …double res, x1;printf(“Enter x1:”);scanf(“%lf”, &x1);if(x1>=0) res=sqrt(x1);else res=sqrt(-x1);
printf(“Square root is %tf\n”, res);
return 0;
}
В-в:Enter x1: -5.6Square root is 2.366432
Оператори
Оператори виконують дії, що мають здійснюватись к-ром під час виконання програм. Всі оператори мови Сі поділяються:
умовні оператори;
оператор циклу;
Оператори в програмі можуть об’єднуватись в сладені оператори.
Будь-який оператор може бути позначений міткою, що складається з імені та наступної за ним двокрапки.
* Всі оператори мови Сі (крім складених операторів) закінчуються крапкою з комою.
Порожні оператори – склад. тільки з крапки з комою, при викон. цього оператора нічого не відбувається. Використовується там, де за синтаксисом потрібний оператор, але по логіці програми він повинен бути відсутнім.
Оператор-вираз – це будь-який вираз, що завершується крапкою з комою. Дія такого оператора полягає в обчисленні виразу. Прикл.: x++ / a*=b / a=cos(b*5);
Складений оператор – це група операторів, обмежених або взятих в фігурні дужки.
{ [оголошення (діє тільки в цих фігурних дужках)]операто1……}
Оператори do, while, for 02.11.2012
Прості обчислювання задачі з масивами 30.11.2012
Масиви, як параметри функції
Коли функція повертає масив – типом функції потрібно оголосити вказівник на тип елемента масиву. Якщо масив використовують в якості параметра функції, то треба зазначити адресу початку масива.
float fun(int a[10]); float fun(int a[]);float fun(int * a);