Функция void и oператори за присвояване

В практиката често се налага един и същи алгоритъм за определена обработка на данни да се използва в различни части на програмата. В езиците за програмиране се използват такива структури, позволяващи многократно използване. Този подход се оказва удачен както за малки, така и за големи по обем програми. Подобни структури се наричат функции, по аналогия с математиката – предават се определен брой параметри и се получава даден тип стойност. Функция от типа void има следната структура: void име на функция (предавани параметри) {тяло на функцията - съставен оператор}. Възможно е, но не е задължително последният ред функция от вида void да съдържа оператор return.

  Името на функцията, както и променливата, трябва да се подчинява на определени правила: да съдържа букви от латинската азбука и/или цифри, първият знак да е буква, да не съдържа препинателни знаци и интервали. Във всяка реализация на C++ има готови (вградени в езика, стандартни) функции, чиито имена са фиксирани и представляват служебни думи в езика. Предоставена е и възможност потребителят сам да създава свои функции и/или библиотеки от функции.
  Няма програма, която не ползва поне една служебна функция. Дори и най-често срещания пример с hello world изисква функцията main ().
  Обърнете внимание, че void е служебна дума за езика.
  Описание: най-общо функция от вида void има следния вид:
   void ime_na_funkcia (type1 parameter1, type 2 parameter2, …, typeN parameterN.)
   {код в "тялото" на функцията}

  В някои от езиците функциите се делят основно на две:
  а) процедури – не се очаква връщане на стойност. Примерно да се изведе съдържанието на масив. В C++ се използва служебната дума void. Последната затваряща скоба на функция от типа void предполага неявно изпълнение на оператор return, но без израз, без предаване на стойност.
  б) функции – тук понятията по математика съвпадат с тези по информатика. При изчисляване на по определен алгоритъм и с определен брой и вид аргументи се очаква връщане на една определена стойност - чрез оператор return.
  За разлика от променливите функциите не променят съдържанието си по време на програмата. Докато една променлива съхранява една определена стойност (или адрес на стойност), то във функцията се съхранява програмен код изпълняващ определен алгоритъм.
   Следващата примерна програма илюстрира работата с функция от тип void:
#include <iostream>
using namespace std;

double const pi=3.1415925;

void cilindyr(int r,int h)
 {double V1,V2;
  V1=2*pi*r*r*h;
  cout<<"V1("<<r<<","<<h<<") = "<<V1<<endl;
  V2=2*pi*h*h*r;
  cout<<"V2("<<h<<","<<r<<") = "<<V2<<endl;
  if (V1<V2) cout<<"V1<V2\n";
  else cout<<"V1>=V2\n";  
  //funkciq ot tip void ne wrysha stojnost
}

int main()
{ int r,h;
   cout<<"Imate dwe estestweni chisla r, h ot interwala [1..101], \n";
  cout<<"prdestawlqwashi radius i wisochina na cilindyr.\n";
  cout<<"Obem na cilindyr se izchislqwa po formulata pi*r*r*h.\n";
  cout<<"Da se systawi programa, koqto prowerqwa koga obemyt na cilindyra\n";
  cout<<"she byde po-golqm: a)r>h; b) r<h.\n";
  cout<<"Primer: 4,8 Izhod V1(4,8) =808.248 ; V2(8,4) = 1608.5; V1<V2\n";
  cout<<"Wywedete dylvina na radiusa r: ";cin>>r;
  cout<<"Wywedete dylvina na wisochinata h: ";cin>>h;
  cilindyr(r,h);//izwikwane na funkciqta ot tip void 
  system("pause");
  return 0;
  }//kraj na programa void 

Начало на страницата


oператори за присвояване

Имаме следната примерна задача:
Въведени са две естествени числа a, b и трябва да се изведе резултата от следните действия с тях: += -= *= /= %= >>= <<= &= ^= |=
Отделните oператори са:
+= - за добавяне на стойност
-= - за изваждане на стойност
*= - оператор за произведение
/= - за делене – в случая целочислено делене
%= - целочислен остатък
>>= изместване наляво - целочислено делене на определена степен на 2
<<= изместване надясно – целочислено умножение с определена степен на 2
&= - побитов AND
^= - побитов XOR
|= - побитов OR
Тук не са посочени оператори за отношение, релация. Обърнете внимание, че тук се интересуваме само от резултата на конкретното аритметично действие без да го използваме в друга част на програмата.
Следващата примерна програма съдържа решена задача илюстрираща оператори за присвояване. Всяко от действията се извършва в определена функция от типа void.
#include <iostream>
using namespace std;

void suma(int a, int b)
{ int c,d;
  c=d=a;//na dwete promenliwi c i d se priswoqwa stojnostta a
  c+=b;
  cout<<"Suma a+b = "<<c<<endl;
  c = (d=a, d+b);//razdelitelen operator ,
  cout<<"Chrez razdelitelen oprator Suma a+b = "<<c<<endl;
}// void  suma

void razlika(int a, int b)
{ int c;
  c=a;c-=b;
  cout<<"Razlika a-b = "<<c<<endl;
}// void  razlika

void proizwedenie(int a, int b)
{ int c,d;
  c=d;c*=b;
  cout<<"Proizwedenie a*b = "<<c<<endl;
 }// void  proizwedenie
 
 void cql_ostayk(int a, int b)
{ int c;
  c=a;c%=b;
  cout<<"Celochislen ostatyk a%b = "<<c<<endl; 
 }//  void  cql_ostayk
 
 void cqlo_chastno(int a, int b)
{ int c;
  c=a;c/=b;
  cout<<"Celochisleno chastno a/b = "<<c<<endl;  
   }//  void  cqlo_chastno
   
  void shift_left(int a, int b)
{ int c;
   c=a;c>>=b;// c/ 2^b
   cout<<"Premestwane nalqwo/delene na stepen 2: "<<c<<endl;   
   }//  void  shift_left
   
     void shift_right(int a, int b)
{ int c;
  c=a;c<<=b;
  cout<<"Premestwane nadqsno/umnovenie na stepen 2: "<<c<<endl; 
   }//  void  shift_right
  
void operatori_Bool(int a, int b)
{ int c,d;
  c=d=a;
  c&=b;  
  cout<<"Pobitow AND: "<<c<<endl; 
  c=d;c^=b;  
  cout<<"Pobitow XOR: "<<c<<endl;   
  c=d;c|=b;  
  cout<<"Pobitow OR: "<<c<<endl;            
}//void operatori_Bool   

int main ()
{int a,b,c;
  cout<<"Imate dwe estestweni chisla a,b ot interwala [1..101]. \n";
  cout<<"Da se systawi programa, chrez koqto se wywevdat a,b i se\n";
  cout<<"izwevda rezultat ot slednite dejstwiq:\n";
  cout<<"+=  -=  *=  /=  %=  >>=  <<=  &=  ^=  |=   \n";
  cout<<"Primer: 54,3 Izhod 57; 57; 51; 162; 0; 18; 6; 432; 2; 53; 55 \n";
  cout<<"Wywedete stojnost a: ";cin>>a;
  cout<<"Wywedete stojnost b: ";cin>>b;

 suma( a, b);
 razlika( a, b);
 proizwedenie( a, b);
 cql_ostayk( a, b);
 cqlo_chastno( a, b);
 shift_left( a, b);
 shift_right( a, b);
 operatori_Bool( a, b);
  
system("pause");
return 0;
}//kraj na programata

Задачи с подобни функции и служебни думи са разгледани в страницата с електронни уроци по информатика - програмиране.
Илюстриране работата на характерни алгоритми можете да намерите в предоставените електронни помагала съдържащи решени примери.

Начало на страницата

 
Размер на шрифта
Increase Font Size Option 3 Reset Font Size Option 3 Decrease Font Size Option 3
Bulgarian Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish
Търсене в сайта: