Müstəqil işləmək üçün tapşırıqlar

1.Tənliyi həll edin: 8x (bit) = 32 (Kbayt).

2.Tənliklər sistemini həll edin:

3.Aşağıdakı riyazi ifadələri C/C++ proqramlaşdırma dilində yazın:

a)

b) ;

c)

d) ;

e) ;

f) ;

g) ;

h) ;

i) ;

j) ;

k) ;

 

4.x dəyişəninə -1,5 qiymətini mənimsədən ifadə yazın.

5.Sum dəyişəninə sıfır qiyməti mənimsədən ifadə yazın.

6.Silindirin səthinin sahəsini və həcmini hesablamaq üçün lazım olan dəyişənlərin elan edilməsi və mənimsətmə konstruksiyalarını yazın.

7.“C/C++ proqramlaşdırma dili” məlumatını ekrana çıxa­ran operator yazın.

8.Aşağıdakı operatorlardan hansı ifadəsinin C/C++ di­lində yazılışıdır?

a)

b)

c)

9.Üç tam ədədin klaviaturadan daxil edilməsi və onların x, y, c dəyişənlərində yadda saxlanılması üçün operator ya­zın.

10.Aşağıdakı operatorları riyazi dildə ifadə edin:

a) 2*b*c*cos(a/2)/(b+c);

b) a/sin(b);

c) abs(2*sin(-3*abs(x/2)));

d) (a+b)/(b+c);

e) (a*x+b)/(c*x+d);

f) 4*r*sin(a/2)*sin(b/2)*sin(c/2).

 

 

4. Xətti və budaqlanan alqoritmlərin proqramlaşdırılması

4.1. Xətti alqoritmlərin proqramlaşdırılması

 

Proqramlar xətti,budaqlanan, dövrimürəkkəb olur­lar.

Xətti proqramlar – operatorlar əvvəldən axıradək bir-bi­ri­­nin ar­dınca yerinə yetirilirlər (təkrar olunmayaraq və ye­ri­nə­ ye­tirilmə ardıcıllığını dəyişmədən).

Xətti proqramlara –mənimsətmə operatorları, riyazi funk­si­ya­lar, hesab əməlləri və giriş/çıxışla bağlı funksiyalar və ope­­­ra­torların ardıcıllığını pozmayan digər operatorlar da­xildir.C/C++dilində istifadə olunan bəzi riyazi funksiyalar Cədvəl 4.1-də verilmişdir.

Cədvəl 4.1. C/C++dilində istifadə olunan riyazi funksiyalar.

 

Funksiya­nın adı Funksiya­nın işarəsi   Tip Təsvir faylının adı
Qayta-rılan qiymət Arqu-ment  
mütləq qiymət   arkkosinus arksinus arktangens kosinus sinus ex xy qüv. f-sı natural loq­­ onluq loq kvarat kök tangens abs(x) cabs(x) fabs(x) acos(x) asin(x) atan(x) cos(x) sin(x) exp(x) pow(x,y) log(x) log10(x) sqrt(x) tan(x) int double float double double double double double double double double double double double int double float double double double double double double double double double double double <stdlib.h> <math.h> <math.h> <math.h> <math.h> <math.h> <math.h> <math.h> <math.h> <math.h> <math.h> <math.h> <math.h> <math.h>

4.2. Giriş/çıxış operatorları

Standart C-də giriş/ çıxış üçün printf scanf işlə­di­­lir. C++-da isə uyğun olaraq cout cin işlədilir.

printf funksiyasının sintaksisi belədir:

printf ( “idarəedici sətir”, [arqumentlərin siyahisi])

Arqumentlərin siyahısı – sabitlər, dəyişənlər və ya ifa­də­lər ardıcıllığıdır; onların qiymətləri displeyin ekranına çı­xa­­rılır (ida­­rəedici sətrin formatı ilə). Məsələn,

printf (“ i=%d, \n j=%d, a=% 6.2 f.\n” , i , j, a);

Əgər

i=1234, j=127, a= 86.531 olarsa, ekranda

i=1234,

j=127, a= 86.53

görərik.

Idarəedici sətir 3 növ obyektə malikdir:

- adi simvollar ( ekrana dəyişdirilmədən çıxarılır);

- çevrilmə spesifikatorları (bunlardan hər birisi arqu­ment­lə­rin sonrakı siyahısından ekrana növbəti arqumentin qiymətinin çıxarılmasını yaradır);

- idarəedici simvol sabitlər.

Hər bir çevrilmə spesifikası % simvolu ilə başlayır və çevrilmə simvolu ilə qurtarır. Onların arasında aşağıdakılar yazıla bilər:

-“minus” işarəsi, onu göstərir ki, çıxarılan mətn sol sər­həd­lə bərabərləşir (susmaya görə sağ sərhədlə bəra­bər­lə­şir);

-çıxarış sahəsinin minimal ölçüsünü ve­rən rəqəmlər sət­ri;

-bölgü işarəsi olan nöqtə;

-çıxışın dəqiqliyini verən rəqəmlər sətri.

Çevrilmə simvolları aşağıdakılardır:

d- arqument onluq göstərilişə çevrilir;

o- arqument səkkizlik göstərilişə çevrilir;

x- arqument 16-lığa çevrilir;

c- arqumentin qiyməti simvoldur;

s- arqumentin qiyməti simvollar sətridir;

e- arqumentin qiyməti sürüşkən vergüllü formada float və ya double tipdir;

f- arqumentin qiyməti sabit vergüllü formada float və ya double tipdir;

g- f və ya e formatlarından biridir;

u- arqumentin qiyməti işarəsiz tam ədəddir;

p- arqumentin qiyməti göstəricidir (ünvan).

Məsələn, onluq tam ədədləri aşağıdakı üsullarla ekrana çıxara bilərik:

programın fraqmentinəticə:

i = 5 ;

printf("%d",i) ; 5

printf("'i=%d",i) ; i=5

printf("i=") ;

printf("%d",i) ; i=5

printf("i=\n") ; i=

printf("%d",i) ; 5 alt sətrə keçir

printf('i=%d\n",i) ; i=5 alt sətrə keçir

printf("%d - %d",i, 5*i); 5 - 25

Simvolları ekrana çıxarmaq üçün:

s = "ABCDEF"

printf("%10s ",s); . . . . A B C D E F

printf("%10.3s ",s); . . . . . . . A B C

Həqiqi ədədləri isə belə formatla verə bilərik:

x = 128.5 ;

printf("%6.2f",x) ; 128.50

x = 85.47 ;

printf("%6.3f",x) ; 85.470

printf("%4.1f",x) ; 85.5

Beləliklə, “idarəedici sətir” arqumentin sayını və tipini təy­in edir. Aşağıdakı cədvəldə verilmiş idarəedici simvollar tez-tez­­ istifadə olunur:

Cədvəl 4.2.

  “16”-lıqda “8”-likdə   ASCII
'\0' '\x0' '\0' NULL simvolu
'\a' '\x7' '\07' səs siqnalı (alert)
'\b' '\x8' '\010' kursoru bir addım dala qay­­tarmaq (back space)
'\t' '\x9' '\011' üfüqi cədvəlqurma (tab)
'\n' '\xA' '\012' aşağı sətir (new line)
'\v' '\xB' '\013' Şaquli cədvəlqurma (vertical tab)
'\f' '\xC' '\014' Səhifə (form feed)
'\r' '\xD' '\015' Sətir başı (carriage return)
'\"' '\x22' '\042' qoşa dırnaq (double quote)
'\\' '\x5C' '\134' əks sleş (back slash)

 

scanf funksiyası da printf funksiyası kimi təsvir olunur.

scanf (“ idarəedici_ sətir”,arqumentlər_siyahısı);

Arqumentlər üyğun qiymətlərə göstəricilər olmalıdır, bu­­nun üçün dəyişənin adının qarşısında & simvolu yazılır. İdarəedici sə­tir çevrilmə spesifikasiyalarına malikdir və ar­qu­mentlərin tipləri və sayların təyini üçün istifadə olunur (printf - ə anoloji olaraq).

scanf(“ % d % f % c % s” , &i, &a, &ch, r);

Burada r - simvollar sətridir, onun özü göstərici oldu­ğun­­­dan qarşısında & (ampersand) işarəsi qoyulmur.

İdarədəedici sətirdə probel, cədvəlqurma və yeni sətrə keç­­­mə simvolları istifadə etmək olar. Çıxışda onlar inkar edi­lir.

Əgər klaviaturadan daxil edilərkən verilənlər bölgü işa­rə­­­ləri (məsələn, vergül) ilə ayrılırsa, onda idarəedici sətirdə də­­ çe­virmə spesifikaları bu işarə ilə ayrılmalıdır.

C++ -da giriş/çıxış baytların axınıkimi icra olunur. Giriş/çıxışın geniş spektrdə emalı üçün iostream kitab­xa­na­sın­da çoxlu sayda funksiyalar və siniflər təyin olunmuşdur. Çıxış üçün istifadə olunan cout (the standard output stream - standart çıxış axını, si-aut kimi oxunur)funksiyası aşağıdakı kimi təs­vir olunur:

cout<<dəyişən<<endl;

burada << - axına yerləşdirmə əməliyyatı adlanır. endl (end line –“sətrin sonu” söz birləşməsinin abbreviaturasıdır)- axının manipulyatoru adlanır. “ ; “ isə operatorun sonunu ifadə edir.

Giriş üçün cin (the standard input stream - standart giriş axı­nı, si-in kimi oxunur) operatoru aşağıdakı kimi təsvir olunur:

cin >>dəyişən;

>> - axından götürmə əməliyyatı adlanır.

Misal 4.1. ifadələrini he­sab­­­la­ya­n proqram.

#include <stdio.h>

#include<conio.h>

#define a 3.1

void main()

{

double s,v;

float R,r;

printf("R ve r- i daxil edin:\n");

scanf ("%f%f",&R,&r);

s=4*a*(R*R+r);

v=4*a*(R*R*R-r*r)/3;

printf("s=%4.3f\nv= %3.2f ",s,v);

getch();

}

Alınmışnəticə:

 

 

 

4.3. Budaqlanan alqoritmlərin proqramlaşdırılması

Rt operatoru

Ümumi formatı belədir:

a) əgər şərtin (ifadənin) doğru oldu­ğu zaman yerinə yeti­ri­lən operator təkdirsə:

if (ifadə) operator;

b) əgər belə operatorlar bir neçə­dir­sə:

if (ifadə) { operator 1;

operator2;

- - - - - - - - - - - -

operator n; }

 

Bu halda “ifadə” qiyməti tam qiymətə gətirilə bilən ixti­ya­ri ifa­də­dir. Əgər onun qiyməti sıfırdan fərqlidirsə (doğru­dur­sa), on­da “ operator” yerinə yetirilir.

İfadəni müəyyən qiymətlə müqayisə edərkən münasibət ope­ratorlarından (== və ya !=) istifadə etmək lazımdır.

if (ifadə = = qiymət) operator;

və ya

if (ifadə != qiymət) operator;

Burada operator sadə və ya mürəkkəb ola bilər.

Qeyd 1. if (ifadə !=0) operator;

operatoru

if (ifadə) operator;

operatoruna ekvivalentdir.

Qeyd 2. if (ifadə=qiymət) operator;yazmaq olmaz, çünki = işa­rə­si mənimsətmə əməliyyatını göstərir.

Şərti göstərən ifadə kiçik mötərizədə yazılır. if opera­to­ru iki bu­da­ğa malikdir, onlardan biri alternativ olur. Belə sxe­m­ “şaxələnmə” adlanır. “Şaxələnmə” strukturunun təşkili üçün else operatoru istifadə olunur. O, if operatorunun genişlənməsi və ya onun alternativ hissəsidir:

- əgər ifelse – dən sonra sadə (tək) operatorlar gəlir­sə:

if(ifadə) operator1;

else operator2;

- əgər operatorlar mürəkkəbdirsə:

if (ifadə) {operator 1 ;

operator 2;

}

else {operator 3;

operator 4;

}

if operatorunun daxili operatorları olaraq istənilən ope­ra­tor­lar, həmçinin şərt operatorları istifadə olunur:

if(ifadə 1)

operator 1;

else if (ifadə 2)

operator 2;

else if (ifadə 3)

operator 3;

. . . .

else if (ifadə n)

operator n;

else // məcburi olmayan hissə

operator_ susmaya_ görə;

Bu cür konstruksiyalarda else hissəsi əvvəlki ən yaxın if -lə əlaqələndirilir ( else hissəsi olmayan).

Qeyd 3. if – else operatorunu onun funksional qiy­mə­ti­ni­ də­­­yiş­­­məyərək daha kompakt yazmaq olar. Bu halda o, şərt­ ifa­də­si adlanır:

ifadə 1? ifadə 2; ifadə 3;

Proqram ifadə 1 – i hesablayır: əgər o, yalandırsa, ifadə 2 ­ye­rinə yetirilir; əgər o da yalandırsa, ifadə 3 yerinə yetirilir. Bu isə tamamilə

if (ifadə1) ifadə 2

else ifadə 3

sintaksisinə analojidir. Aşağıdakı proqram fraqmentləri ekvi­va­lent­dir.

. . . . . . . . . . . . . . . . .

if (meas== “y”) value­=(meas==”y”)?­100:;

value= 100; . . . . . . . . .

else

value=0;

. . . . . . . .

Lakin aydınlıq (əya­ni­lik) nöqteyi-nəzərindən şərt ope­ra­to­ru daha əlverişlidir.

Misal 4.2. Kvadrat tənliyin həlli üçün proqram.

#include <stdio.h>

#include <stdlib.h>

# include "math.h"

int main()

{ float a,b,c, x1,x2, d;

printf("a=");

scanf (" %f", &a);

printf("b=");

scanf("%f",&b);

printf("c=");

scanf("%f",&c);

d=b*b-4*a*c;

if (d<0) printf( " heqiqi helli yoxdur \n ");

else {

x1=(-b+sqrt(d)) / (2*a);

x2=(-b-sqrt(d)) / (2*a);

printf (" kokler: x1=%3.2f\n x2=%3.2f\n",x1,x2);

} printf ("\n <Enter>\n " );

return 0;

}

 

Alınmış nəticə: