С++ тілінің базалық жабдықтары

Автор: Пользователь скрыл имя, 11 Февраля 2013 в 11:06, лекция

Описание работы

С++ тілінің базалық жабдықтары. Программа құрылымы. Жиымдар
Қарастырылатын сұрақтар:
1. С++ тілінің базалық жабдықтары
2. Мәліметтер типі
3. Программа құрылымы
4. Айнымалылар мен өрнектер
5. Тармақталу, басқаруды беру операторлары және циклдік операторлар
6. Жиымдар (массивтер)

Работа содержит 1 файл

C++.doc

— 332.50 Кб (Скачать)

#include <iostream.h>

int sum (int a, int b); // функцияны хабарлау

int main() { int a=2, b=3, c, d;

c= sum(a,b); // функцияны шақыру

cin>>d;

cin>>sum(c,d); // функцияны шақыру

return 0;}

int sum (int a, int b);  // функцияны анықтау

{return(a+b);}

Функция ішінде сипатталған  шамалар мен оның параметрлері жергілікті деп аталады.

Бірігіп жұмыс істегенде, функция ақпаратпен алмасуы керек. Мұны ауқымды айнымалылар көмегімен жүзеге асыруға болады.

Функциядан қайтару  механизмі:

return [өрнек];

Егер функция void сияқты сипатталса, онда өрнек көрсетілмейді.

Мысалы:

int f1 {return 1;}     //дұрыс

void f2 {return 1;}  // дұрыс емес, f2 мән қайтармайды

Өзін-өзі шақыратын  функция рекурсивті деп аталады. Рекурсивті функцияның классикалық  мысалы: факториалды есептеу.

Функция шаблонының форматы:

template <class Type> тақырып{

функция денесі}

Type сөзінің орнына  басқа атты қолдануға болады.

Функцияның түрлері: стандартты библиотеканың фунциялары, енгізу/шығару функциялары, қатарлар мен символдармен жұмыс істейтін функциялар, математикалық функциялар.

Кез-келген программа  мәліметтерді өңдеуге арналған. Мәліметтерге жады компиляция этапында немесе new операциясының, болмаса malloc  функциясының көмегімен программаның орындалу барысында бөлінеді. Екі жағдайда да жадының үзіліссіз аймағы бөлінеді.

Егер мәліметтермен  жұмысты бастағанға дейін оларды сақтауға қанша жады талап етілетінін анықтау мүмкін болмаса, онда жады қажеттілікке байланысты бөлінеді. Мәліметтерді ұйымдастырудың бұл тәсілі мәліметтердің динамикалық құрылымы деп аталады, олардың өлшемі программаның орындалуы кезінде өзгеріп отырады.

Программада сызықты  тізімдер, стектер, кезектер, бинарлы бұтақтар жиі қолданылады.

Элементтер жиынын байланыстырудың  ең қарапайым тәсілі- әр элементтің келесі элементке сілтеме жасауы. Мұндай тізім бір бағытты деп аталады. Егер  әр элементке екінші сілтемені (алдыңғы элементке) қоссақ, онда ол екі бағытты деп аталады. Егер соңғы элементті алғашқының нұсқауышымен байланыстырсақ, онда ол сақиналы тізім деп аталады.

Әр элемент кілт бола алады. Кілт не бүтін , не қатар, не мәлімет  өрісі болуы мүмкін.

Тізіммен келесі операцияларды  орындауға болады:

  • тізімнің бастапқы қалыптасуы;
  • тізімнің соңына элемент қосу;
  • кілтті элементті оқу;
  • кілтті элементті жою;
  • кілт көмегімен тізімді реттеу.

Стек- бір бағытты тізімнің жеке жағдайы, стектің төбесінен  элементті таңдап алуға және элементті  қосуға болады. Басқа операциялар  анықталмаған.

Таңдау кезінде элемент  стектен алынып тасталынады. Стек LIFO (last in-first out) қағидасына сүйенеді.

push-стекке орналастыру функциясы және pop-стектен таңдау функциясы. Стекпен жұмыс істеуге арналған нұсқауыш оның төбесіне (top) нұсқалады.

Мысалы: стекке нөмірленген шарларды салайық (1, 2, 3, 4, 5). Ретімен орналастырайық, шарларды стектен алып тастау керек (5, 4, 3, 2, 1).

#include <iostream.h>

struct Node {

int d;

Node *p;};

Node *first(int d);

void push(Node**top, int d);

int pop(Node**top);

//…………………………………………………int main(){

Node *top=first(1);

for (int i=2:i<6; i++) push(&top, i);

while(top)

cout<<pop (&top)<<‘  ‘;

return 0;}

//………………………………………………

//стектің бастапқы қалыптасуы

Node *first(int d);{

Node *pv=new Node;

pv->d=d;

pv->p=0;

return pv;


//………………………………………………..

//Стекке орналастыру

void push(Node**top, int d){

Node *pv=new Node;

pv->d=d;

pv->p=*top;

*top= pv;

}

pv->d=d;

pv->p=0;

return pv;


//………………………………………………..

//Стекке орналастыру

void push(Node**top, int d){

Node *pv=new Node;

pv->d=d;

pv->p=*top;

*top= pv;

}

//…………………………………………………//стектен таңдау

int pop(Node**top){

int temp=(*top)->d;

Node *pv=*top;

*top=(*top)->p;

delete pv;

return  temp;

}

Программаның нәтижесі: 5 4 3 2 1

Кезек-бір бағытты  тізімнің жеке жағдайы, элементтерді қосу бір басынан, ал таңдау екінші басынан бастап жүргізіледі.

Кезек FIFO (first in-first out) қағидасына сүйенеді. Басқа операциялар анықталмаған.

add-кезекке орналастыру функциясы және del-кезектен таңдау функциясы. Кезектің басының нұсқауышы- pbeg, ал  соңының нұсқауышы- pend

Бинарлы бұтақтар- түйіндерден  тұратын мәліметтердің динамикалық  құрылымы, олардың әрқайсысы екіден артық емес сілтеме жасай алады. Бастапқы түйін бұтақ тамыры (корень) деп аталады. Алғашқы  түйіндер- ата-анасы, енушілер-ұрпағы деп аталады. Бұтақтың биіктігі оның деңгейлерімен анықталады

 

 

 

 

 

 

 

 

 

 

 

 

3лекция

Объектілі-бағытталған  программалау. Класстар. Конструкторлар

Қарастырылатын сұрақтар:

  1. Объектілі-бағытталған программалау.
  2. Класстарды және объектілерді сипаттау
  3. Конструкторлар. Көшіру конструкторы

Объектілі-бағытталған  программа- лаудың негізі-класс. Класс  қолданушы анықтайтын мәліметтер типі болып табылады. Класста мәліметтер құрылымы мен оларды өңдеу функциялары  бірігеді. Класстың нақты шамалары класс объектілері деп аталады.

 Объектілі-бағытталған программа- лаудың негізгі қасиеттері:  инкапсуляция, мұрагерлік, полиморфизм.

Класстар – бұл  нақты программада анықталған типтер. Класс –бұл объектілер емес, оларды құруға арналған  шаблондар. Класстар class түйінді сөзінің көмегімен сипатталады.

Класстың мәліметтері мәлімет-мүшелер деп, ал функциялары функция-мүшелер деп аталады. Класстың функция-мүшесін шақыру үшін объектінің атынан кейін нүкте (.) операциясын қолдану керек. Ал (::) операциясы функцияның қай классқа жататынын анықтайды

Базалық класс төмендегідей анықталады (синтаксис):

class <className>

{   private:

  <жабық мәлімет-мүшелер>

  <жабық конструкторлар>

  <жабық функция-мүшелер>

protected:

  <қорғалған мәлімет-мүшелер  >

  < қорғалған конструкторлар>

  < қорғалған функция-мүшелер>

public:

  <ашық мәлімет-мүшелер  >

  <ашық конструкторлар>

  <ашық деструкторлар>

  <ашық функция-мүшелер>

};

private, protected, public түйінді сөздері класстарды хабарлау кезінде бірнеше рет қолданылуы мүмкін. Олардың реті жоқ.

Мысалы:

class Complex {

public:    

int real;   // нақты бөлігі 

int imaginary;   // жорамал бөлігі  

 void Add(Complex x); // комплекс санды қосу

};

Complex класы үшін  Add  операциясы  анықталған.

Классты анықтағанда, біз Complex типті  айнымалыны құрамыз:

Complex number;

number айнымалысы  Complex типінің мәнінен  тұрады, яғни Complex класының объектісінен  тұрады. Енді объект атрибуттарының  мәндерін бере аламыз: number.real = 1;

number.imaginary = 2;

Complex класының тағы бір объектісін  құрып, оны біріншіге қоса аламыз:

Complex num2;

number.Add(num2);

class Complex {public:     

int real; 

  int imaginary;

     void Add(Complex x);};

void Complex::Add(Complex x)

{     real = real + x.real;   

imaginary = imaginary + x.imaginary;}

int main()

{Complex number;     number.real = 1;

Complex     number.imaginary = 3; 

   Complex num2;

Complex     num2.real = 2;   

num2.imaginary = 1;   

number.Add(num2);              

   return 1;}

Конструкторлар объектіні  инициализа- циялау үшін арналған және автоматты түрде шақырылады. Конструктордың негізгі қасиеттері:

  • конструктор мән қайтармайды, void типі болса да;
  • класстың бірнеше конструкторлары болуы мүмкін, бірақ олар әр түрлі параметрлі;
  • параметрсіз шақырылған конструктор үндеместік конструкторы (конструктор по умолчанию) деп аталады;
  • параметрлі конструктор инициализация конструкторы деп аталады;
  • егер программист бірде–бір конструкторды көрсетпесе, онда компилятор оны өзі құрады;
  • ауқымды объектілердің конструкторлары main функциясы шақырылғанға дейін берілуі керек;
  • конструктор мұрагерлікке қалдырылмайды

Көшіру конструкторы- бұл класстың объектісіне нұсқауыштың жалғыз параметрі ретінде алынатын конструктордың арнайы түрі.

Берілу форматы:

T::T(const T&)  {конструктор денесі},

мұндағы Т-конструктор  аты.

Жаңа объект бар объектіні көшіру арқылы алынатын болса, онда көшіру конструкторы шақырылады.

 

 

 

 

 

 

 

 

 

3лекция

Объектілі-бағытталған  программалау. Класстар. Конструкторлар

Қарастырылатын сұрақтар:

  1. Объектілі-бағытталған программалау.
  2. Класстарды және объектілерді сипаттау
  3. Конструкторлар. Көшіру конструкторы

Объектілі-бағытталған  программа- лаудың негізі-класс. Класс  қолданушы анықтайтын мәліметтер типі болып табылады. Класста мәліметтер құрылымы мен оларды өңдеу функциялары  бірігеді. Класстың нақты шамалары класс объектілері деп аталады.

 Объектілі-бағытталған  программа- лаудың негізгі қасиеттері:  инкапсуляция, мұрагерлік, полиморфизм.

Класстар – бұл  нақты программада анықталған типтер. Класс –бұл объектілер емес, оларды құруға арналған  шаблондар. Класстар class түйінді сөзінің көмегімен сипатталады.

Класстың мәліметтері мәлімет-мүшелер деп, ал функциялары функция-мүшелер деп аталады. Класстың функция-мүшесін шақыру үшін объектінің атынан кейін нүкте (.) операциясын қолдану керек. Ал (::) операциясы функцияның қай классқа жататынын анықтайды

Базалық класс төмендегідей анықталады (синтаксис):

class <className>

{   private:

  <жабық мәлімет-мүшелер>

  <жабық конструкторлар>

  <жабық функция-мүшелер>

protected:

  <қорғалған мәлімет-мүшелер  >

  < қорғалған конструкторлар>

  < қорғалған функция-мүшелер>

public:

  <ашық мәлімет-мүшелер  >

  <ашық конструкторлар>

  <ашық деструкторлар>

  <ашық функция-мүшелер>

};

private, protected, public түйінді сөздері класстарды хабарлау кезінде бірнеше рет қолданылуы мүмкін. Олардың реті жоқ.

Мысалы:

class Complex {

public:    

int real;   // нақты бөлігі 

int imaginary;   // жорамал бөлігі  

 void Add(Complex x); // комплекс санды қосу

};

Complex класы үшін  Add  операциясы  анықталған.

Классты анықтағанда, біз Complex типті  айнымалыны құрамыз:

Complex number;

number айнымалысы  Complex типінің мәнінен  тұрады, яғни Complex класының объектісінен  тұрады. Енді объект атрибуттарының  мәндерін бере аламыз: number.real = 1;

number.imaginary = 2;

Complex класының тағы бір объектісін  құрып, оны біріншіге қоса аламыз:

Complex num2;

number.Add(num2);

class Complex {public:     

int real; 

  int imaginary;

     void Add(Complex x);};

void Complex::Add(Complex x)

{     real = real + x.real;   

imaginary = imaginary + x.imaginary;}

int main()

{Complex number;     number.real = 1;

Complex     number.imaginary = 3; 

   Complex num2;

Complex     num2.real = 2;   

num2.imaginary = 1;   

number.Add(num2);              

   return 1;}

Конструкторлар объектіні  инициализа- циялау үшін арналған және автоматты түрде шақырылады. Конструктордың негізгі қасиеттері:

  • конструктор мән қайтармайды, void типі болса да;
  • класстың бірнеше конструкторлары болуы мүмкін, бірақ олар әр түрлі параметрлі;
  • параметрсіз шақырылған конструктор үндеместік конструкторы (конструктор по умолчанию) деп аталады;
  • параметрлі конструктор инициализация конструкторы деп аталады;
  • егер программист бірде–бір конструкторды көрсетпесе, онда компилятор оны өзі құрады;
  • ауқымды объектілердің конструкторлары main функциясы шақырылғанға дейін берілуі керек;
  • конструктор мұрагерлікке қалдырылмайды

Информация о работе С++ тілінің базалық жабдықтары