26
Основи на програмирање (ОП - 02) 7. ЈАЗИКОТ C++ Јазикот С е дизајниран во 1972 година од Денис Ричи (Dennis Ritchie). Нови особини на јазикот С што ги немаат тогашните програмски јазици: дозволува пристап до ресурси на многу ниско ниво, погоден е за системско програмирање, може да се извршува на различни машински платформи и работи во опкружување на различни оперативни системи. Надградбата на јазикот С (1983 година) доведе до нов јазик С++, што претставува јазик за т.н. објектно програмирање. Денес, С++ спаѓа меѓу најкористените јазици за изработка на програми од разни видови, од кориснички апликации со најразлични намени, па сè до системски алатки. 1

7. ЈАЗИКОТ C++ - WordPress.com · Во С++ се обработуваат податоци од различен тип: цели броеви, реални броеви, знаци,

  • Upload
    others

  • View
    17

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 7. ЈАЗИКОТ C++ - WordPress.com · Во С++ се обработуваат податоци од различен тип: цели броеви, реални броеви, знаци,

Основи на програмирање (ОП - 02)

7. ЈАЗИКОТ C++

Јазикот С е дизајниран во 1972 година од Денис Ричи (Dennis Ritchie). Нови особини на јазикот С што ги немаат тогашните програмски јазици: • дозволува пристап до ресурси на многу ниско ниво, • погоден е за системско програмирање, • може да се извршува на различни машински платформи и • работи во опкружување на различни оперативни системи. Надградбата на јазикот С (1983 година) доведе до нов јазик С++, што претставува јазик за т.н. објектно програмирање. Денес, С++ спаѓа меѓу најкористените јазици за изработка на програми од разни видови, од кориснички апликации со најразлични намени, па сè до системски алатки.

1

Page 2: 7. ЈАЗИКОТ C++ - WordPress.com · Во С++ се обработуваат податоци од различен тип: цели броеви, реални броеви, знаци,

Основи на програмирање (ОП - 02)

Еве како изгледа една програма на С++:

// Prva C++ programa Linija 1 #include <iostream.h> // Linija 2 // Linija 3 main () // Linija 4 { // Linija 5 cout <<”Ova e mojata prva programa vo C++”<< endl; // Linija 6 } // Linija 7 На екранот ќе се отпечати: Ova e mojata prva programa vo C++ Да ја објасниме секоја линија на програмата:

Линија 1: коментар кој почнува со //ч Линија 2: наредба (директива) за вклучување на библиотеката iostream.h; Линија 3: празна линија која се игнорира при извршувањето; Линија 4: главна функција наречена main; Линија 5: отворена голема заграда за почеток на функцијата; Линија 6: наредба за печатење: cout - наредба за печатење << - оператор за печатење “Ova e mojata prva programa vo C++” - текст кој се печати еndl - наредба за крај на тековната линија ; - знак на крај на наредбата

Линија 7: затворена голема заграда за крај на функцијата main.

2

Page 3: 7. ЈАЗИКОТ C++ - WordPress.com · Во С++ се обработуваат податоци од различен тип: цели броеви, реални броеви, знаци,

Основи на програмирање (ОП - 02)

Програмите во С++ можат да се пишуваат со кој било уредувач на текстови.

Потоа, програмите се преведуваат и извршуваат во зависност од верзијата на преведувачот.

С++ преведувачи: Microsoft Visual C++, Borland C++, Gnu C++ и други. Елементи на јазикот С++

Азбуката на јазикот С++ се состои од множество дозволени симболи:

• малите букви од англиската азбука: a-z, • големите букви од англиската азбука: А-Z, • цифрите: 0-9, • специјалните знаци: ~ ! @ # $ % ^ & * ( ) - + = { } [ ] : ; ‘ ” < > ? / Од азбуката на С++ се формираат зборови:

• клучни зборови, • бројни, симболички и текстуални (стринг) константи, • имиња (идентификатори), • оператори.

3

Page 4: 7. ЈАЗИКОТ C++ - WordPress.com · Во С++ се обработуваат податоци од различен тип: цели броеви, реални броеви, знаци,

Основи на програмирање (ОП - 02)

Посебни вид симболи се одделувачите (сепараторите) со кои се одделуваат зборовите:

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

Податоци во С++

Во С++ се обработуваат податоци од различен тип: цели броеви, реални броеви, знаци, текстови итн. Податоците ги имаат следниве карактеристики: име, тип и вредност.

Имиња на податоците

Имињата (идентификаторите) на податоците во С++ се формираат со почитување на следниве правила:

• името започнува со буква или подвлечена црта, • малите и големите букви се разликуваат, • името може да содржи цифра, • името не смее да содржи специјален знак: !, @, #, % итн.

4

Page 5: 7. ЈАЗИКОТ C++ - WordPress.com · Во С++ се обработуваат податоци од различен тип: цели броеви, реални броеви, знаци,

Основи на програмирање (ОП - 02)

Пример: Правилни имиња се: a, b2, it, i1j2, _radius, R итн. Пример: Неправилни имиња се: a_b, dolar$, %proc, char. итн. За имиња на променливите треба да се избегнуваат резервираните зборови или зборовите слични на резервираните. Пример: CHAR (сличен на: char) _float (содржи резервиран збор) итн. Типови податоци

Типна податок претставува начин на интерпретација на содржината на една или повеќе последователни локации во меморијата на компјутерот, во кои е сместен некој податок. Постојат две основни групи на типови податоци во С++:

• основен тип и • апстрактен тип.

5

Page 6: 7. ЈАЗИКОТ C++ - WordPress.com · Во С++ се обработуваат податоци од различен тип: цели броеви, реални броеви, знаци,

Основи на програмирање (ОП - 02)

Основни типови податоци

скаларни типови податоци:

аритметички целоброен int реален со обична точност float реален со двојнаточност double знаковен char наброив покажувач референца низа

апстрактни типови податоци:

класа структура унија

6

Page 7: 7. ЈАЗИКОТ C++ - WordPress.com · Во С++ се обработуваат податоци од различен тип: цели броеви, реални броеви, знаци,

Основи на програмирање (ОП - 02)

Поттипови на аритметички тип податоци:

целоброен тип:

означен неозначен short int unsigned short int int unsigned int long int unsigned long int реален тип: реален тип:

float char double unsigned char long double Забелешки:

1. Зборовите long, short, signed и unsigned се викаат спецификатори. 2. Со спецификаторите long и short се менува најмалата и најголемата вредност што може да ја има некој тип податоци, пришто спецификаторот short не може да се примени на реален тип податоци. 3. Со спецификаторите signed и unsigned се определува како да се користи битот за знак.

7

Page 8: 7. ЈАЗИКОТ C++ - WordPress.com · Во С++ се обработуваат податоци од различен тип: цели броеви, реални броеви, знаци,

Основи на програмирање (ОП - 02)

Константни и променливи податоци

При декларација на податоците се задава типот и името, а може (но не мора) и почетната вредност.

Константните податоци (константите) се податоци чија вредност не се менува во текот на извршување на програмата.

Декларација:

const тип име = вредност; Пример:

const int i=1; const float x=10.; cons double pi=3.14159; const chat da=′d ′;

Ако не се наведе типот се подразбира тип int. Променливите податоци (променливите) се податоци чија вредност може да се менува во текот на извршување на програмата.

8

Page 9: 7. ЈАЗИКОТ C++ - WordPress.com · Во С++ се обработуваат податоци од различен тип: цели броеви, реални броеви, знаци,

Основи на програмирање (ОП - 02)

Декларација:

тип име; или

тип име = вредност;

(истовремена декларација и иницијализација напроменливата) Пример:

int i,ј,k; int m=0, n=1;

float x,y,z; float e=2.7182;

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

име = вредност;

9

Page 10: 7. ЈАЗИКОТ C++ - WordPress.com · Во С++ се обработуваат податоци од различен тип: цели броеви, реални броеви, знаци,

Основи на програмирање (ОП - 02)

Пример:

#include <iostream> main () { short ed_cena, vkupno; /* deklaracja na promenlivi */

short kolicina=100; /* deklaracija so inicijalizacija */ ed_cena = 50; /* dodeluvanje */

Целоброен тип податоци int

тип вредности меморија short int -32768, ... , 32767 16 бита int -2147483648, ... , 2147483648 32 бита long int -2147483648, ... , 2147483648 32 бита unsigned short int 0, ... , 65535 16 бита unsigned int 0, ... , 4294967295 32 бита unsigned long int 0, ... , 4294967295 32 бита

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

10

Page 11: 7. ЈАЗИКОТ C++ - WordPress.com · Во С++ се обработуваат податоци од различен тип: цели броеви, реални броеви, знаци,

Основи на програмирање (ОП - 02)

Забелешка: При делење на два цели броја количникот е цел број.

Податоците од целоброен тип поврзани со аритметичките оператори (+, -, *, / и %) дефинираат аритметички изрази чија вредност е целобројна.

Пример: 5/2+2/5=2 12*3/10=3 1+2*3%10=7 3*3-25%5=9

Пример: 5/2=2 123/10=12 123%10=3 -26%4=-2

За менување на редоследот на извршување на операциите се користат загради.

Пример: (1+2*(3+4))%(5-6) (1+2*7)%(5-6) (1+2*7)%(-1) (1+14)%(-1) 15%(-1) 0

11

Page 12: 7. ЈАЗИКОТ C++ - WordPress.com · Во С++ се обработуваат податоци од различен тип: цели броеви, реални броеви, знаци,

Основи на програмирање (ОП - 02)

Стандарден оператор за доделување вредности е: =

int broj1, broj2; short int cifra=2;

broj1=(1+2*3)%4; broj2=broj1/cifra;

Во C++ вредностите на променливите се доделуваат и вака:

x=(a=3)*(b=4); x=y=z=5;

Скратена форма на оператор − аритметички оператор и оператор за доделување

+= -= *= /= %= Пример:

x+=a; еквивалентно: x=x+a; y/=b; еквивалентно: y=y/b;

12

Page 13: 7. ЈАЗИКОТ C++ - WordPress.com · Во С++ се обработуваат податоци од различен тип: цели броеви, реални броеви, знаци,

Основи на програмирање (ОП - 02)

Знаковен тип податоци char Податоците од овој тип имаат вредност знак или целбројна вредност. Тие можат да бидат константи или променливи и се третираат како било кој податок од целоброен тип: можат да се читаат, да се печатат, да се споредуваат и со нив да се извршуваат аритметички операции.

тип вредности меморија char -128, ... , 127 8 бита unsigned char 0, ... , 255 8 бита

Пример:

char a; char znak=′+′; const char dolar=′$′; char denar=′d′; char x=120;

13

Page 14: 7. ЈАЗИКОТ C++ - WordPress.com · Во С++ се обработуваат податоци од различен тип: цели броеви, реални броеви, знаци,

Основи на програмирање (ОП - 02)

Реален тип податоци float, double Податоците од овој тип можат да бидат константи или променливи. Прецизноста на податоците од тип float и double е различна и тоа: • float податоците зафаќаат 32 бита и имаат 7 значајни цифри. • double податоците зафаќаат 64 бита и имаат 15 значајни цифри.

тип вредности меморија float 3.4×10-38, ... , 3.4×1038 32 бита double 1.7×10-308, ... , 1.7×10308 64 бита long double 3.4×10-4932, ... , 1.1×104932 80 бита

Пример: float x; const float g=9.81; double visina; double iznos=12345.67;

14

Page 15: 7. ЈАЗИКОТ C++ - WordPress.com · Во С++ се обработуваат податоци од различен тип: цели броеви, реални броеви, знаци,

Основи на програмирање (ОП - 02)

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

+= -= *= /= %= Претставување на децималните податоци

• со фиксна (неподвижна) точка (f−формат) и • со подвижна точка (е−формат). Пример:

f−формат e−формат

12.34 12.e0 (=12.×100) -1234. 32.4e+1 (=32.4×101) 0.4321 -25.4e1 (=25.4.×101) -.1234 72.34e+2 (=72.34×102) 123.e-1 (=123.×10-1)

15

Page 16: 7. ЈАЗИКОТ C++ - WordPress.com · Во С++ се обработуваат податоци од различен тип: цели броеви, реални броеви, знаци,

Основи на програмирање (ОП - 02)

Конверзија на типот на податоците Во изрази со мешовит тип на податоци се вршат следниве конверзи на податоците:

• конверзија на типовите со помала прецизност во типови со поголема прецизност, • конверзија на целобројните вредности во реални вредности, • кога е неопходно, автоматски се врши имплицитна конверзија на типот. Пример: int k; k=5+2.34; (=5.+2.34=7.34 =7) Прво се врши конверзија на 5 во 5.0, а потоа, имплицитна конверзија на 7.34 во 7. Експлицитна конверзија се врши преку cast операторот: () Пример:

int(5+2.34) =7 (int) 5+2.34 double(3*4) =12. (double) 3*4

cout << int(′d′) <<endl; cout << (int) ′d′ <<endl;

16

Page 17: 7. ЈАЗИКОТ C++ - WordPress.com · Во С++ се обработуваат податоци од различен тип: цели броеви, реални броеви, знаци,

Основи на програмирање (ОП - 02)

Логички тип податоци bool Податоците од овој тип имаат една од следниве две вредности: точно (true) или неточно (false).

bool da_ne; bool odgovor=false;

Логичките податоци поврзани со логичките оператори даваат логички изрази. Логички оператори се: && логичко И (AND); || логичко ИЛИ (OR); ! логичко НЕ (NOT) Релациони оператори: < <= > >= = = != Приоритет на операторите: NOT ! унарен минус - аритметички + - * / % релациони < <= > >= еднаквост = = != AND && OR || Доделување = += -= *= /= %=

17

Page 18: 7. ЈАЗИКОТ C++ - WordPress.com · Во С++ се обработуваат податоци од различен тип: цели броеви, реални броеви, знаци,

Основи на програмирање (ОП - 02)

Наброив тип податоци enum Податоците од овој тип добиваат вредности од однапред зададена листа од имиња. Пример:

enum boja {zolta, crvena, plava}; enum godvreme {prolet, leto, esen, zima}; Секое име во листата има свој реден број: 0, 1, 2, 3 итн. На променливите од овој тип може да им се доделат вредности при декларацијата: enum ocena {odlicen=5, mndobar=4, dobar=3, dovolen=2, nedovolen=1};

enum mesec {jan=1, fev=2, mart=3, apr=4, maj=5, jun=6, jul=7, avg=8, sep=9, okt=10, noe=11, dek=12};

Податоците од наброив тип не можат да се читаат и да се печатат.

18

Page 19: 7. ЈАЗИКОТ C++ - WordPress.com · Во С++ се обработуваат податоци од различен тип: цели броеви, реални броеви, знаци,

Основи на програмирање (ОП - 02)

Преименување на типот на податоци За тип на податоците можат да се користат имиња (синоними) кои полесно се памтат. Пример:

int i,ј,k; double x,y,z;

char a,b; bool da_ne,uslov;

celobrojni i,ј,k; realni x,y,z;

znaci a,b; logicki da_ne,uslov;

Во С++ може да се дефинраат нови типови податоци врз основа на постојните. За таа намена се користи спецификаторот typedef.

typedef int celobrojni; typedef double realni;

typedef char znaci; typedef bool logicki;

19

Page 20: 7. ЈАЗИКОТ C++ - WordPress.com · Во С++ се обработуваат податоци од различен тип: цели броеви, реални броеви, знаци,

Основи на програмирање (ОП - 02)

Оператори со битови Во С++ има група оператори на ниво на битови. Со овие оператори логичките операции се извршуваат бит по бит. Тоа се: & И ~ комплемент | ИЛИ << поместување во лево ^ исклучиво ИЛИ >> поместување во десно Пример: Операторите на ниво на битови да се применат на бинарните броевите А=0101 (510) и B=0011 (310).

А B A&B A|B A^B ~A ~B <<A A>> <<B >>B 0 0 0 0 0 1 1 1 0 0 0 1 0 0 1 1 0 1 0 0 1 0 0 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 0 0 0 0 1

Скратена форма на операторите на нивона битови: &= |= ^= ~= <<= >>=

20

Page 21: 7. ЈАЗИКОТ C++ - WordPress.com · Во С++ се обработуваат податоци од различен тип: цели броеви, реални броеви, знаци,

Основи на програмирање (ОП - 02)

Читање и печатење вредности на променливите Читањето/ печатењето вредности на податоците во С++ е организирано како влезен/излезен поток (анг. stream) од знаци. Се врши со помош на рутини кои се наоѓаат во библиотеката iostream (#include <iostream>). Дефинирани се два оператори:

>> влезен оператор (“прати на”) << излезен оператор (“преземи од”) Наредви за влез и излез:

cin наредба за внесување вредности преку тастаура (за стандарден влезен поток)

cout наредба за прикажување вредности на екран (за стандарден излезен поток)

Пример:

int celbroj; double realenbroj; cin >> celbroj >> realenbroj; //citanje na: celbroj i realenbroj

21

Page 22: 7. ЈАЗИКОТ C++ - WordPress.com · Во С++ се обработуваат податоци од различен тип: цели броеви, реални броеви, знаци,

Основи на програмирање (ОП - 02)

Пример:

int celbroj; double realenbroj; ... celbroj=123; realenbroj=45.67; cout << celbroj << realenbroj; //pecatenje na: celbroj i realenbroj На екранот ќе се отпечати:

12345.67| За разделување на двете вредности се користи еден или повеќе бланко знаци:

cout << celbroj << ′ ′ << realenbroj << endl; каде што endl е оператор за крај на линијата, т.е. преминување во следната линија. Добиваме:

123 45.67 |

22

Page 23: 7. ЈАЗИКОТ C++ - WordPress.com · Во С++ се обработуваат податоци од различен тип: цели броеви, реални броеви, знаци,

Основи на програмирање (ОП - 02)

За печатење во нов ред се користи операторот ′\n′. Следниве две наредби имаат исто значење.

cout << celbroj << ′\n′ << realenbroj << ′\n′; cout << celbroj << endl << realenbroj << endl;

т.е. како резултат добиваме:

123 45.67 Неколку излезни секвенци:

излезна секвенца

Опис

\” печатење наводник \\ печатење коса црта \a печатење ѕвоно (аларм) \n преместување на покажувачот на почетокот на следната линија \r преместување на покажувачот на почетокот на тековната линија \t преместување на покажувачот на следната TAB−позиција

23

Page 24: 7. ЈАЗИКОТ C++ - WordPress.com · Во С++ се обработуваат податоци од различен тип: цели броеви, реални броеви, знаци,

Основи на програмирање (ОП - 02)

Пример: Програма во С++ за собирање на два броја.

// Sobiranje na dva broja #include <iostream>;

main () { // pocetok na main

int broj1; // deklaracija na celobrojnata promenliva broj1 cout << “Vnesete prv cel broj\n”; // tekst za vnesuvanje na broj1 cin >> broj1; // citanje na broj1 int broj2; // deklaracija na celobrojnata promenliva broj2 cout << “Vnesete vtor cel broj\n”; // tekst za vnesuvanje na broj2 cin >> broj2; // citanje na broj2 int zbir; // deklaracija na celobrojnata promenliva zbir zbir=broj1+broj2; /* naredba za sobiranje */ cout << “Zbirot e “ << zbir << endl;

} // kraj na main

Забелешки:

#include <iostream>; предпроцесорска директива за вклучување на датотеката iostream. main () е име на главната функција (неопходен дел на секоја програма во С++)

24

Page 25: 7. ЈАЗИКОТ C++ - WordPress.com · Во С++ се обработуваат податоци од различен тип: цели броеви, реални броеви, знаци,

Основи на програмирање (ОП - 02)

// − oператор за коментар што се протегаат во една линија. /* и */ − oператори за коментар што не е до крајот на линијата. Променливите во С++ можат да се декларираат каде било во програмата, а можат да се користат по линијата за декларација. cout << “Vnesete prv cel broj\n”; − ”на cout се испраќа текстот Vnesete prv cel broj, како излезен поток на знаци”. cin >> broj1; − ”cin го чита потокот на знаци кој се внесува преку тастатура и му го доделува на broj1. cout << “Zbirot e “ << zbir << endl; − е наредба за печатење на повеќе вредности.

25

Page 26: 7. ЈАЗИКОТ C++ - WordPress.com · Во С++ се обработуваат податоци од различен тип: цели броеви, реални броеви, знаци,

Основи на програмирање (ОП - 02)

Пример: Програма во С++ која илустрира некоректно користење на променлива чија вредност го надминува дозволениот опсег според декларацијата.

// Ilustracija na nekorektno koristenje na promenliva #include <iostream>;

main () {

short int ed_cena, vkupno; // deklaracija na podatoci od celobroen tip short int kolicina=1000; // deklaracija i inicijalizacija na podatok od

// celobroen tip ed_cena=50; // dodeluvanje na vrednost vkupno=ed_cena*kolicina; // dodeluvanje vrednost od presmetan izraz cout << “Vkupen iznos za ” << kolicina; cout << “ parcinja e “ << vkupno << “ den. ” << endl;

}

Излез од програмата е:

Vkupen iznos za 1000 parcinja e -15536 den.

26