Bakalavr hazırlığı üçün 050631  Kompüter mühəndisliyi ixtisası üzrə



Yüklə 380,55 Kb.
səhifə3/4
tarix14.01.2017
ölçüsü380,55 Kb.
#285
1   2   3   4

Printf funksiyası köməyi ilə


printf(s1, s2);

Burada s1 – formatlar sətiri, s2 – xaric olunan dəyişənlər.

Umümi qaydalar scanf funksiyda kimidir.
Format kodları eynidir amma burada tipnən bərabər dəyişən üçün yerın ölçüsü də təyin olunur.

Formatlar sətitri tam təsvirdə aşagıdaki kimi qurulur



%[bayraq][En][.dəqiqlik][modifikator]tip

Formatlaşdırma simvolları



Parametr

Təyinat

Bayraq

-

Sola sürüşdürmək və sağdan probellar doldurulur. Standarta qörə sürüşdürmə sagadır.

+

Ədədin qabahında «+» ya da «-» işarəsinin çixarılması

Probel

Müsbət ədədin qabağında probel, mənfini – «-»

#

Say sisteminin kodu : 0 – səkkizlik , 0х (0Х) onaltılaq say sistem üçün

En

n

Çıxış sahəsının eni. Əğər kifayyat deyil onda avtomatik qenişləndırılır.Boş yerlər probellarla doldurulur.

0n

Eyni amma boş eyrlər 0 (sifrlarla) doldurulur.

Dəqiqliq




Standart dəqiqlik

n

e, E, f üçün verqüldən sonra n rəqəm

Modifikator

h

d, i, o, u, x, X üçün növ short int

l

d, i, o, u, x, X üçün növ long int

Növ

с

char, при выводе один байт.

d

Signed int

i

Onluq say sistemində signed int

o

8 say sistemində int unsigned

u

Onluq say sistemində sistemində unsigned int

x, X

16 say sistemində int unsigned, х olanda a-f istifadə olunur, Х olanda – A-F.

f

Bu formatda [-]dddd.dddd

e

Bu formatda [-]d.dddde[+|-]ddd

E

Bu formatda [-]d.ddddE[+|-]ddd

g

Ya e ya da f uyğun qiymət və dəqiqlikda asılı olaraq

G

Ya e ya da F uyğun qiymət və dəqiqlikda asılı olaraq

s

Sətirlər üçün

Printf funksiyasında bəzi xüsusi simvollar istifadə olunur.

Bəzi xüsusi simvollar



Simvol

Funksiya

\b

Sola sürüşdürmək

\n

Yeni sətirə keçid

\r

Sətirin əvvəlinə keçid

\t

Horozontal tabulasiya

\’

Apostrof

\’’

Cüt apostrof

\?

Символ ?

Format kodu Verilənlər tipi

%c Simvol

%Md int

%Mld long int



%M.Ne float

%M.Nf float

%M.Nlf double

%M.Ng f,e ümümi

%Mo 8 say sistemində

%s Sətir


%Mu insigned int

%Mx 16 say sistemində


Burada M və N monitorda ayrılan yerin ölçüləridir. M-umümi say N verqüldən sonra. Əğər m kifayyət deyil onda yvarlama keçirilir. !!!!! Əğər n göstərilmiyib onda 6 rəqəm nəzərdə tutulub və artiq qalan yerlər 0( sifır) la doldurulur. !!!!

.


Misallar


scanf("%f%f",&a,&b);

 

scanf("%f%d",&c,&d);

 

printf("a=");

scanf("%f",&a);


CIN və COUT vasitəsi ilə dahiletmə/xaricetmə

Scanf () və printf() funksiyları C və C++ dillərində istifadə olunur. Əlavə olaraq C++ dilində xüsusi cin (daxiletmə) və cout (xaricetmə) obyektləri əlavə olunub.

Onlardan istifadə etmək üçün müvafiq kitabxanasını da include vasitısi ilə qoşmaq lazımdır.

Format:


cin>>x>>y>>a>>b;

Burada 4 dəyiəşən daxil olunur;

Cout<

Burada 3 dəyişən xaric olunur;

Misal:

Scanf(“%f”,&n); əvəzinə



Cin>>n; yazmaq olar.

Scanf(“%d%f%i”,&a,&b,&c);əvəzinə

Cin>>a>>b>>c; yazmaq olar.

Printf(“%d”,n);

Cout<

printf(“%d%f%c”,&a,&b,&t);

Cout<

Cin və cout obyektlərində sərbəst format istifadə olunur və müvafiq format dəyişənlərin tiplərinə uyğun seçilir.

Cout obyektində formatların parametrləri standart seçilir. Proqramçi əlavə olaraq formatları parametrlərini idarə edə bilər. Bunun üçün əlavə olaraq kitabxanası qoşulmalıdır.

Umümi uzunluq setw(n), dəqiqlik setprecision(m), yeni sətirə keçid endl operatorla həyta keçirilir. Əğər n və m təyin olunmayib onda onlar avtomatik ədədə uyğun təyin olunur.

Misal

Float f


Cout<
Misal Xətti proqram
#include

#include

void main(void)

{

/*qrup 647.9*/



float x,t,z,y,w;

scanf("%f%f%f", &x, &t, &z);


y=(2*cos(x))/(1/2+pow(sin(t), 2));

w=y+(z*z)/(3+(z*z)/5);


printf("%8f %8f\n", y, w);
}


İf və goto operatorları

İf operatoru budaqlanma proqramların yradılmasında istifadə oluna bilər. Onun bir neçə variantı mövcuddur.


a) Sadə İf



if ( şərt)
Ifadə;

Əğər şərt ödənilir onda ifadə icra olunur, əks halda heçnə icra olunmur.

Misal
#include

#include

void main (void)

{

int a,x,y;



scanf ("%d %d",&a,&x);
if (a>2)

{

y=x*x;



printf("%10d",y);
}

}

Əğər bir neçə operator icra olunmalıdır onda.


if (şərt)

{

Ifadə 1;



……

Ifadə n;


}
b) if/else operatoru
if (şərt)

Ifadə1;


else

ifadə2;


Əğər şərt ödənilir onda ifadə1 icra olunur, əks halda ifadə2 icra olunur.
Eyniliklə əğər bir neçə operator onda blok {} işarələri istifadə olunmalıdır

if (şərt)

{
}


else

{
}
İf operatorun dahilində başğa if operatorları yerləşə bilər

#include

#include

void main(void)

{

int a, x, y;



scanf ("%d %d",&a, &x);

if (a<3)
y=pow(x,2);


else

if (a>5)


{

y=pow(x,3);


}

else



y=pow(x,4);

printf("%d",y);

}
c) if/else/if operatoru

if (şərt1)

ifadə1;


else if (şərt2)

ifadə2;


else if (şərt3)

ifadə3;
Əğər şərt1 ödənilir onda ifadə1 icra olunur, əğər şərt2 ödənilir onda ifadə2 əğər şərt3 ödənilir onda ifadə3 icra olunur.


goto m; m nişanı olan operaratoruna keçidi təmin edir.

Nişan xüsusi addır və operatorun qabahıda yazılır, misal üçün


farida: y=5; // burada farida nişandır.

Nişanı hır bir icra olunan operatoruna verməqk olar.


Misal IF goto vasitəsi ilə dövr proqramın yaradılması
#include

#include

main()

{

long int x,y;



farida1:printf("x-i daxil et:");

scanf("%ld",&x);

if (x>999)

goto nazir1;

else

{

y=x*x;



printf("%18ld\n",y);

}

goto farida1;



nazir1:printf("proqramin sonu");

}

Switch/case konstruksiyası

Switch (n)

{

Case 1 sabit1 :



ifadə1;

break;


Case 2 sabit2 :

ifadə2;


break;

Case N sabitN :

ifadəN;

break;


[ default: standart ifadə ]

}
Burada n ( tam tipli) dəyşənin qiymətinə uyğun olaraq müvafiq budaq icra olunur

Sonuncu badaq əks halda istifadə olunur.
Misal

#include

main ()

{
float a,b;



char c;
scanf("%f%c%f",&a,&c,&b);

printf("%12.2f%c%12.2f=",a,c,b);


switch (c)

{
case '+' :

printf("%12.2f",a+b);

break;


case '-' :
printf("%12.2f",a-b);

break;


case '*' :

printf("%12.2f",a*b);


break;

case '/' :

printf("%f12.2",a/b);
break;
default :printf("bele emeliyet yoxdur");

}

}


Həftə günü nömrə üzrə

#include

main()

{

int n;



cout<<"Input n:";

cin>>n;


switch (n)

{

case o:cout<<"Sunday"<

case 1:cout<<"Monday"<

case 2:cout<<"Tuesday"<

case 3:cout<<"Wednesday"<

case 4:cout<<"Thursday"<

case 5:cout<<"Friday"<

case 6:cout<<"Saturday"<

default: cout<<"Mistake";

}

}



Dövr operatorları
Hər bir dövr proqramı if və goto operatorların köməyi ilə yazmaq olar. Buna baxmayraq C++ dilində başğa dillərdə kimi xüsusi dövr operatorları mövcuddur. Bu proqramı daha aydın və yığcam edir.
C++ dilində

Üç dövr operatoru mövcuddur


For, whiledo while


    1. for (x=başlanqic qiymət; şərt; modifikasiya)

{

ifadə

}
Burada x dövrün parametri, o başlanqic qiymətini alıb, sonra dövr daxili ifadə icra olunur, sonra parametrin qiyməti dəyişdirilir(modifikasiya olunur) , ya artırılır ya da azaldılır bundan sonra dovrün davam etmə şərti yoxlanılır, əğər şərt ödənilir onda dövr davam edir əks halda dövr bitir.



Misal.

#include

main () // 1 -5 cəmin tapılması

{

int isum,x;



isum=0;

for ( x=1;x<=5;x++)

isum+=x;

printf(“%5d \n”,isum);

}



    1. while (şərt)

{

ifadə


}
Burada dövrün parametri əvvəl təyin olunur və dövr dahili modifikasiya olunur (bunu proqramçi özü təmin etməlidir !!!).

Dövr başlayan vaxtı şərt yoxlanılır və əğər ödənilir onda davam edir əks halda dövr bitir. Bu dövr operatoruna şərti əvvəl olan dövr deyilir.

#include

main () // 1 -5 cəmin tapılması


{
isum=0;

x=0;


while (x<=5)

{

isum+=x;



x++;

}

printf(“%5d \n”,isum);


}


    1. do

{

ifadə


}

while (şərt)
Bu dövrdə tərsinə şərt sonda yoxlanılır, və ona ğörə buna şərti sonda dövr deyilir. Belə dövr ən azı bir dəfə icra olunmalıdır !!!.

Misal


#include

main ()


{

// 1 -5 cəmin tapılması


isum=0:

x=0;


do

{

isum+=x;



x++;

}

while(x<=5);

printf(“%5d \n”,isum);
}

break operatoru dövrdən çıxışı təmin edir. continue dövru növbəti

iterasiyasına kecidi təmin edir.


Misal 2. Funksiyanın intervalda hesablanması

#include

#include

main ()


{

float a,b,h,x,y;

scanf("%f%f%f",&a,&b,&h);

x=a;


while (x<=b)

{

y=pow(x,2);



printf("%8.2f %8.2f \n",x,y);
x+=h;

}

}



Massivlər
Massivlər mürəkəb tip verilənlərdən ən ğeniş istifadə olunan növüdür.

Massiv bu eyni tipdən olan vahid ad adı olan və indekslərin vasitəsi ilə müraciyyət olunan verilənlər çoxluğu.

Massivlər bir ölçülü (vektorlar) və iki ölçülü (matrisalar) və daha çox ölçülü ola bilər. Massivlər başğa dəyişənlər kimi elan olunmalıdılar.
tip ad [ max1];

tip ad [max1] [max2];

Misal

int x [20];



int f[10] [20];

Burda 20 elementdən ibarət olan bir int tipli x massivi və 10*20 ölçüləri olan int tipli f matrisası élan olunur

Elan vaxtı massivin elementlərinə qiymət vermək olar yəni inisializasiyanı aparmaq

int a[5]={3,6,12,34,-78};



C dilində masiivlərin indeksləşdirilməsi 0 dan başlanır, yəni birinci element indeksi 1 yox 0 və axırıncı elemntin indeksi 20 yox 19 dur !!!!!.

Massiv elementlərinə müraciyyət etmək üçün indekslərdən istifadə olunur


Misal üçün x[5]=89;

X massivini 6 elementinə 89 qiyməti verilir !!!!

i=7;

j=8;


f[i][j]=0; f[7][8]=0;

f matrisanın 8 ci sətrində və 9 sütundə yerləşən elemetinə 0 qiyməti mənimsədilir.

Indekslər üzərində əməliyyatlar aparmaq olar

x[2*i-1]=66;

Iki ölçülü massivlər yaddaşda sətirlər üzrə yerləşdirilir.

Massivlər əsasən for dövr operatorun köməyi ilə daxil/xaricemal olunur.




  1. bir ölçülü massivin daxil edilməsi

float a[10];

int b[3][4];

int i,j ;

for (i=0;i<10; i++) scanf(“%f”, a[i]);



  1. iki ölçülü massivin dahil edilməsi (sətirlər üzrə)

for (i=0;i<3;i++)

for (j=0;j<4;j++)

scanf (“%f”, b[i][j]);
c) bir ölçülü massivin (monitora ) xaric edilməsi

for (i=0;i<10;i++) printf(“%8.2 f ”, a[i]);




    1. iki ölçülü massivin xaric edilməsi (sətirlər üzrə)

for (i=0;i<3;i++)

{

for (j=0;j<4;j++) scanf (“%10d”, b[i][j]);



printf(“\n”);

}

Misal Iki vektorun scalar hasilinin hesablanması;



#include
void main (void)

{

int a[3]={2,7,12},s,i;



int b[3];

s=0;


for(i=0;i<3;i++)

{

cin>>b[i];



}

for(i=0;i<3;i++) s=s+a[i]*b[i];

cout<

}

Göstəricilər



Göstəricilər xüsusi verilənlər tipidir. Onlar adi ədədlər ya da mətn yox başğa dəyşənlərin ünvanların ozündə saxlayırlar. Onların vasitəsi ilə proqranlaşdırmanin bəzi problemləırini həll etmək mümkün olur və birinci növbədə əlaqəli verilənlər strukturları yaratmaq olar.

Göstəricilər başğa tip dəyişənlər kimi elan olunmalıdılar.


Misal üçün

int *a;

float *x;

Burada a tam tipli deyişən deyil o tam olan hər hansı bir dəyşənin ünvanını saxlayan bir dəyişəndir !!!!!.

Göstəricilərlə işləyəndə əsasən iki əməliyyat istifadə olunur !!!


& - ünvanın * - qiməti qöstərici əsdasında müyyən edilməsi

& əməliyatı tək dəyşənlərə və masiv elementlərinə tətbiq etmək olar.

Sabitlərə və riyazi ifadələrə tətbiq etmək olmaz

Misal üçün &15 ya da &(a*x+b) qadahandır.

Misal

#include



main ()

{

int a,x;



int *pt; // bu göstəricidir !!!

a=5;


pt=&a;

x=*pt;


printf(“%d %d”,a,x);

}
Bu proqram əslində sadə bir əməliyyat keçirdir x=a;

Göstəricilər massivlərdə istifadə oluna bilər indeks əvəzi kimi.

Bunun üçün göstəriciya massivin ilkin elementini ünvanını mənimsədərək başğa elementlərə keçidi müvafiq atdımla həyta keçirmək olar.

Misal 1
// bu proqram deyil bu fraqmetrdır !!!!

int a[5];

int *pt;

pt=&a[0]; // ilkin elementini təyin edir

onda

pt+2 -> bu a[1] olacaq



pt+4 -> bu a[2]

&a[i]  bu &a[0]+2*i

Misal 2
// bu proqram deyil bu fraqmetrdır !!!!

float w[10],*ptr,x;

int i;

w[0]=5;


ptr=w;

// ya da


ptr= &w[0];

x=*ptr;


// ya da

x=w;
//ya da

x=w[0];

x=*ptr+1;// x=7


ya da

x=*w+1;


ya da

x=w[0]+1;

Göstəricilərdən ibarət olan massiv yaratmaq olar.
Int *at[10];

Misal
#include

#include

main ()


{

int a[3][3]={8,4,2,1,10,4,2,5,2},c,*pt,*pt1;

int i;

pt=&a[0][0];



pt1=&a[2][2];

c=0;


c=*pt+*pt1;
printf("%d",c);
}

#include

main ()

{

int a[4]={8,4,2,1},b[4]={2,7,6,8},c,*pt,*pt1;



int i;

pt=&a[3];

pt1=&b[3];

c=0;


c=*(pt-2)+*(pt1-2);
printf("%d",c);
}

Sətirlərlə iş
C++ dilində xüsusi sətir tipi verilənlər yoxdur və sətirlər üçün char tipli massivlər istifadə olunur. Bu tipli massivlərdə mütləq sonuncu bayt ozündə “\0” simvolunu saxlamalıdır !!!!!.
char s[20]; // 20 simvoldan ibarət sətir;

Massivlər ölçüsu olmadan elan oluna bilər .

char d [ ] ; // sayı məlum olmayan sətir

Sətirlərə verilənləri 3 yolla təyin etmək olar



  1. inisializasiya// elan vaxtı

  2. mənimsətmə// icra vaxtı

  3. daxiletmə // & simvoldan istifadə məcburi deyil !!!!!!!!!

1 və 3 cü üsulda ’\0’ avtomatik əlavə olunur 2 ci usulda proqramçi onu özü təmin etməlidir.

Misal


#include

main ()


{

char a[20]= “Aytan”;

char b[]=“Aytan”;

char x1[4], x2[8], static char x3[6]=”salam” ;

x1[0]=’g’; x1[1]=’r’; x1[2]=’u’; x1[3]=’p’; x1[4]=’\0’;

char m[3][25]={“Misal”,”sizin”,”647”};

printf (“\n\n\t computer sozu daxil et”);

scanf (“%s”,x2) // & mecburu deyil

}

Sətir dahil ediləndə onun tərkibində “ “ (boşluq) olmamalıdır !!!!!!!

Sətirləri mənimsətmək olmaz

A=”Aytan” // olmaz !!!!!!

Bu əmiliyatı elementlər üzrə etmək olar

char d[6] // bir simvol artiq !!!!

d[0]=’A’; d[1]=’y’;

d[2]=’t’;

d[3]=’a’;

d[4]=’n’;

d[5]=’\0’;


Sətirləri xüsusi gets(a), puts(a) daxil və xaric etmək olar. burada a sətirin adıdır

Sətirlərlə əməliyyatları massivlər kimi yəni for operatorun vasitəsi ilə aparmaq olar .

Bunun üçün sətrin real uzunluğu tapılmalıdır. Bunun üçün strlen() funksiyası vasitəsi ilə tapmaq olar.

Strlen və başğa sətirlərlə işləyən funksiylar
string.h kitabxanasında yerləşir.
Sətirlərlə işləyən əsas funksiylar
strlen (a) - sətrin uzunluğunu tapır. sizeof () əvəz edə bilər.

strcpy(a1,a2) -a2 sətrini a1 kopiyalanır

strncpy(a1,a2,n) -a2-dən n sayda simvol a1-ya kopiyalanır

strcat(a1,a2) -a1 və a2 birləşdirir (a2 a1 axırına)

strcmp(a1,a2) a1 və a2 müqaişə olunur və reqistr nəzərə alınır, əğər eynidir onda cavab 0, əğər s1>s2 onda 1s1

stricmp(s1,s2) – strcmp kimi amma reqistr nəzərə alınmır.

strncat(s1,s2,n) – s2 sətirdən n sayda simvolu s1 əlabə edir.

strstr(s1,s2) – s2 altsətirin s1 sətirin tərkibində pozisiyasını müyyən edir, və ordan başlayraq qalan simvolları əldə edir.

sprintf(s,........)- monitora yox s sətirinə xaric edir, burada .... printf –a uyğun

sscanf(s,......) - klaviaturadan yox s sətirindəın daxil edir burada scanf –a uyğun



Misal Sətiri daxil etmək və onda olan A hərifini sayını hesablamaq
#include

#include

main ()

{

char a[20];



int i, n,s;

scanf("%s",&a);


n=strlen(a);

s=0;


for (i=0 ;i< n;i++)
if (a[i]=='A')

s= s+1;


printf(" s=%d",s);

}
#include

#include

main ()


{

int a[4]={8,4,2,1},b[3]={2,7,6},c,*pt,*pt1;

int i;

pt=&a[0];



c=0;

for (i=0;i<4;i++)

c=c+*(pt+i);
pt1=&b[2];

c=c+*pt1;

printf("%d",c);
}

Misal Verilmiş sətirdə A hərifinin sayin hesablanması

#include

#include

main ()


{

char a[20]="A455AABB5saA";

int i, n,s;

i=0;


s=0;

while (a[i]!='\0')

{

if (a[i]=='A')



s= s+1;

i=i+1;


}

printf(" s=%d",s);

}
Sadalama tipli verilənlər
Bu tip verilənlər xüsusi enum söz vasitəsi ilə elan olunur və öz sadalanmış qiymətləri ilə təsviur olunur.

Misal üçün

enum ay {yanvar, fevral, mart,aprel};// ay sadalama tipi elan olunub

enum fen {riyaziyyat,fizika, kimya};// fen sadalama tipi

enum reng {qirmizi, sari, yashil};

enum fiqur={uchbucak, kvadrat, duzbucak};

Tip elan olunandan sonra lazim olan deyşenler oluna bilər
fen farida,aytan;// iki fen tipli deyishen elan olunur

Əslində sadalama tipi int tipidir və onun qiymətləri müvafiq olaraq 0, 1,2 … qəbul olunur, yəni yanvar=0, feveral=1, fizika=1 və s.

Sadalama tipli deyişənlərlə məhdud sayda əməliyat aparmaq olar : müqaisə yəni İF operatorunda . Xaric etmə, daxil etmə -yox, öz siyahıdan mənimsətmə dövr operatorunda istifadə Misal üçün farida=kimiya;

Misal


#include

main ()


{

enum reng {sari,aq,qirmizi};

reng b1,t; int d=0;

b1=aq;


printf("%d\n",b1);

for(t=sari;t<=qirmizi;t++)

d=d+t*t;

printf("%d",d);

}

Bu proqramın cavabı olacak



1

5

Sadalama tipli dəyişənlərdən istifadə əsasən proqramın daha başadüşülən və qözəl etməkdir.


Faylar
Faylarla işləmək uçün onlar elan olunmalıdır. Bubub üçün göstəricilərdən istifadə olunur.
file *ad,*ad1;

Misal file *fin, *fout;

Fayldan oxumaqdan ya da yazmaqdan əvvəl o müvafiq rejimdə açilmalıdır.

Bur neçə rejim mövcuddur:

‘r’ oxumaq üçün

‘w’ yazmaq üçün

‘a’ əlavə etməq üçün

‘r+’ həm oxumaq həm yazmaq üçün

‘w+’

‘a+’ həm əlavə həm oxumaq



Fayllar aşağldaki kimi açılır
fin=fopen(“vag.txt”,”r”);// oxumaq uçün açılır

fin=fopen(“vag1.txt”,”w”);// yazmaq uçün açılır


Fayldan oxumaq üçün scanf əvəzinə fscanf yazmaq üçün printf əvəzinə fprintf funksiylardan istifadə olunur.
fscanf(s0,s1, s2);

Burada s0-faylın adı, s1 – formatlar siyahısı; s2 – dəyşənlər siyahısı. Dəyşənlər & simvolnan yazılmalıdır və verqülnən biri birinnən aralanmalıdır.




Yüklə 380,55 Kb.

Dostları ilə paylaş:
1   2   3   4




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin