Садржај
3 Променљиве, подаци, типови
3.5 Текстуални подаци (стрингови, ниске)
4 Гранања
4.7 Гранања - разни задаци
5 Петље
5.1 Врсте петљи
5.2 Наредбе break и continue
6 Статички методи
6.4 Корист од метода
7 Низови
7.2 Низови - вежбање
8 Матрице
9 Кориснички дефинисани типови
10 Фајлови

Реални бројеви

У приручнику Увод у програмирање у програмском језику C# погледајте поглавља 2.1 и 2.2 (стране 15-21).


Историјски најстарија и највише коришћена врста података који се користе у рачунару су бројеви. Постоји више различитих начина представљања бројева у рачунару, па зато имамо и више типова бројчаних података. Не само то, у многим језицима постоји неколико типова који служе само за представљање целих бројева и неколико типова за представљање реалних бројева. Тиме нам је омогућена рационалнија употреба рачунара, јер избором типа утичемо на брзину и прецизност рачунања и заузеће меморије (неки типови података омогућавају брже, а неки прецизније рачунање; за неке је портебно мање, а за неке више меморије).

Типови реалних бројева:

За рачунање са реалним бројевима (као што је речено у приручнику), користе се три типа податка: float, double и decimal. Сваки од тих типова на нешто другачији начин представља реалне бројеве у рачунару. Ти начини представљања се разликују по томе колико места у меморији рачунара заузимају за један реалан број, колико брзо изводе рачунске операције над тим бројевима, колико велике бројеве могу да представе и колико прецизно могу да их представе. Захваљујући томе, сваки од ових типова је погоднији од осталих за одређену намену.

Тип float је најкомпактнији од наведених - потребна су само 4 бајта за запис реалног броја у овом формату, али овај формат садржи само 6 до 7 значајних цифара. Обично се користи када у програму користимо много реалних бројева и желимо да рачунања са њима буду што бржа а довољна је ограничена тачност. Типична таква ситуација су трансформације слике, односно разни проблеми рачунарске графике.

Један податак типа double заузима 8 бајтова, а садржи 16 до 17 значајних цифара. Рачунарска меморија је током низа година постајала све јефтинија и доступнија у великим количинама, па је тип double временом постао тип опште намене, што значи да је он начешће у употреби у разним проблемима у којима се користе реални бројеви. Због тога ћемо ми скоро искључиво користити овај тип за представљање реалних бројва.

Тип decimal заузима чак 16 бајтова за један податак и садржи 28 до 29 значајних цифара. Типична упортеба овог типа је у финансијским израчунавањима, јер је овај тип додатно прилагођен да се избегну грешке заокруживања, какве нису допуштене у рачунању са новцем.

Шта су значајне цифре?

Значајне цифре су оне које остају када из записа неког броја изоставимо водеће и завршне нуле.

У експоненцијалном запису броја значајне цифре не могу да се изоставе (без заокруживања, односно губитка тачности), а остале могу. Пошто рачунари у суштини баратају експоненцијалним записима реалних бројева, прецизност записа се изражава бројем значајних цифара а не бројем децимала. Ево неколико примера:

Значајне цифре

број

значајне цифре

број значајних цифара

експоненцијални запис

\(3~000\)

\(3\)

1

\(3 \cdot 10^3\)

\(210\)

\(21\)

2

\(2.1 \cdot 10^2\)

\(27~004\)

\(27004\)

5

\(2.7004 \cdot 10^4\)

\(570.001\)

\(570001\)

6

\(5.70001 \cdot 10^2\)

\(0.01\)

\(1\)

1

\(1 \cdot 10^{-2}\)

\(0.000~030~8\)

\(308\)

3

\(3.08 \cdot 10^{-5}\)

Записивање реалних бројева

Начин записивања реалних бројева је скоро сасвим исти без обзира на коришћени тип. Постоје следећи делови у запису реалног броја:

  • Знак (плус или минус). Знак није обавезан, а ако се не наведе подразумева се плус.

  • Целобројни део, представљен низом цифара.

  • Децимална тачка и разломљени део. Ако је разломљени део нула, онда тачка и разломљени део могу да се изоставе.

  • Слово E или e и експонент, који је означен или неозначен цео број. Ако је експонент нула, овај део (заједно са словом e) такође може да се изостави.

Као што је објашњено у приручнику, експоненти нам и у програмирању (као и у математици) омогућавају скраћени запис бројева са малим бројем значајних цифара. На пример 1e6 значи \(1 \cdot {10}^6 = 1~000~000\), а -2.7e-9 значи \(-2.7 \cdot {10}^{-9} = -0.0000000027\).

Можда сте на калкулаторима видели и записе попут .23 или -.51. Запис .23 има исто значење као \(0.23\), а запис -.51 исто као \(-0.51\). Другим речима, када је целобројни део једнак 0 и постоји разломљени део, онда се та нула (која представља цели део) може изоставити и тиме уштедети једно место у приказу. Овакав начин писања је распрострањен на енглеском говорном подручју, па је усвојен и у програмским језицима.

Када се узме у обзир све речено, видимо да се једна иста вредност може записати на више начина. На пример, вредност 3 може да се смести у променљиву x типа double на било који од следећих начина:

x = 3;
x = 3.0;
x = +3;
x = +3.0;
x = 3e0;
x = 3.0e0;
x = +3e0;
x = +3.0e0;
x = 3E0;
x = 3.0E0;
x = +3E0;
x = +3.0E0;
x = 0.3e1;
x = .3e1;
x = +0.3e1;
x = +.3e1;
x = 0.03e2;

као и на многе друге. Сви ови „људски” записи се своде на један исти бинарни код, односно машински запис броја 3 као податка типа double. Наравно, број 3 се као податак неког другог типа, на пример float интерно записује (кодира) другачије.

Из овог примера се види да реални бројеви не морају да имају разломљени део, тј. и вредности које су целобројне (у математичком смислу) се могу сместити у променљиву типа double. Када у програмирању кажемо за неку вредност да је реална, то се односи на начин представљања (један од три поменута типа, а подразумева се double), а не на постојање разломљеног дела.

Операције са реалним бројевима

Поновимо укратко најважније чињенице.

Основне операције се означавају овим симболима: + (сабирање), - (одузимање), * (множење) и / (дељење).

Множење и дељење имају међусобно исти приоритет, а редослед рачунања је слева на десно (каже се да су оператори * и / лево асоцијативни). Зато, на пример израз 200/4/2 има вредност 25 (а не 100), а израз 200/4*2 има вредност 100 (а не 25).

Сабирање и одузимање такође имају међусобно исти приоритет, али нижи од приоритета множења и дељења (као и у математици). Оператори + и - су такође лево асоцијативни, па је нпр. вредност израза 10-4+2 једнака 8.

Заграде се користе на исти начин као у математици. На пример, израз (3+2)*4 има вредност 20, а израз 3+2*4 има вредност 11.

Краћи запис при додељивању у неким ситуацијама

У алгоритмима често вредност неке величине мењамо користећи претходну вредност те величине. На пример, променљиву zbir повећавамо за вредност променљиве broj. У таквим ситуацијама, уобичајени запис

zbir = zbir + broj;

можемо да скратимо овако:

zbir += broj;

Слично важи и за остале операције, а не само за сабирање. Тако уместо x = x - y; можемо да пишемо x -= y;, уместо x = x * y; можемо да пишемо x *= y; итд.

Додатно, када желимо да вредност неке променљиве x увећамо за 1, осим x = x + 1; и x += 1; можемо да пишемо и x++;. Слично томе, када желимо да вредност неке променљиве x умањимо за 1, осим x = x - 1; и x -= 1; можемо да пишемо и x--;.

Математичке функције

У програмима се могу користити математичке функције као што су Math.Sqrt (квадратни корен), Math.Abs (апсолутна вредност), Math.Min (мањи од два броја) и Math.Max (већи од два броја). Још неке математичке функције су наведене у приручнику, мада их нећемо користити у овом курсу.

Ако још нисте, проучите примере записивања израза дате у приручнику. Нарочито обратите пажњу на то да су при записивању неких израза у прoграмима неопходне заграде иако у математичком запису тих израза нема заграда. На пример:

  • Израз \(a \over {b-c}\) се у програмирању записује као a / (b - c), а не као a / b-c

  • Израз \(a \over {b \over c}\) се у програмирању записује као a / (b / c), а не као a/b/c

  • Израз \(\sqrt{|x| + 1}\) се у програмирању записује као Math.Sqrt(Math.Abs(x)+1)

итд.

Следи квиз у коме ћете потврдити да умете правилно да читате и записујете математичке изразе на језику C#, а затим и задаци у којима ћете такве изразе употребити у програмима.

(Created using Swinx, RunestoneComponents and PetljaDoc)
© 2022 Petlja
A- A+