
- •11)Ағымдық кластардың иерархиясы. Файлдық енгізу/шығару.
- •Класстар иерархиясын құру
- •12. Класс шаблондары, қызметі ерекшелігі.
- •Шаблон параметрі ретінде параметре типі, қарапайым параметр типі, шаблон параметрі бола алады.
- •13. Виртуалдық, достық, статикалық қызметтер. This көрсеткіші
- •14.Атаулар кеңістігі, түрлену қызметі, кластың статикалық мүшелері, кластың тұрақты және модификацияланатын мүшелері.
- •15.Тапсырмалардың паралелді орындалуы.
- •16.Fortran программалау тіліндегі операциялар, өрнектер және стандартты функциялар.
- •17.Fortran тіліндегі мәліметтер типі. Мәліметтер инициализациясы.
- •Fortran тіліндегі енгізу/шығару операторларының классификациясы.Атаулы және атаусыз тізіммен басқарылатын енгізу/шығару. Форматталған енгізу/шығару.
- •Енгізілген екі санның суммасын файылға жазатын есептің программасын жазайаық
- •Fortran тіліндегі шартты оператордың құрылысы.
- •1. Арифметикалық
- •2. Логикалық
- •20. Fortran тіліндегі циклді оператордың классификациясы. Параметрмен, алғы шартпен және соңғы шартпен жазылатын циклдер.
- •Бірден n ге дейінгі сандардың суммасын есептеу.
- •Вычисление суммы целых чисел в цикле с предусловием.
- •Fortran тілінде статикалық массивтерді хабарлау және инициализациялау.
- •Fortran тілінде динамикалық массивтерді хабарлау және инициализациялау.
- •24.Fortran тіліндегі сыртқы және ішкі процедуралар.
- •25.Fortran тіліндегі модулдер және олардың қолданылуы
14.Атаулар кеңістігі, түрлену қызметі, кластың статикалық мүшелері, кластың тұрақты және модификацияланатын мүшелері.
Егер кластың берілгендер өрісі static қызметші сөзімен сипатталса, онда бұл өрістің мәні сол кластың барлық объектілері үшін бірдей болады. Кластың статикалық берілгендері барлық объектілер қандай да бірдей мәндерді бірлесе қолданғанда пайдалы. Статикалық өріс өз мінездемесі бойынша статикалық айнымалыға ұқсас: ол класс ішіде ғана көрінеді, ал оның өмірінің уақыты программаның өмір сүру уақытымен сәйкес келеді. Бірде бір класс объектісі болмаса да, статикалық айнымалысынан өзгешелігі – кластың статикалық өріс бар болады. Кластың статикалық айнымалысын қолдану мысалын қарастырайық. Берілген мезетте әр объекті өзі сияқты жадыда қанша объект бар екендігін білу қажет болсын. Бұл жағдайда класқа count есімді статикалық айнымалыны енгізіеміз. count айнымалысын барлық объектілір көре алады және олардың бәрі бірдей мәнді көреді. // statdata. cpp # include < iostream. h> class foo {private:
Static int count; public: foo ( ) { count ++;} int getcount ( ) { return count; } }; int foo : : count = 0; // count анықтамасы int main( ) { foo f1, f2, f3; cout << ”Объект саны = “ < cout << “Объект саны = “ < cout << “Объект саны =” < return 0; }
f1, f2, f3 объектілері үшін main( ) функциясында конструктор үш рет шақырылады, count өрістерін инкременттеу де үш рет болады. getcount ( ) әдісі count –ты қайтарады. Барлық жағдайда да бұл әдіс бір мәнді қайтарады. Объект саны =3 Объект саны =3 Объект саны =3 Егер статикалық емес, автоматты count өрісін қолдансақ, онда конструктор әр объекті үшін бұл өрістің мәнін бірге арттырар еді. Объект саны =1 Объект саны =1 Объект саны =1
15.Тапсырмалардың паралелді орындалуы.
Си тіліндегі екі процесс арасындағы хабар алмасу мысалы
#include "mpi.h"
#include <stdio.h>
int main(int argc, char **argv)
{
int rank;
float a, b;
MPI_Status status;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
a = 0.0;
b = 0.0;
if(rank == 0)
{
b = 1.0;
MPI_Send(&b, 1, MPI_FLOAT, 1, 5, MPI_COMM_WORLD);
MPI_Recv(&a, 1, MPI_FLOAT, 1, 5, MPI_COMM_WORLD, &status);
}
if(rank == 1)
{
a = 2.0;
MPI_Recv(&b, 1, MPI_FLOAT, 0, 5, MPI_COMM_WORLD, &status);
MPI_Send(&a, 1, MPI_FLOAT, 0, 5, MPI_COMM_WORLD);
}
printf("process %d a = %f, b = %f\n", rank, a, b);
MPI_Finalize();
}
MPI технологияларын қолданып пи санын Си тілінде есептеп шығару
#include <stdio.h>
#include <mpi.h>
double f(double y) {return(4.0/(1.0+y*y));}
int main(int argc, char* argv[])
{
double w, x, sum, locpi, pi, t1, t2;
int i, rank, size;
int n = 1000000000;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Barrier(MPI_COMM_WORLD);
t1=MPI_Wtime();
w = 1.0/(double)n;
sum = 0.0;
for(i=rank+1; i <= n; i+=size)
{
x = w*(i-0.5);
sum = sum + f(x);
}
locpi = w*sum;
MPI_Reduce(&locpi, &pi, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD);
MPI_Barrier(MPI_COMM_WORLD);
t2=MPI_Wtime();
if(rank==0) printf("N= %d, Nproc=%d, pi = %lf, Time=%lf \n", n, size, pi, t2-t1);
MPI_Finalize();
}