Лекция №7 Жады кластары. Модульдік бағдарламалау. Функциялар: жариялау, анықтау, функцияның параметрлері


№1 тапсырма. a,b,c нақты сандары берілген. алу керек



бет6/7
Дата16.03.2023
өлшемі265,5 Kb.
#74782
түріЛекция
1   2   3   4   5   6   7
Байланысты:
ОП лекция 7 functions

№1 тапсырма. a,b,c нақты сандары берілген. алу керек.

  • #include
  • #include
  • using namespace std;
  • float max (float a, float b);
  • float max (float a, float b)
  • { float m;
  • if (a>b) m=a;
  • else m=b; return m; }
  • int main()
  • { setlocale (LC_ALL,"rus");
  • float a,b, c,z;
  • cout<<“a,b,c"; cin>>a>>b>>c;
  • z=(max(a,a+b)+max(a,b+c))/max (1+a+b*c,1.15);
  • cout<<“Rezultat="<
  • return 0; }

№2 тапсырма. s,t нақты сандары берілген. f(t,-2s,1.17)+f(2.2,t,s-t) алу керек, мұндағы

  • Шешімі:
  • #include
  • #include
  • #include
  • using namespace std;
  • /* Функциянын аныкталуы */
  • float result (float a, float b, float c);
  • /* Бас модульдің мәтіні */
  • int main()
  • { setlocale (LC_ALL,"");
  • float s,t,res;
  • /* айнымалыларды енгіз */ cin>>s>>t;
  • res=result(t,-2*s,1.17)+result(2.2,t,s-t);
  • /* res шығару */ cout<<"\n"<
  • cin.get(); return 0;}
  • /* result функцияның нәтижесі */
  • float result(float a, float b, float c)
  • { float j;
  • j=(2*a-b-sin(c))/(5+abs(c)); return j;}
  • 2.Айнымалылардың әрекет ету аймағы
  • Айнымалылардың әрекет ету аймағы дегеніміз – прог-рамманың орындалу сәтіндегі пайдалануға болатын айныма-лылардың анықталу ережелері.
  • Айнымалылардың үш түрлі – ауқымды (глобальды), жергілікті (локальды) және өзгермелі (формальды) типтері болады. Жергілікті айнымалылардың әрекет ету аймағы – осы жергілікті айнымалылар жария етілген блоктар. Бұл блоктан шыққаннан кейін жергілікті айнымалылардың атаулары мен олардың мәндерін пайдалануға болмайды.
  • Өзгермелі, яғни формальды айнымалылар – тұтынушы функциясының сипатталуы мен анықталуы тақырыбында көрсетілген параметрлері. Формальды параметрлер функция тұлғасында жергілікті айнымалылар сияқты пайдаланылады. Олардың әрекет ету аймағы – функция тұлғасы болып табылатын блок.
  • Ауқымды айнымалылар функциялардан тысқары түрде, яғни программаның басынан соңына дейін белгілі болып жарияланады. Мұндай айнымалылар программаның кез келген жерінде пайдаланыла береді, бірақ олар алғашқы қолданылуы алдында сипатталып, берілген мәні болса, ол меншіктелуі тиіс. Ауқымды айнымалылардың әрекет ету аймағы – олар жарияланған сәттен программа жұмысының аяғына дейінгі кезең.
  • Си тілінде функцияны стандартты түрде шақыру кезінде оның аргументтерінің соңғы меншіктелген мәндері пайдала-нылады, яғни функция тұлғасына аргументтердің түпкі мәні емес, олардың өзгертілген көшірме мәндері беріледі. Ком-пьютер жадында функцияның формальды параметрлеріне арналған орын бөлінеді де, осы орындарға функцияны шақырған кезде аргументтердің қазіргі нақты мәндері орналасады.
  • Мұнан соң, функция стектегі аргументтер мәнін пайдалана отырып, оларды өзгерте де алады. Бірақ функция тұлғасынан шығысымен-ақ, оның ішінде өзгертілген айнымалылар мәндері бірден жоғалады, ал шақырылған функцияның жұмысы барысында параметр ретінде берілген аргументтердің нақты мәндері өзгертілмеуі тиіс.
  • Дегенмен қажет болып жатса, онда функцияны оған жіберілген аргументтер мәнін өзгерту үшін пайдалануға болады. Мұндайда функцияға аргумент ретінде айнымалылардың мәндері емес, олардың адрестері жіберіледі. Ал сол аргументтің мәнін пайдалану үшін «*» операциясын пайдалану керек.
  • Төменде x пен y сияқты екі аргументтің бір-бірімен орындарын ауыстыратын функция мысалы келтіріліген:
  • void z1(int *x, int *y)
  • { int t;
  • t=*x;
  • *x=*y;
  • *y=t;
  • }
  • Программадан осы функцияны шақырып пайдалану мысалы:
  • int a=2, b=3;
  • void z1(int*, int*);
  • . . .
  • printf(“\n a=%d, b=%d”, a, b);
  • z1(&a, &b);
  • printf(“\n a=%d, b=%d”, a, b);
  • . . .
  • Нәтижесі:
  • a=2, b=3
  • a=3, b=2
  • Енді келесі программаны қарастырайық.
  • #include
  • int icube (int value)
  • {
  • return (value * value * value);
  • }
  • void main ()
  • {
  • printf("3 cubed is %d\n", icube(3));
  • printf("5 cubed is %d\n", icube(5));
  • printf("7 cubed is %d\n", icube(7));
  • }
  • Бұл программа кодының орындалу нәтижесі:
  • 3 cubed is 27
  • 5 cubed is 125
  • 7 cubed is 343
  • С/C++ тілінде функция өзін өзі шақырып та пайдалана ала-ды, мұндай функция рекурсивті деп аталады.
  • Берілген n бүтін санының факториалын есептейтін (n!=123n) рекурсивті функция мысалы:
  • fakt (int n)
  • {
  • int b;
  • if (n == 0) return 1;
  • b = fakt(n-1)*n;
  • return n;
  • }
  • Осы функцияны енгізілген n мәні үшін кез келген бүтін санның факториалын есептеуде қолданудың толық прог-раммасы төмендегі мысалда келтірілген.


Достарыңызбен бөлісу:
1   2   3   4   5   6   7




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет