fprintf(s0,s1, s2);
Burada s0-faylın, s1 – formatlar sətiri, s2 – xaric olunan dəyişənlər.
Umümi qaydalar fscanf funksiyda kimidir.
Format kodları eynidir amma burada tipnən bərabər dəyişən üçün yerın ölçüsü də təyin olunur.
Faylı qeri qaytarmaq üçün REWIND (file ) funksiyası istifadə olunur.
Faylın sonunu təyin etməq üçün while dövrü və xüsusu EOF (end of file) işərədən istifadə olunur.
Misal 1.
vag.dat faylıda 2 3 6 7 -2 tam ədədlər yazılıb.
#include
#include
void main (void)
{
FILE *min;
int i;int x,y,z,w;
min=fopen("d:\\vag.txt","r");
for (i=1;i<4; i++)
fscanf(min,"%d\n",&x);
fscanf(min,"%d",&y);
fscanf(min,"%d\n",&w);
z=x+y+w;
printf("%d",z);
fclose (min);
}
Əvvəl vag.txt faylı yaradılmalıdır və müvafiq kataloqda yerləşdirilməlidir !!!!! !!!!!
Misal 2
vag.dat faylıda 2 3 6 7 -2 tam ədədlər yazılıb.
#include
#include
void main (void)
{
FILE *min;
int i;int x,y,z,w;
min=fopen("d:\\vag.txt","r");
fscanf(min,"%d\n",&x);
fscanf(min,"%d",&y);
rewind(min);
fscanf(min,"%d\n",&w);
z=x+y+w;
printf("%d",z);
fclose (min);
}
Misal 3
vag.dat faylıda 5 7 2 7 -2 tam ədədlər yazılıb. Aşağıdakı proqramda nə çap olunacaq ?
#include
#include
void main (void)
{
FILE *min;
int i;int x,y,z,w;
min=fopen("d:\\vag.txt","r");
z=0;
while (fscanf(min,"%d\n",&x)!=EOF)
if(x>0) z=z-x+2;
printf("%d",z);
fclose (min);
}
Funksiyalar
Çox vaxt bəzi məsələlərin həllində eyni tipli amma müxtəlıf verilənlıərlə icra olunan hissələr rast olunur.
Təkrarlanmanı aradan qaldırmaq üçün və proqramı daha aydın və sadə eləməq üçün bütün proqramlaşdırma dillərində belə hissələri ayrı və müstəqil altproqramlara çevirən vasitlər mövcuddur.
Belə hissələr əsas proqrmdan çağırıla bılər və icra olunub cavabı əsas proqrama qaytara bilər.
Belə xüsusi proqramlar iki cür olur prosedur və funksiya. C dilində tək funksiyalar istifadə olunur.
Mürrəkəb proqramların yaradılmasında funksiyasız demək olar ki keçinmək olmaz.
Belə yanaşmanın bir neçə üstün cəhəti var:
-
proqramlar hissə hissə yazıla bilər
-
hazıi hissələr başğa proqramlarda istifadə oluna bilər
-
proqramin umümi yaddaşı azalır
-
proqram daha aydın və strukturlaşmış olur
Mənfi cəhəti proqramın müyəən qədər icrasının vaxtın artmasıdır.
Ümümi şəkildə funksiya aşağıdaki kimi yazılır
tip ad function ( formal parametrlər)
{
return (çıxış dəyşəni)
}
Formal parametrlər funksiyaya ötürülən qiriş verilənləridir
tip: ad formatında verilir.
Müraciyat üçün dd=ad() formatı ya da bir başa ifadədən oluna bilər.
Funksiyanın öz daxılı dəyşənləri ola bılər və onlar elan olunmalıdır. Onlar lokal adlandırılır.
Əğər global dəyşənin adı lokalnan üst üstə düşür onda lokal dəyşənın üstünlüyi var.
Əğər funksiya bir neçə cavab qaytarmalıdır onda onları da formal parametr yolu ilə ötürmək olar.
C++ dilində bütün funksiylar prototipi elan olunmalıdir. Prototip bu funksiyanın başliq operatoru, və o proqram faylın əvvəlində ya da xüsusi protiplər faylında yerləşdirilməliir. Bu faylın h qenişlənməsi olmalıdır.
Verilənlər funksiyaya 3 yolla ötürülə bilər
-
qiymətlərlə
-
qöstəricilərlə *
-
linklərlə &
Birinci üsulla məlumat bir istiqamətə ötürulə bilər əsas proqramdan
funksiyaya, əks istiqamətdə olmaz !!!!!!!
İkinci və üçüncu üsullarla hər iki istiqamətdə olar. !!!!!!
Funksiylar əsas proqramdan sonra yerləşməlidir.
-
Misal verilənlər qiymətlərlə ötürülür
#include
int iadder(int ix, int iy); // prototype
main ()
{
int ia=23;
int ib=13;
int ic;
ic=iadder(ia,ib);//ic=ia+ib
printf(“summa=%d\n”,ic);
}
int iadder (int ix,int iy)
{
int iz;
iz=ix+iy;
return(iz);
}
-
Misal qöstəricilər vasitəsi ilə
#include
int iadder(int *px, int *py); // prototype
int main ()
{
int ia=23;
int ib=13;
int ic;
ic=iadder(&ia,&ib);
printf("summa=%d\n",ic);
return(0);
}
int iadder (int *ix,int *iy)
{
int iz;
iz=*ix+*iy;
return(iz);
}
-
Misal linklərlə vasitəsi ilə
#include
int iadder(int &px, int &py); // prototype
int main ()
{
int ia=23;
int ib=13;
int ic;
ic=iadder(ia,ib);
printf("summa=%d\n",ic);
return(0);
}
int iadder (int &ix,int &iy)
{
int iz;
iz=ix+iy;
return(iz);
}
Funksiyaya massivləri aşağıdaki üsullarla ötürmək olar
Misal Massivin qöstəricilər vasitəsi ilə ötürülməsi
#include
int vag (int *b, int n); // prototype
int main ()
{
int a[7]={2,4,5,12};
int s1;
s1=vag(a,2);
printf("summa=%d\n",s1);
return(0);
}
int vag (int *b,int n)
{
int s=0,i;
for (i=0;i<=n;i++)
s=s+b[i];
return(s);
}
Misal Massivin adi yolla ötürülməsi
#include
int vag (int b[],int n); // prototype
int main ()
{
int a[7]={2,4,5,12};
int s1;
s1=vag(a,2);
printf("summa=%d\n",s1);
return(0);
}
int vag (int b[],int n)
{
int s=0,i;
for (i=0;i<=n;i++)
s=s+b[i];
return(s);
}
#include
#include
float x1(float &a,float &b,float &c,float &x2);
main()
{float a1=1,b1=-4,c1=4,z1,z2;
z1=x1(a1,b1,c1,z2);
printf ("%8.2f %8.2f",z1,z2);
}
float x1(float &a,float &b,float &c,float &x2)
{float d,w;
d=b*b-4*a*c;
if (d<0)
{
printf ("cavab yoxdur");
x2=0;
w=0;
return(w);
}
else
{x2=(-b+sqrt(d))/(2*a);
w=(-b-sqrt(d))/(2*a);
return (w);
}
}
Verilənlər mubadiləsini global dəyişənlərlə də aparmaq olar !!!!!
Misal
#include
int vag (int b[], int n); // prototype
int cc=10; //global her yerda istifade olunu biler !!!
int main ()
{
int a[7]={2,4,15,12,10,8,4};
int s1;
s1=vag(a,7);
printf("summa=%d\n",s1);
return(0);
}
int vag (int b[],int n)
{
printf("n=%d\n",n);
int s=0,i;
for (i=0;i
if (b[i]<=cc) s=s+b[i];
return(s);
}
Strukturlar
Strukturlar massivlər kimi mürəkəb tip verilənlərə aiddır, yəni sadə əsəsında qurulur.
Struktur bir ad altında birləşən bir neçə mühtəlif tipdə olan bir mürəkəb verilənlər tipidir.
Misal
struct tarix
{
int day // gun
int month // ay
int year // il
};
Burada hər hansı bir tarixi təsvir etmək üçün struktur tipi élan olunur.
Bu tipə aid olan verilənlər aşağıdaki kimi élan olunur
tarix farida, aytan; // burda iki tarix tipli deyisen élan olunur
Struktur tipli verilənləri inisilizasiya ( yəni ilkin qiymət vermək olar)
tarix vagif={25,12,1952}; // burada tarix tipli vagif deyseni élan olunur ve ona muvafiq qi. Ver
Strukturun müvafiq elementinə müraciyyət etmək üçün .(nöqtə) əməlliytdan istifadə etmək olar.
farida.day=23;
aytan.month=10;
Strukturlardan massivlər qurmaq olar
struct tarix shalala [5];
Müraciyyət etmək üçün shalala[0].year=1999;
Misallar
#include
#include
main ()
{
struct qiymat
{
int riyaz;
int math;
} ;
qiymat x,y;
int c;
x.riyaz=20;
y.riyaz=45;
c=x.riyaz+y.riyaz;
printf("%d",c);
}
#include
#include
main ()
{
struct vag
{
int t1;
int t2;
int t3;
} ;
vag x,y,*pt;
int c;
pt=&x;
pt->t1=2; y.t3=10;
y.t2=5;
c=x.t1+y.t2+y.t3;
printf("%d",c);
}
#include
#include
main ()
{
struct aytan
{
int s1;
int s2;
} ;
aytan x[5];
int i, s=0;
for (i=0;i<5;i++) {
x[i].s1=i;
s+=x[i].s1; }
printf("%d",s);
}
#include
#include
main ()
{
struct vag
{
int t1;
int t2;
int t3;
} ;
vag x,y;
int c;
x.t1=0; y.t3=10;
y.t2=5;
c=x.t1+y.t2+y.t3;
printf("%d",c);
}
Obyekt-yönümlü proqramlaşdırma
Obyekt-yönümlü proqramlaşdırma (OYP) bu səmərəli proqramlaşdırma texnologiylardan biridir. Məlumdur ki bu istiqəmətdə ilk addım modul proqramlaşdırma üsulu olmuşdur, yəni funksiylarda geniş istifadə metodı.
OYP-nın əsas anlayışı sinif anlayşıdır. Sinif – bu mürəkəb veilənlər tipidir və özündə verilənləri və onları emal edən funksiyları saxlayır. Başğa sözlə bu xüsusi strukturdur harda verilənlərlə bərabər onları emal edən funksiyalar da təsvir olunur. Verilənlər atribut adlandırılır, funksiylar –metod.
Sinifə daxil olan konkret nümayədələr obyekt adlandırılır.
OYP bu fərqli proqramlaşdırma stilidir. Hal hazırda müxtəlif proqramlaşdırma sistemlərində bu üsul tətbiq olunur.
OYP-nın əsas əməliyyatları
Obyekt.qiymət= qiymet;
Obyekt.method;
Siniflərin üç əsas xüsusiyəti var
İnkapsulasiya – bir struktur çərçivəsidə verilənləri və onları emal funksiyları cəmləmək xüsusiyətidir.
Varisliq- bir sinifdən başğa siniflər töyriyə bilər. Birinci valedeyin adlandırılır ikincisi törəmə. Valedeyinin atribuları və metodlari törəmə tərəfindən istlfadə oluna bilər. Valedeyin –insanlar sinifi, törəmə tələbələr sinifi.
Polimorfizm- bu eyni olan metodların müxtəlif tip obyektlər tərəfindən istifadəsinin mümkünliyi.
Misal 1.
#include
#include
struct farida {
int a;
int b;
int c;
int vag1(int s) { b=2*s+8;return(b);}
int vag2 (int s) { b=2*s*s+4*s;return(b);}
} x,y;
main ()
{ int d,c;
x.a=y.vag2(1); y.a=y.vag1(2);
if (x.a==x.b )
cout<
else
cout<}
Misal 2 .
#include
#include
struct aytan {
int a;
int b;
int vag1(void) { a=pow(2,2);return(a);}
int vag2 (void) { b=pow(3,2);return(b);}
} x,y;
main ()
{ int d,c;
c= x.vag1();d=y.vag2();
cout<< c+d;
}
Dostları ilə paylaş: |