Òî÷êè 2à, 2á è 2â
ñúùî âå÷å ïðåäñòàâÿò ïðîáëåìè, êîèòî çíàåì êàê äà ðåøèì. Òúé êàòî âå÷å ñìå â
ñúñòîÿíèå äà ðåøèì âñè÷êè ïîäïðîáëåìè, êîèòî áÿõìå ôîðìóëèðàëè, òî ôàêòè÷åñêè
ñìå ðåøèëè è ïî-ãîëåìèÿ ïðîáëåì. Ïîñëåäîâàòåëíîñòòà îò äåéñòâèÿ ùå
áúäå:
1. ×åòåíå îò ôàéëà ïðîäàæáè.
2. Ïîäðåæäàíå íà
ôàéëà ïðîäàæáè - ïúðâî ïî èçäàòåë, à ïîñëå â ãðóïèòå íà èçäàòåëèòå.
3. Ñãúñòÿâàíå íà ïîâòàðÿùèòå ñå çàãëàâèÿ.
4. Çàïèñâàíå íà ðåçóëòàòèòå â
íîâ ôàéë.
Îïèñàíàòà ïîñëåäîâàòåëíîñò îò äåéñòâèÿ ìîæå äà áúäå íàðå÷åíà
àëãîðèòúì. Ñëåäâàùàòà ñòúïêà å îïèñâàíå íà àëãîðèòúìà â òåðìèíèòå íà íÿêîé
ïðîãðàìåí åçèê - â òîçè ñëó÷àé íà Ñ++.
1.2. Ñ++ ïðîãðàìà
Â
Ñ++ âñÿêî äåéñòâèå ñå ïðåäñòàâÿ ÷ðåç èçðàç. Èçðàç, îãðàíè÷åí ñ “;” ïðåäñòàâëÿâà
îïåðàòîð. Íàé-ìàëêàòà íåçàâèñèìà åäèíèöà â åçèêà å îïåðàòîðà. Â åñòåñòâåíèòå
åçèöè àíàëîãè÷íàòà êîíñòðóê öèÿ å èçðå÷åíèå. Ñëåäâàùèòå èçðàçè, íàïðèìåð, ñà
îïåðàòîðè íà Ñ++.
int value;
value = 7 + 1;
cout <<
value;
Ïúðâèÿò îïåðàòîð å åäèí äåêëàðàòèâåí îïåðàòîð. Òîé äåôèíèðà îáëàñò
îò ïàìåòòà íà êîìïþòúðà, ñâúðçàíà ñ èìåòî value, êúäåòî ìîãàò äà ñå çàïèñâàò
öåëè ÷èñëà. Âòîðèÿò îïåðàòîð å îïåðàòîð çà ïðèñâîÿâàíå. Òîé ïîìåñòâà â ïàìåòòà
íà êîìïþòúðà, ñâúðçàíà ñ èìåòî value, ðåçóëòàòà îò ñúáèðàíåòî íà 7 è 1. Òðåòèÿò
îïåðàòîð å îïåðàòîð çà èçõîä. Ñout îïèñâà èçõîä, íàñî÷åí êúì ïîòðåáèòåëñêèÿ
òåðìèíàë. << å îïåðàòîð çà èçõîä. Îïåðàòîðúò çàïèñâà â cout, ò.å. íà
ïîòðåáèòåëñêèÿ òåðìèíàë, ñòîéíîñòòà, ñúõðàíåíà â îáëàñòòà îò êîìïþòúðíàòà ïàìåò,
ñâúðçàíà ñ èìåòî value.
Îïåðàòîðèòå ëîãè÷åñêè ñå ãðóïèðàò â åäèíèöè,
íàðå÷åíè ôóíêöèè. Íàïðèìåð, âñè÷êè îïåðàòîðè, íåîáõîäèìè çà ÷åòåíå îò ôàéëà
ïðîäàæáè, ñà îðãàíèçèðàíè âúâ ôóíêöèÿ, íàðå÷åíà readIn().
Ñúîòâåòíî,
ñúçäàâàìå è ôóíêöèèòå sort(), compact() è print().
 Ñ++ âñÿêà ïðîãðàìà
òðÿáâà äà ñúäúðæà ôóíêöèÿ, íàðå÷åíà main(), íàïèñàíà îò ïðîãðàìèñòà, ïðåäè äà
ìîæå äà áúäå èçïúëíåíà. Ñëåäâà ïðèìåð çà äåôèíèðàíå íà main() çà ãîðåîïèñàíèÿ
àëãîðèòúì.
int main() {
readIn();
sort();
compact();
print();
return 0;
}
Ïðîãðàìàòà íà Ñ++
çàïî÷âà äà ñå èçïúëíÿâà îò ïúðâèÿ îïåðàòîð íà main().  òîçè ñëó÷àé, ïðîãðàìàòà
çàïî÷âà ñ èçïúëíåíèåòî íà ôóíêöèÿòà readIn(). Èçïúëíåíèåòî é ïðîäúëæàâà ÷ðåç
ïîñëåäîâàòåëíîòî èçïúëíåíèå íà îïåðàòîðèòå â main(). Òÿ ïðèêëþ÷âà íîðìàëíî ñ
èçïúëíåíèåòî íà ïîñëåäíèÿ îïåðàòîð íà main().
Âñÿêà ôóíêöèÿ ñå ñúñòîè îò
÷åòèðè ÷àñòè: òèï íà ðåçóëòàòà, èìå íà ôóíêöèÿòà, ñïèñúê îò àðãóìåíòè è òÿëî.
Ïúðâèòå òðè åëåìåíòà çàåäíî îáðàçóâàò ïðîòîòèïà íà ôóíêöèÿòà. Ñïèñúêúò îò
àðãóìåíòè, çàòâîðåí â ñêîáè, ñúäúðæà ñïèñúê îò íóëà èëè ïîâå÷å àðãóìåíòè,
îòäåëåíè ñúñ çàïåòàÿ. Òÿëîòî íà ôóíêöèÿòà å çàòâîðåíî â ñêîáè îò âèäà “{ }”. Òî
ñúäúðæà ïîñëåäîâàòåëíîñò îò ïðîãðàìíè îïåðàòîðè.
 òîçè ïðèìåð, â òÿëîòî
íà main() ñå èçâèêâàò çà èçïúëíåíèå ôóíêöèèòå readIn(), sort(), compact() è
print(). Êîãàòî òåçè ôóíêöèè ïðèêëþ÷àò ðàáîòà, ñå èçïúëíÿâà îïåðàòîðúò return 0.
Òîâà å åäèí ïðåäâàðèòåëíî äåôèíèðàí îïåðàòîð íà Ñ++, ïðåäîñòàâÿù ìåòîä çà
ïðåêðàòÿâàíå íà èçïúëíåíèåòî íà ôóíêöèÿ. Êîãàòî îïåðàòîðúò å ñúïúòñòâóâàí îò
ñòîéíîñò, 0 íàïðèìåð, òàçè ñòîéíîñò ñòàâà ñòîéíîñò, êîÿòî ôóíêöèÿòà âðúùà. Â
òîçè ñëó÷àé, âðúùàíàòà ñòîéíîñò 0 ïîêàçâà óñïåøíîòî ïðèêëþ÷âàíå íà èçïúëíåíèåòî
íà main().
Íåêà ñåãà äà ïîäãîòâèì ïðîãðàìàòà çà èçïúëíåíèå. Ïúðâî òðÿáâà
äà ïðåäëîæèì äåôèíèöèè çà readIn(), sort(), compact() è print(). Â òîçè ìîìåíò
ñëåäíèòå ôèêòèâíè ïðèìåðè ñà äîñòàòú÷íî äîáðè.
void readIn() { cout
<< "readIn()n"; }
void sort() { cout << "sort()n";
}
void compact() { cout << "compact()n"; }
void print() {
cout << "print()n"; }
void ñå èçïîëçóâà çà äà óêàæå, ÷å ôóíêöèÿòà
íå âðúùà ñòîéíîñò. Êàêòî å äåôèíèðàíî, âñÿêà ôóíêöèÿ ïðîñòî ùå ñúîáùè çà ñâîåòî
ñúùåñòâóâàíå ÷ðåç íàïèñâàíå íà ñúîòâåòíèÿ òåêñò âúðõó òåðìèíàëà íà ïîòðåáèòåëÿ,
êîãàòî áúäå èçâèêàíà îò main(). Ïî-êúñíî áèõìå ìîãëè äà çàìåíèì ôèêòèâíèÿ ïðèìåð
ñúñ ñàìîòî òÿëî, êîãàòî òî áúäå ðåàëèçèðàíî. Òîçè ìåòîä íà ïîñëåäîâàòåëíî
óâåëè÷àâàíå íà êîäà íà ïðîãðàìàòà å ïîëåçåí çà êîíòðîëèðàíå íà ïðîãðàìíèòå
ãðåøêè, êîèòî íåìèíóåìî äîïóñêàìå. Äà ñå îïèòâàìå äà íàïðàâèì ðàáîòåùà ïðîãðàìà
îòâåäíúæ å ïðîñòî ìíîãî ñëîæíî è îáúðêâàùî.
Âñåêè ôàéë, ñúäúðæàù òåêñò íà
ïðîãðàìà ñå ñúñòîè îò äâå ÷àñòè - èìå íà ôàéë è ðàçøèðåíèå. Ðàçøèðåíèåòî ÷åñòî
îïðåäåëÿ ñúäúðæàíèåòî íà ôàéëà. Òîâà ðàçøèðåíèå ùå ñå ïðîìåíÿ ïðè ðàçëè÷íèòå
ðåàëèçàöèè íà Ñ++. Ïðè îïåðàöèîííàòà ñèñòåìà UNIX, èìåòî íà Ñ++ ôàéëà ìîæå äà
áúäå çàâúðøåíî êàêòî ñúñ “.ñ”, òàêà è ñúñ “.Ñ”. Óïîòðåáàòà íà ìàëêà áóêâà “.ñ”
ïîêàçâà ñúùåñòâóâàùàòà âðúçêà ìåæäó ïðîãðàìíèòå åçèöè Ñ++ è Ñ. (Âñè÷êè ôàéëîâå,
ñúäúðæàùè ïðîãðàìè íà Ñ òðÿáâà äà çàâúðøâàò ñúñ “.ñ”). Çà äà áúäå ðàçëè÷àâàí Ñ++
ïðîãðàìåí ôàéë, èçïîëçóâàéòå ðàçøèðåíèå “.Ñ”. (¢)
Âúâåäåòå ñëåäíàòà ïúëíà
ïðîãðàìà â åäèí Ñ++ êîäîâ ôàéë.
#include <stream.h>
void
read() { cout << "read()n"; }
void sort() { cout << "sort()n";
}
void compact() { cout << "compact()n"; }
void write() { cout
<< "write()n"; }
int main() {
read();
sort();
compact();
write();
return
0;
}
Stream.h å åäèí îò ò.í. çàãëàâíè ôàéëîâå. Òîé ñúäúðæà èíôîðìàöèÿ
çà cout, êîÿòî å íåîáõîäèìà çà íàïèñàíàòà ïðîãðàìà. #include å åäíà
ïðåäïðîöåñîðíà äèðåêòèâà. Òÿ óêàçâà äîáàâÿíåòî íà ñúäúðæàíèåòî íà stream.h êúì
íàøèÿ òåêñòîâ ôàéë.
Ñëåä êàòî âå÷å ïðîãðàìàòà å çàïèñàíà âúâ ôàéë ìîæå
äà áúäå êîìïèëèðàíà. Òîâà ñå ïðàâè òàêà ($ å ñèñòåìíèÿ ïîêàçàëåö):
$ ÑÑ
prog1.C
Èìåòî íà êîìàíäàòà, èçïîëçóâàíî çà èçâèêâàíå íà êîìïèëàòîðà íà
Ñ++ ùå áúäå ðàçëè÷íî çà ðàçëè÷íèòå ðåàëèçàöèè. ÑÑ å èìåòî íà êîìàíäàòà,
èçïîëçóâàíî îò AT&T C++ Language System, Release 2.0. Íàïðàâåòå ñïðàâêà â
ñâîÿ íàðú÷íèê èëè ïîïèòàéòå âàøèÿ ñèñòåìåí àäìèíèñòðàòîð çà èìåòî íà Ñ++
êîìïèëàòîðà âúâ âàøàòà ñèñòåìà.
×àñò îò ðàáîòàòà íà âàøèÿ êîìïþòúð å äà
àíàëèçèðà òåêñòà íà ïðîãðàìàòà çà êîðåêòíîñò. Êîìïþòúðúò íå ìîæå äà óñòàíîâè
äàëè ëîãèêàòà íà âàøàòà ïðîãðàìà å ïðàâèëíà, íî ìîæå äà îòêðèå ãðåøêè âúâ
ôîðìàòà íà ïðîãðàìàòà. Íàé-îáùî ïðîãðàìíèòå ãðåøêè, êîèòî êîìïèëàòîðúò îòêðèâà
ñà:
#include
void read() { cout pact() { cout n"; }
void write() { cout n() {
read();
sort();
compact();
write();
return 0;
}
Ïðè ìåí Ñ ìè èçâåæäà ãðåøêà îùå â ïúðâèÿ ðåä, äåìåê ïðè #include