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", тогава фигурните скоби могат да бъдат пропуснати.

• Можете да използвате знаци за логически отношения в условието