Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Signed, unsigned, char, short, int, long, float, double




Bu sözlərin hamısı açar söz olduğundan kiçik hərf ilə yazılmalıdır.

Elan nümunələri:

int x;

unsigned long int a;

double MFCS;

signed short total

Tip ifadə edən açar sözlərin yazılmasından sonra eyni tipə ma­lik birdən çox dəyişənin elanı zamanı adların arasına vergül qoyulur. Elan etmə yenə nöqtəli vergül ilə bitməlidir. Məsələn, unsigned char ch1, ch2, ch3, ch4;

float FL1, Fl2;

unsigned total, subtotal;

Fərqli tiplərlə bağlı elanlar vergüllərlə bir-birindən ayrıla bilməz. Məsələn,

long x, int y; /* error */

signedunsigned sözləri tip ifadə edən açar söz olmadan tək istifadə edilə bilərlər. Bu vəziyyətdə int növdən bir dəyi­şə­nin elanının edildiyi qəbul edilir:

signed x, y;

ilə

signed int x, y;

tamamilə eyni mənadadır.

Elan əməliyyatında, tip ifadə edən açar söz birdən çox­dur­sa, bunların yazılış sırası əhəmiyyətli deyil, amma oxu­naq­lıq baxımından əvvəl işarə ifadə edən açar sözün, sonra tip ifadə edən açar sözün istifadə edilməsi ənənə halını almışdır. Mə­sə­lən:

signed long int x;

signed int long x;

long signed int x;

long int signed x;

int long signed x;

int signed long x;

hamısı etibarlı elanlardır. Amma yuxarıdakı elanda birinci ya­­­zı­lış forması oxunaqlıq baxımından seçilməlidir.

C/C++ dilində, ümumiyyətlə, dəyişənlər 3 yerdə elan edi­lə­ bilər:

1. Blokların daxilində.

2. Bütün blokların xaricində.

3. Funksiyanın parametr dəyişəni kimi funksiya mötə­ri­zə­lə­ri­nin içərisində.

Funksiya mötərizələri içərisində edilən elan­lar müəy­yən­ sin­­taksis qaydasına uyğunlaşdırılır, bu elanlar funksiya­lar möv­­­zu­sunda araşdırılacaq.

Əgər C dilində elan blokların daxilində ediləcəksə, on­­da­ elan əməliyyatı blokların ilk əməliyyatı olmalıdır. Ela­nın müt­ləq əsas blokun əvvəlində edilməsi kimi bir zəru­rət yox­dur. Əgər iç-içə bloklar varsa, içdəki hər hansı bir blokun əvvəlində də (o blokun ilk əməliyyatı olmaq şərti ilə) elan edilə bilər. Mə­sə­lən­:

{

int var1, var2;

char ch1, ch2, ch3;

var1 = 20;

float f; /* error */

}

Yuxarıdakı nümunədə var1, var2, ch1, ch2, ch3 dəyi­şən­lərinin təyin olunma yerləri doğrudur. Ancaq f dəyişəni səhv­­ yerdə elan olunmuşdur. Çünki elan əməliyyatından əv­vəl baş­qa bir əməliyyat (mənimsətmə) iştirak etmişdir. Bu və­­ziy­­­yət səhv meydana gəlməsinə sə­bəb­ olur. Həmin proqram fraqmenti aşağıdakı şəkildə yazılmalıdır:

{

int var1, var2;

char ch1, ch2, ch3;

var1 = 10;

{ float f; }

}

Bu halda artıq f dəyişəni də öz blokunun əvvəlində (ilk əmə­­liyyat olaraq) təyin olunmuşdur.

C++ dilində isə blok içində elan edilən dəyişənlərin, blokların ilk əməliyyatları kimi elanı zəruri deyil. Yəni C++ da dəyişənlər blokların içində hər hansı bir yerdə elan edilə bi­lər­lər.

C/C++ dilində qlobal dəyişənlər də mövcuddur. Əgər də­yi­­şən main () xaricində elan olunubsa, o, qlobal dəyişən ad­la­nır. Bu hal­da proqram buraxılarkən ona sıfır qiymət mənim­sə­dilir.

 

3.4. Konstantlar (Sabitlər)

Proqramlaşdırma dillərində verilənlər sabitlər şəklində də gös­­tərilə bilər. Onlar

const int intVal=17;

kimi elan olunurlar.

Misal 3.1. ifadəsini hesablayan proqram.

#include <stdio.h>

main()

{

const float b=3.14;

float x, a;

scanf(“%f”,&x);

a= b*x*x;

printf(“a = %f”, a);

return 0;

}

Simvol sabitlər apostrof daxilində yazılmış bir simvoldan ibarət olurlar: “ q”, “2”, “.” Və s.

Const char sym=”m”;

Xüsusi simvollar da simvol konstantlar bölməsinə daxil­dir­­lər.

Literal sabitlər (literallar) – bilavasitə proq­ra­mın mətnin­də­ daxil edilən qiymətlərdir. Belə ki, proqramın kom­pil­ya­si­­­ya­­sın­­dan sonra literalların qiymətini dəyişmək mümkün ol­ma­dı­ğın­dan onları sabitlər də adlandırırlar.

İstənilən sabitin emalı üçün kompilyator minimal diapa­zon­lu qiymətə malik mümkün verilənlər tipindən istifadə edir, yəni verilən sabitin saxlanması üçün yaddaşın müm­kün minimal həcmini tutur.

Məsələn, 1257 və ya -251 ədədlərinin daxil edilməsi üçün int ­ tip istifadə olunacaq. Lakin əgər sabitə elan olunduğu qə­dər yaddaş ayrılması (faktiki olaraq tutduğu qədər yox) tə­ləb olu­nur­sa, onun uzunluğunu aşkar olaraq göstərmək la­zım­­dır. Bunun üçün L hərfi istifadə olunur. Ədəddən sonra U hərfinin gös­tərilməsi isə onun işarəsiz olduğunu göstərir. Double tip sabitlərə f və ya F hərflərinin əlavəsi zamanı on­lar float tip, l və ya L hərfi əlavə olunduqda isə long double tip olurlar.

C/C++ dilində ədədi və simvol tiplərdən savayı sətir sa­bit­ləri də istifadə olunur.

Sətir sabitlər – dırnaq işarəsi daxilində yerləşən ASCII ko­du­nun simvollarından ibarətdir.

Qeyd edək ki, C/C++ dilində əsasən aşağıdakı standart sabitlərdən istifadə olunur:

 

e ədədi M_E
π ədədi M_Pİ
π/2 ədədi M_Pİ_2
π/4 ədədi M_Pİ_4
lge M_LOG10E
ln2 M_LN2

 

 

Fadələr

Ifadə - qiymətə malik olan proqram fraqmentidir: adətən, bu proqram buraxılan zaman hesablanmalı olan qiymətdir. Məsələn, > . Bu halda ifadə literallardan(ədədlərdən), operatorlardan (/ və +) və kiçik mötərizədən ibarətdir. Mürəkkəb ifadələrdə mötərizələr iç-içə ola bilərlər (bu o deməkdir ki, bir alt ifadə digər altifadənin daxilində yerləşir). Məsələn, .

Dəyişən = ifadə dəyişənə ifadənin qiymətini mənimsətmək deməkdir. Bu za­man­ əvvəlcə ifadənin qiyməti hesablanır və bu qiymət sol tə­­rəf­dəki dəyişənin qiyməti olur.

Yadda saxlamaq lazımdır ki, “=” işarəsi mənim­sət­mə işa­rəsidir, bərabərlik işarəsi deyil. Mənimsətmə ifadə olur­. Bu qaydaya görə i=(j=k) da ifadə olur, belə ki, j=k ifa­­dədir və kon­kret qiymətə malikdir. Mötərizəni yazmamaq olar, onda i=j=k ifadəsi k qiymətini i və j dəyişənlərinə mənimsədir, i=j=k=12 ifadəsi isə 12 qiymətini hər üç dəyişənə mənimsədir.

 

Məllər

İfadələr qurularkən tətbiq edilən əməllərin növləri bunlardır:

- Hesabi,

- Münasibət,

- Məntiqi və mərtəbə,

- Inkrement və dekrement,

- Mənimsətmə.

1) Hesabi əməllər:

*- vurma;

/ - bölmə;

+- toplama;

- - çıxma;

%- tam bölmədə qalığı götürmə.

Bölmədən başqa bütün əməllər ənənəvi qaydada yerinə ye­ti­­­rilir. Bölmə əməlinin xüsusiyyəti ondadır ki, əgər hər iki­­ ope­rand tamdırsa, onda nəticə tam qiymət olur. Həqiqi qiy­­­mət al­maq üçün heç olmazsa bir operand həqiqi tipə ma­lik olma­lı­dır. Belə ki, 9/5=1; 9/5.0=1.8; 9%5=4.

Hesabi operatorların üstünlük dərəcəsi belədir:

a) yüksək: - (unar minus),

b) orta: *, /, % (vurma, bölmə, qalığı götürmə),

c) aşağı: +, - (toplama, çıxma).

Yadda saxlamaq lazımdır ki, proqramlaşdırma dili­n­də bü­­tün əməl­ləri aşkar şəkildə göstərmək lazımdır. Bu, əsa­sən vur­ma əmə­l­inə aiddir, belə ki, riyaziyyatda onu yaz­ma­maq olar, proq­ram­laşdırmada isə yox! Məsələn, ab yazılışı proqramlaşdırmada iden­tfi­ka­tor ki­mi başa dü­şü­lür. Hesabi operatorlar binar opera­tor­lar­dır, çünki onlar iki operand üzərində əməliyyatı yerinə yetirirlər.

Aşağıda riyazi ifadənin C/C++ dilində yazılışına aid nü­mu­nə verilmişdir:

Riyazi ifadə: ;

C/C++ dilində yazılışı:

 

2) Münasibət əməlləri müqayisə üçün istifadə olunur:

< - kiçik;

<= - kiçik və ya bərabər;

> - böyük;

>= - böyük və ya bərabər;

= = - bərabər;

!= - bərabər deyil.

Məsələn,

#include <stdio.h>

#include <conio.h>

main(){

int b;

b=5>2; // b doğru qiymət alır;

printf("b=%i\n",b);

b=7<4; // b yalan qiymət alır;

printf("b=%i\n",b);

getch();

}

Nəticədə

alınır.

Münasibət, məntiqi və bitlər (mərtəbə) üzərində əməl­lə­rin nə­ti­­cəsi məntiqi tip olur. Lakin C/C++ dilində true ­və false qiymətləri alan standart məntiqi tip yoxdur. Burada mən­­tiqi qiy­mətlər olaraq tamqiymətli qiymətlər istifadə olu­nur, belə ki, sı­fır yalan kimi, sıfırdan fərqli istənilən qiymət isə - doğru ki­mi başa düşülür.

Qeyd edək ki, “= =” münasibət işarəsini “=” mənimsətmə işarəsi ilə qarışdırmaq olmaz, belə ki, bu səhvə gətirib çıxara bilər.

 

3) Məntiqi əməllərə aşağıdakılar daxildir:

məntiqi “və” (&&),

məntiqi “ və ya” (||),

məntiqi inkar (!).

Məntiqi əməllər bir neçə şərti ifadələri birləşdirdikdə isti­fadə olunur.

Məntiqi əməllər aşağıdakı xassələrə malikdirlər;

U1 və U2 – iki şərti ifadələrdirsə, onda:

- əgər hər iki ifadə eyni zamanda doğrudursa, U1&&U2 - doğ­ru­dur;

6>2 && 7>5 - doğrudur;

6>2 && 7<5 - yalandır;

- əgər ifadələrdən heç olmasa biri doğ­ru­dur­sa, U1 || U2 -doğrudur;

6>2 || 7>5 - doğrudur;

6>2 || 7<5 - doğrudur;

6<2 || 7<5 - yalandır;

- U1- yalan olduqda,!U1 - doğrudur;

- U1 - doğru olduqda,!U1 - yalandır;

! (6>2)- yalandır;

! (6<2)- doğrudur.

Mərtəbələr (bitlər) üzərində əməllər floatdouble tip­ dəyişənlərə tətbiq oluna bilməz. Belə əməllərə aşağıdakılar aiddir:

“ və” (&),

“ və ya “ (|),

mərtəbəli inversiya (-),

“ yoxetmə və ya “ (^),

sola yerdəyişmə (<<),

sağa yerdəyişmə (>>).

 

Misal 3.2.

C/C++ dilində riyaziyyatda rast gəlinməyən iki əməl var:

inkrement (++) və dekrement (--). İnkrement əməliyyatı ope­ran­da 1 əlavə edir, dekrement isə operanddan 1 çıxır:

i++ ó i=i+1;

i - - ó i=i-1.

j=i++

yazısı

j=i; i++

yazısına ekvivalentdir;

j=++i

yazısı isə

i=i+1; j=i;

yazısına ekvivalentdir.

Məsələn, S=a + b ++; yazısı o deməkdir ki, a+b- ni tapıb nə­ti­cə­ni S-ə mənimsətməli və onu 1 vahid artırmalı.

S=a+++b; yazısı o deməkdir ki, b-ni 1 vahid artırmalı, a və b – ni toplamalı, nəticəni S - ə mənimsətməli.

C/C++ dilində mənimsətmə əməli adi haldan əlavə qey­­ri ənə­nə­vi göstərilişə malikdir. Məsələn, x=x+15 əməlinin yeri­nə ye­ti­rilməsi x dəyişəninin ünvanının 2 dəfə hesablanmasına gətirir: il­kin qiymətin tapılması üçün və alınan nəticənin köçürülməsi üçün.

Bu çatışmazlığı x+=15 yazmaqla aradan qaldırmaq olar.

“+ =” simvolu da mənimsətmə əməli adlanır və o, kom­pil­ya­­­­tora x - ə 15 qiymətini əlavə edib nəticəni x-də yadda sax­la­maq göstərişi verir.

Mənimsətmə əməlinin tam yığımı:

*=, /=, +=, -=, %=, <<=, >>=, &=, ^=, \=.





Поделиться с друзьями:


Дата добавления: 2017-01-21; Мы поможем в написании ваших работ!; просмотров: 627 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Так просто быть добрым - нужно только представить себя на месте другого человека прежде, чем начать его судить. © Марлен Дитрих
==> читать все изречения...

2439 - | 2195 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.009 с.