Ïîìîãíè íè äà íàïðàâèì Uroci.net ïî - áîãàò! Äîáàâè óðîê
Êàòåãîðèè Äðóãè óðîöè Adobe Photoshop Adobe Illustrator Adobe Flash Adobe Fireworks DreamWeaver CSS è HTML Corel Draw Image Ready PHP SEO CMS Microsoft Windows Microsoft Word Microsoft Excel PowerPoint Microsoft Access Microsoft Publisher Linux Visual basic JavaScript Ajax 3ds Max Maya 3D C++
C++
Sound Forge Gimp SWiSH

Ñ++ ÷àñò.2 (Òèïîâå äàííè)

C++ » C++
fix3d   òðóäíîñò:    âèäÿí: 8096



2.2. Ïðîìåíëèâè

Ïðåäñòàâåòå ñè, ÷å Âè å äàäåíà çàäà÷à äà èç÷èñëèòå 2 íà ñòåïåí 10. Íàøèÿò ïúðâè îïèò áè ìîãúë äà èçãëåæäà òàêà:

#include <striam.h>

main() {
// a first solution
cout << 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2;
cout << "n";
return 0;
}

Íàïèñàíîòî ðàáîòè, âúïðåêè ÷å ùå íè ñå íàëîæè äà ïðåáðîèì äâà èëè òðè ïúòè äàëè ñìå çàïèñàëè êîíñòàíòàòà 2 òî÷íî 10 ïúòè. Ñàìî òîãàâà ùå áúäåì äîâîëíè. Íàøàòà ïðîãðàìà ïðàâèëíî äàâà îòãîâîð 1024.

Ñåãà îáà÷å, íè ñå íàëàãà äà èç÷èñëèì 2, ïîâäèãíàòî íà 17 ñòåïåí, à ñëåä òîâà íà 23. Íåïðèÿòíî å äà ïðîìåíÿìå ïðîãðàìàòà ñè âñåêè ïúò. Îùå ïî-ëîøî, èçãëåæäà ïîðàçèòåëíî ëåñíî äà ñå íàïðàâè ãðåøêà êàòî ñå ïîñòàâè åäíà äâîéêà â ïîâå÷å èëè ïî-ìàëêî. Îáà÷å, ïîíåæå ñìå âíèìàòåëíè, íèå èçáÿãâàìå ãðåøêèòå.

Íàêðàÿ íè ñå íàëàãà äà íàïðàâèì òàáëèöà, êîÿòî äà ñúäúðæà ñòåïåíèòå íà äâîéêàòà îò 0 äî 31. Àêî èçïîëçóâàìå ëèòåðàëíè êîíñòàíòè â äèðåêòíè êîäîâè ïîñëåäîâàòåëíîñòè ùå íè áúäàò íåîáõîäèìè 64 ðåäà îò ñëåäíèÿ âèä:

cout << "2 raised to the power of Xt";
cout << 2 * ... * 2;

êúäåòî Õ ùå ñå óâåëè÷àâà ñ åäèíèöà çà âñÿêà êîäîâà äâîéêà.

 òîçè ìîìåíò, à ìîæå áè è ïî-ðàíî, íèå îñúçíàâàìå, ÷å òðÿáâà äà èìà ïî-äîáúð íà÷èí. Êàêòî è íàèñòèíà èìà. Ðåøåíèåòî èçèñêâà âúâåæäàíåòî íà äâå ïîíÿòèÿ, êîèòî âñå îùå íå ñà ôîðìàëíî äåôèíèðàíè:

1. Ïðîìåíëèâè, êîèòî ïîçâîëÿâàò äà ñå ñúõðàíÿâàò è âúçñòàíîâÿâàò ñòîéíîñòè.

2. Ñúâêóïíîñò îò óïðàâëÿâàùè îïåðàòîðè, êîèòî ïîçâîëÿâàò ìíîãîêðàòíîòî èçïúëíåíèå íà ÷àñò îò ïðîãðàìíèÿ êîä. Íàïðèìåð, åòî åäèí âòîðè íà÷èí çà èç÷èñëÿâàíå íà 2 íà 10 ñòåïåí:

#include <stream.h>

main() {
// a second more general solution
int value = 2;
int pow = 10;
cout << value<< " raised to the power of "
<< pow << ": t";
for ( int i = 1, res = 1; i <= pow; ++i )
{ res = res * value;}
cout << res << "n";
return 0;
}

Îïåðàòîðúò, çàïî÷âàù ñ for, ñå íàðè÷à îïåðàòîð çà öèêúë: äîêàòî i å ïî-ìàëêî èëè ðàâíî íà pow, ñå èçïúëíÿâà òÿëîòî íà for, çàòâîðåíî âúâ ôèãóðíè ñêîáè. Öèêúëúò for ñå íàðè÷à ïîòî÷íî óïðàâëÿâàù îïåðàòîð.

value, pow, res è i ñà ïðîìåíëèâè, êîèòî ïîçâîëÿâàò äà ñå ñúõðàíÿâàò, ïðîìåíÿò è âúçñòàíîâÿâàò ñòîéíîñòè. Òå ñà òåìà íà ñëåäâàùèòå ïîäãëàâè. Ïúðâî, îáà÷å, íåêà ïðèëîæèì äðóãî íèâî íà îáîáùàâàíå íà ïðîãðàìàòà êàòî îòäåëèì ÷àñò îò ïðîãðàìàòà, êîÿòî èç÷èñëÿâà ñòåïåíòà íà âåëè÷èíàòà è äà ÿ äåôèíèðàìå êàòî îòäåëíà ôóíêöèÿ.

Âñÿêà çàäà÷à, êîÿòî èçèñêâà èç÷èñëÿâàíåòî íà íÿêàêâà ñòåïåí íà äàäåíà ñòîéíîñò, ñåãà ìîæå ïðîñòî äà èçâèêà pow() ñ ïîäõîäÿùî ìíîæåñòâî àðãóìåíòè. Èñêàíàòà òàáëèöà îò ñòåïåíè íà äâîéêàòà ñåãà ìîæå äà áúäå ïîëó÷åíà ïî ñëåäíèÿ íà÷èí:

Òàáëèöà 1.1 ïðåäñòàâÿ ðåçóëòàòà îò èçïúëíåíèåòî íà òàçè ïðîãðàìà.
Ñòåïåíè íà 2

0: 1
1: 2
2: 4
3: 8
4: 16

5: 32
6: 64
7: 128
8: 256
9: 512

10: 1024
11: 2048
12: 4096
13: 8192
14: 16384

Ñòåïåíè íà 2

Òàçè ðåàëèçàöèÿ íà pow() íå ïðîâåðÿâà îíåçè îñîáåíè ñëó÷àè, êîãàòî èìàìå ïîâäèãàíå íà îòðèöàòåëíà ñòåïåí èëè ñòîéíîñòòà - ðåçóëòàò å ìíîãî ãîëÿìà.

Óïðàæíåíèå 1-1. Êàêâî ùå ñòàíå àêî pow() áúäå èçâèêàíà ñ îòðèöàòåëåí âòîðè àðãóìåíò? Êàê ìîæå äà áúäå ïðîìåíåíà pow() çà äà îáðàáîòâà òîâà?

Óïðàæíåíèå 1-2. Âñåêè òèï äàííè èìà äîëíà è ãîðíà ãðàíèöà çà ñòîéíîñòèòå, êîèòî ìîæå äà ïîääúðæà, îïðåäåëåíè îò áðîÿ íà áèòîâåòå, îòäåëåíè çà ïðåäñòàâÿíåòî ìó. Êàê òîâà ìîæå äà ñå îòðàçè íà pow()? Êàê äà áúäå ïðîìåíåíà ôóíêöèÿòà pow() çà äà îáðàáîòâà ïîâèêâàíèÿ êàòî pow( 2, 48 )?

Êàêâî å ïðîìåíëèâà?
Âñÿêà ïðîìåíëèâà ñå èäåíòèôèöèðà îò èìå, äåôèíèðàíî îò ïîòðåáèòåëÿ. Òÿ èìà è ñúîòâåòåí òèï. Íàïðèìåð, ñëåäâàùèÿò îïåðàòîð äåôèíèðà ïðîìåíëèâà ch îò òèï char:

char ch;

char ñïåöèôèêàòîð íà òèï. short, int, long, float è double ñúùî ïðåäñòàâÿò òèïîâè ñïåöèôèêàöèè. Èçîáùî, âñÿêà äåêëàðàöèÿ òðÿáâà äà çàïî÷âà ñ òèïîâ ñïåöèôèêàòîð. Òèïîâåòå íà äàííèòå îïðåäåëÿò êîëè÷åñòâîòî ïàìåò, îòäåëåíî çà ïðîìåíëèâàòà, êàêòî è íàáîðà îò îïåðàöèè, êîèòî ìîãàò äà áúäàò ïðèëàãàíè íàä òîçè òèï äàííè. (Çà íàøèòå ïðåäïîëîæåíèÿ char ùå èìà ðàçìåð â áèòîâå 8).

Êàêòî ïðîìåíëèâèòå, òàêà è êîíñòàíòèòå ñå ñúõðàíÿâàò â ïàìåòòà è ñà ñâúðçàíè ñ îïðåäåëåí òèï. Ðàçëèêàòà ñå ñúñòîè â òîâà, ÷å ïðîìåíëèâèòå ñà àäðåñèðóåìè. Ò.å., èìà äâå ñòîéíîñòè, ñâúðçàíè ñ äàäåíà ïðîìåíëèâà:

1. Íåéíàòà ñòîéíîñò, ñúõðàíåíà íà íÿêàêâî ìÿñòî â ïàìåòòà. Òîâà ïîÿíêîãà ñå íàðè÷à íåéíà rvalue (ïðîèçíàñÿ ñå “are-value”).

2. Ñòîéíîñòòà, îïðåäåëÿùà ìåñòîïîëîæåíèåòî é; ò.å., àäðåñà â ïàìåòòà, êúäåòî å çàïèñàíà âåëè÷èíàòà. Òîâà ïîíÿêîãà ñå íàðè÷à íåéíà lvalue (ïðîèçíàñÿ ñå “ell-value”).

 èçðàçà

ch = ch - ‘0’;

ïðîìåíëèâàòà ch ñå íàìèðà êàêòî îò ëÿâî òàêà è îòäÿñíî íà îïåðàòîðà çà ïðèñâîÿâàíå. Íàïèñàíà îò ëÿâî, òÿ òðÿáâà äà áúäå ïðî÷åòåíà. Ñòîéíîñòòà é ñå èçâëè÷à îò ìåñòîïîëîæåíèåòî é â ïàìåòòà. Ñëåä òîâà ñèìâîëíèÿò ëèòåðàë ñå èçâàæäà îò òàçè ñòîéíîñò. Òåðìèíúò rvalue ïðîèçëèçà îò ìåñòîïîëîæåíèåòî íà ïðîìåíëèâàòà â äÿñíî íà îïåðàòîðà çà ïðèñâîÿâàíå. Òÿ ìîæå äà áúäå ÷åòåíà, íî íå è ïðîìåíÿíà. Çà íåÿ ìîæå äà ñå ìèñëè êàòî çà ñòîéíîñò çà ÷åòåíå.

Íàïèñàíà îò äÿñíî, ïðîìåíëèâàòà ch ùå áúäå çàïèñâàíà. Ðåçóëòàòúò îò îïåðàöèÿòà èçâàæäàíå ñå çàïèñâà íà ìÿñòîòî çà ñòîéíîñò íà ch âúðõó ïðåäõîäíàòà ñòîéíîñò. Òåðìèíúò lvalue ïðîèçëèçà îò ðàçïîëîæåíèåòî íà ïðîìåíëèâàòà îò ëÿâàòà ñòðàíà íà îïåðàòîðà çà ïðèñâîÿâàíå. Çà íåÿ ìîæå äà ñå ìèñëè êàòî çà ñòîéíîñò íà ìåñòîïîëîæåíèå. ch ñå îçíà÷àâà êàòî îáåêò. Âñåêè îáåêò ïðåäñòàâÿ íÿêàêâà îáëàñò îò ïàìåòòà. ch ïðåäñòàâÿ îáëàñò îò ïàìåòòà ñ ðàçìåð 1 áàéò.

Äåôèíèöèÿòà íà åäíà ïðîìåíëèâà óêàçâà êàê òÿ äà áúäå ñúõðàíåíà. Äåôèíèöèÿòà îïðåäåëÿ èìåòî íà ïðîìåíëèâàòà è íåéíèÿ òèï. Ñúîòâåòíî, áè ìîãëà äà áúäå äîáàâåíà è íà÷àëíà ñòîéíîñò çà ïðîìåíëèâàòà. Òðÿáâà äà èìà åäíà è ñàìî åäíà äåôèíèöèÿ íà äàäåíà ïðîìåíëèâà â ïðîãðàìà.

Äåêëàðàöèÿòà íà ïðîìåíëèâàòà îáÿâÿâà, ÷å ïðîìåíëèâàòà ñúùåñòâóâà è å äåôèíèðàíà íÿêúäå. Òÿ ñå ñúñòîè îò èìåòî íà ïðîìåíëèâàòà, òèïà é è êëþ÷îâàòà äóìà extern. (Çà ïîâå÷å èíôîðìàöèÿ, âæ. ðàçäåë 4.9 Ïðîãðàìåí îáõâàò). Äåêëàðàöèÿòà íå å äåôèíèöèÿ. Òÿ íå ïðåäèçâèêâà çàäåëÿíå íà ìÿñòî â ïàìåò. Ïî-ñêîðî òÿ åäíî òâúðäåíèå, ÷å äåôèíèöèÿòà íà ïðîìåíëèâàòà ñúùåñòâóâà íÿêúäå â òåêñòà íà ïðîãðàìàòà. Åäíà ïðîìåíëèâà ìîæå äà áúäå äåêëàðèðàíà íåêîëêîêðàòíî â ïðîãðàìàòà.

 Ñ++ âñÿêà ïðîìåíëèâà òðÿáâà äà áúäå äåôèíèðàíà èëè äåêëàðèðàíà â ïðîãðàìàòà ïðåäè äà ìîæå äà áúäå èçïîëçóâàíà.

Èìå íà ïðîìåíëèâà
Èìåòî íà ïðîìåíëèâàòà, ò.å. íåéíèÿò èäåíòèôèêàòîð, ìîæå äà áúäå îáðàçóâàíî îò áóêâè, öèôðè è ïîä÷åðòàâàùî òèðåíöå. Ãëàâíèòå è ìàëêèòå áóêâè ñà ðàçëè÷èìè. Íÿìà åçèêîâî íàëîæåíî îãðàíè÷åíèå âúðõó ðàçðåøåíàòà äúëæèíà íà èìåòî, òÿ å ðàçëè÷íà çà ðàçëè÷íèòå ðåàëèçàöèè.

 Ñ++ èìà íàáîð îò äóìè, ïðåäíàçíà÷åíè çà èçïîëçóâàíå îò åçèêà êàòî êëþ÷îâè äóìè. Ïðåäâàðèòåëíî äåôèíèðàíèòå òèïîâè ñïåöèôèêàòîðè, íàïðèìåð, ñà çàïàçåíè äóìè. Èäåíòèôèêàòîðèòå, êîèòî ñà êëþ÷îâè äóìè, íå ìîãàò äà áúäàò èçïîëçóâàíè êàòî ïðîãðàìíè èäåíòèôèêàòîðè. Òàáëèöà 1.2 äàâà ñïèñúê íà çàïàçåíèòå êëþ÷îâè äóìè â Ñ++.

Ñúùåñòâóâàò ìíîæåñòâî îáùîïðèåòè ñïîðàçóìåíèÿ çà èìåíóâàíå íà èäåíòèôèêàòîðè, ïîäïîìàãàùè ÷èòàåìîñòòà íà ïðîãðàìàòà:

- Îáèêíîâåíî èäåíòèôèêàòîðúò ñå çàïèñâà ñ ìàëêè áóêâè.
- Èäåíòèôèêàòîðúò èìà ìíåìîíè÷íî èìå; ò.å., èìå, êîåòî ïîÿñíÿâà íåãîâîòî èçïîëçóâàíå â ïðîãðàìàòà.
- Èäåíòèôèêàòîðèòå, êîèòî ñå ñúñòîÿò îò íÿêîëêî äóìè, ñå çàïèñâàò èëè ñ ðàçäåëÿùî ïîä÷åðòàâàùî òèðå èëè êàòî ñå èçïîëçóâàò ãëàâíè áóêâè çà âñÿêà âêëþ÷åíà äóìà. Íàïðèìåð, ìîæå äà ñå íàïèøå is_empty èëè isEmpty, íî íå isempty.

Çàáåëåæåòå, ÷å template å ïðåäïîëàãàåìà êëþ÷îâà äóìà çà âúçìîæíî áúäåùî ðàçøèðåíèå íà Ñ++ çà ïîääúðæàíå íà ïàðàìå-òðèçèðàíè òèïîâå.

Òàáëèöà 1.2 Êëþ÷îâè äóìè â Ñ++

asmdelete
If
register
template
auto
do

Inline
Return
try
break
double
default

Int
Short
typedef
case
else
this

Long
Signed
union
goto
catch
enum

New
Sizeof
unsigned
char
extern
protected

Operator
Static
virtual
class
float
public

Overload
Struct
void
while
const
for

Private
Switch
volatile
continue
friend


Ñòðàíèöè: «1 2 3 4 5 »

Ðåãèñòðèðàéòå ñå, çà äà äîáàâèòå êîìåíòàð

ðåêëàìà

© Âñè÷êè ïðàâà çàïàçåíè. 2006-2008. Created by: Site.bg
Ïðåïîðú÷âàìå: IT Íîâèíè | Êèíî è èãðè | Äèïëîìà.áã | Paparak.bg | Òóíèíã Ïîðòàë | uchenik.com | TRAVEL òóðèçúì | Ðåôåðàòè | AmAm.bg | Èäå.ëè | Êóðñîâè ðàáîòè | AnimeS-bg.com | Ôîòî Ôîðóì | Çàïîçíàíñòâà | Ìðåæà îò ïðèÿòåëè | IT Light | Spodeli.net | Ôîòî-Êóëò | IDG.BG | Teenproblem.net | Áëîã - Îáðàçîâàíèå | Fresh-BG.com | Hanovete.com | Bulfleet.com | Mythlands.com | Ohoboho.com | Êàçàíëúê.Com | News24 | Setcom.bg | Atol.bg | Elmaz.com | MobileBulgaria.com