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 çıxaran operator yazın.
8.Aşağıdakı operatorlardan hansı ifadəsinin C/C++ dilində 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 yazı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övri və mürəkkəb olurlar.
Xətti proqramlar – operatorlar əvvəldən axıradək bir-birinin ardınca yerinə yetirilirlər (təkrar olunmayaraq və yerinə yetirilmə ardıcıllığını dəyişmədən).
Xətti proqramlara –mənimsətmə operatorları, riyazi funksiyalar, hesab əməlləri və giriş/çıxışla bağlı funksiyalar və operatorların ardıcıllığını pozmayan digər operatorlar daxildir.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.
Funksiyanın adı | Funksiyanı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 və scanf işlədilir. C++-da isə uyğun olaraq cout və 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 ifadələr ardıcıllığıdır; onların qiymətləri displeyin ekranına çıxarılır (idarə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 arqumentlə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ərhədlə bərabərləşir (susmaya görə sağ sərhədlə bərabərləşir);
-çıxarış sahəsinin minimal ölçüsünü verən rəqəmlər sətri;
-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əyin 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 qaytarmaq (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, bunun üçün dəyişənin adının qarşısında & simvolu yazılır. İdarəedici sətir çevrilmə spesifikasiyalarına malikdir və arqumentlə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ğundan 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 edilir.
Əgər klaviaturadan daxil edilərkən verilənlər bölgü işarələri (məsələn, vergül) ilə ayrılırsa, onda idarəedici sətirdə də çevirmə 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 kitabxanasında ç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əsvir 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 hesablayan 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ə yetirilən operator təkdirsə:
if (ifadə) operator;
b) əgər belə operatorlar bir neçədirsə:
if (ifadə) { operator 1;
operator2;
- - - - - - - - - - - -
operator n; }
Bu halda “ifadə” qiyməti tam qiymətə gətirilə bilən ixtiyari ifadədir. Əgər onun qiyməti sıfırdan fərqlidirsə (doğrudursa), onda “ operator” yerinə yetirilir.
İfadəni müəyyən qiymətlə müqayisə edərkən münasibət operatorları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şarə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 operatoru iki budağa malikdir, onlardan biri alternativ olur. Belə sxem “ş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 if və else – dən sonra sadə (tək) operatorlar gəlirsə:
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 operatorlar, 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 qiymətini dəyişməyərək daha kompakt yazmaq olar. Bu halda o, şərt ifadəsi adlanır:
ifadə 1? ifadə 2; ifadə 3;
Proqram ifadə 1 – i hesablayır: əgər o, yalandırsa, ifadə 2 yerinə 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 ekvivalentdir.
. . . . . . . . . . . . . . . . .
if (meas== “y”) value=(meas==”y”)?100:;
value= 100; . . . . . . . . .
else
value=0;
. . . . . . . .
Lakin aydınlıq (əyanilik) nöqteyi-nəzərindən şərt operatoru 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ə: