2. Променливи
Типове данни и променливи
За да се обработват данни, те трябва да се съхраняват в паметта. В същото време тези данни трябва
справя се някак. Обикновено хората се обръщат един към друг по име, по същия начин в програмирането: всяка клетка от паметта (или група от клетки) получава собствено име. Използвайки това име, можете да четете информация от клетка и да записвате нова информация там.
Променливае клетка в компютърната памет, която има име и съхранява някаква стойност. Стойността на променлива може да се промени по време на изпълнение на програмата. Когато нова стойност бъде записана в клетка, старата стойност се изтрива.
От гледна точка на компютър, всички данни в паметта са числа (по-точно набори от нули и единици). Но вие (и компютърът) знаете, че целите и дробните числа се обработват по различен начин. Следователно във всеки език за програмиране има различни типове данни, които се обработват с помощта на различни методи. Например,
•integerпроменливи – типint(от англ.integer –integer), заемат 4 байта в паметта;
•реалнипроменливи, които могат да имат дробна част (типfloat- от английскотоfloating point -floating point), заемат 4 байта в паметта
•символи(типchar- от английскиcharacter- знак), заемат 1 байт в паметта

Изчисляване на сумата от две числа (вход и изход)
Пример.Въведете две цели числа от клавиатурата и изведете сумата им на екрана.
Нека запишем решението на задачата на език C.

• Програмата най-често се състои от 4 части:
o въвеждане на изходни данни;
o обработка на данни (изчисления);
o изходен резултат.
• Преди да въведете данни, трябва да изведете подкана на екрана (в противен случайкомпютър ще
изчакайте въвеждането на данни и потребителят няма да разбере какво иска машината от него).
• Знаците\nвъв функциятаprintfозначават прескачане в началото на нов ред.
• Използвайте функциятаscanfза въвеждане на данни.

Форматът на въвеждане е низ в кавички, който изброява един или повече
входни формати:
%dвъведете цяло число (променлива от типint)
%fвъведете реално число (променлива от типfloat)
%cвъвеждане на един символ (променлива от типchar)
aстойност на променливаa
списък. Освен това типът на променливите трябва да съвпада с посочения: например акоa
иb–целочислени променливи, тогава следните извиквания на функции са грешни
scanf ( "%d%d", &a );къде да напиша второто въведено число?
scanf ( "%d%d", &a, &b, &c );няма зададен формат за променливаc
scanf ( "%f%f", &a, &b );не можете да въвеждате цели променливи по тегло
• За изчисления използвайтеоператор за присвояване,, в който o отдясно на знака за равенство е аритметичният израз, който трябва да се изчисли
o вляво от знака за равенство е името на променливата, в която искате да запишете резултата
c = a + b;// запишете сумата от a и b в c
• За да покажете числа и стойности на променливи на екрана, използвайте функциятаprintf

oПърво идва символен низ - изходен формат - в който можете да използвате
%dцелочислен изход
%fотпечата реално число
%sизвежда един символ
%sизходен символен низ
\nотидете в началото на нов ред
всичкоостаналите знаци (с изключение на някои други специални команди) просто се отпечатват на екрана.
o Един форматиращ низ не е достатъчен: той ви казва къде да изведете данни, но
не пише откъде да ги вземем. Следователно, след запетая, след изходния формат, трябва да поставите списък с числа или променливи, чиито стойности трябва да бъдат показани, докато можете веднага да извършвате изчисления.
printf ( "Резултат: %d + %d = %d \n", a, 5, a+5 );
o Точно както при функциятаscanf, трябва да се уверите, че типовете и броят на променливите и изходните формати съвпадат.
Компоненти на аритметични изрази
Аритметичните изрази от дясната страна на оператора за присвояване могат да съдържат
• цели и реални числа (при реалните числа целите и дробните части са разделени
точка, а не запетая, както е обичайно в математиката)
• признаци на аритметични действия
%по модул
• извиквания към стандартни функции
abs(i)модул на цяло числоi
fabs(x)модул с реални числаx
sqrt(x)корен квадратен от реално числоx
pow(x,y)оценяваxна степенy
• скоби за промяна на реда на действията
Характеристики на аритметичните операции
Когато използвате деление, помнете това
Когато разделяте цяло число на цяло число, остатъкът от делението се изхвърля, така че7/4ще бъде равно на 1. Ако трябва да получите реално число и да не изхвърлите остатъка, дивидентът или делителят трябва да бъдат преобразувани в реална форма. Например:
x = i / 4;// x=1, цяло число, разделено на цяло число
x = i / 4.;// x=1,75, цяло число, разделено на дробно
x =(float) i / 4;// x=1,75, десетичен знак, разделен на цяло число
n = 7. / 4.;// n=1, резултатът се съхранява в
Най-голямата трудност от всички действия е вземането на остатъка. Ако трябва да изчислите остатъка след разделянето на променливатаaна променливатаbи да запишете резултата в променливатаostatok,, тогава операторът за присвояване изглежда така:
Приоритет на аритметичните операции
В езиците за програмиране аритметичните изрази се записват в един ред,
следователно е необходимо да се знаеприоритетът(старшинството) на операциите, тоест последователността на тяхното изпълнение. Бягай първи
• операции в скоби, след това...
• извиквания на функции, след това...
• умножение, деление и остатък от делене, отляво надясно, след това...
• събиране и изваждане, отляво надясно.

Оператори за специално присвояване
В програмирането често се използват донякъде странни оператори за присвояване,
Ако смятате това за уравнение, то е безсмислено от гледна точка на математиката. Въпреки това, от гледна точка на компютърните науки, този оператор служи за увеличаване на стойността на променливатаiс единица.
Буквално това означава: вземете старата стойност на променливатаi, добавете единица към нея и запишете резултата в същата променливаi.
Увеличаване и намаляване
Езикът C дефинира специални оператори за бързо увеличаване с единица (increment)
което е еквивалентно на оператора за присвояване
и бързо намаляване с единица (декремент)
което е еквивалентно на оператора за присвояване
Има известна разлика между първата и втората форма на тези оператори, но само когато са част от по-сложни оператори илиусловия.
Съкратени означения за аритметични изрази
Ако искаме да променим стойността на някаква променлива (да вземем старата й стойност, нещо
да се направи с него и да се запише резултатът в същата променлива), е удобно да се използва съкратената нотация на аритметични изрази:

Първият параметър при извикване на функциитеscanfиprintfтрябва да бъде символ
низ, указващ входния или изходния формат. За функциятаscanf, която извършва въвеждане, просто задайте един от форматите%d,%fили%c, за да въведете съответно цяло число, реално число или знак. В същото време форматиращият низ във функциятаprintfви позволява да контролирате изхода на екрана, а именно да зададете размера на полето, което е запазено за дадено число.
По-долу са дадени примери за форматиране при показване на цяло число1234. Да видиш
полето, което е запазено за числото, то е ограничено до лявата и дясната скоба.


За символен изход се използват същите техники за форматиране, но форматът%dсе заменя с%c.
Могат да се използват три формата за извеждане (и въвеждане) на реални числа:%f,
%eи%g. Таблицата показва примери за използване на формата%f.

Форматът%eсе използва в научните изчисления за показване на много големи или много малки
малки числа, като размера на атом или разстоянието до слънцето. С представяне на число в така нареченатастандартна форма(със специалнамантисаиред). Например числото123.45може да бъде записано в стандартна форма като 123.45 = 1.2345×102. Тук1.2345е мантисата (винаги е в диапазона от 1 до 10),и 2 е редът (мантисата се умножава по 10 на тази степен). Когато извеждате във формат%e, можете също да посочите броя на позициите, които са предназначени за извеждане на число, и броя на цифрите в дробната част на мантисата. Експонентата винаги се определя като две цифри, предшествани от букватаeи знака за експонента (плюс или минус).


Форматът%gсе използва за премахване на допълнителни нули в края на дробната част
числа и автоматично изберете формата (стандартен или с фиксирана точка). За много големи или много малки числа се избира форматът с плаваща запетая (в стандартна форма). В този формат можете да посочите общия брой позиции на число и броя на значещите цифри.

В най-простите програми всички команди се изпълняват една след друга последователно.
Ето как се изпълняватлинейнитеалгоритми. Въпреки това, често е необходимо да изберете един или друг вариант на действие в зависимост от някои условия: ако условието е вярно, действайте по един начин, а ако е грешно, по друг начин. За целта се използваталгоритми за разклоняване, които в езиците за програмиране се представят катоусловни оператори. В езика C има два вида условни изрази:
• операторif - elseза избор от две опции
• оператор за множествен изборswitchза избор от множество опции
Условен операторif - else
Пример.Въведете две реални числа от клавиатурата и определете най-голямото от тях.
Според условието на задачата трябва да изведем един от двата варианта за отговор: ако първото число
по-голямо от второто, тогава го покажете, ако не, тогава второто число. По-долу са показани два варианта за решаване на този проблем: при първия резултатът веднага се показва на екрана, а при втория най-големият отдве числа първо се записват в третата променливаMax.

• Условният оператор има следната форма:

• Тази нотация е единичен израз, така че между скобите, които завършват
блок "if"и думатаelseне може да съдържа никакви изрази.
• След думатаelseneverNOTсе задава условие - блокът “otherwise” се изпълнява, когато
където основното условие, посочено в скоби следifе невярно.
• Ако има само един оператор в блока "if" или в блока "else", тогава фигурните скоби могат да бъдат пропуснати.
• Можете да използвате знаци за логически отношения в условието