Bakalavr hazırlığı üçün
050631 Kompüter mühəndisliyi ixtisası üzrə
Proqramlaşdırma dilləri və informatika fənni üçün
Mühazirələr konspekti
V.H. Səlimov
vagif_salimov@yahoo.com
http:// vagif5.tripod.com
Giriş
Proqramlaşdırma dilləri və informatika fənni kompüter mühəndislyi ixtisasında təhsil alan tələbələr üçün mühüm yer tutur.
Proqramlaşdırma dili kimi C++ dili seçilib. Məlumdur ki bu dil hal hazırda sistem proqramların yaradılmasında (Ms WİNDOWS, Ms OFFİCE və baş.) geniş istifadə olunur. Bu dilin gehiş aşağı səviyyəli əməliyytların proqramlaşdirma imkanları olması kompüter mühəndis üçün əsas şərtlərdən biridir.
İnformatika anlayışı özündə iki əsas aspekt cəmləyir:
-effektiv verilənlər strukturların işlənməsi;
- effektiv alqoritmləri yaradılması.
Bu kursda tələbələr məsələnin qoyuluşu, alqoritmlərin yaradılması, verilənlər üçün səmərəlı təsvir üsulların(strukturların) seçilməsi və onları C++ dilin vasitəsi ilə proqramlaşdırma üsullarını oyrənməlidir.
Müassir sürətli lahiyələndirmə sistemlərinə- Ms C++ Builder , Ms C# diqqət etirilir
Kurs ərzində tələbələr mühazirə ilə bərabər məşğələ və laboratoriya işlərini yerinə etirməlidilər.
Alqoritmlərin əsasları
Alqoritm bu hər hansı bir məsələnin həllinə qətirən əmirlər ardıcılığıdır.
1. Alqoritm sonlu sayda mərhələdən sonra qurtarmalıdır. Buna, alqoritmin sonluluq xassəsi deyilir.
2. Alqoritmin hər bir addımı dəqiq və birqiymətli təyin olunmalıdır. Bu alqoritmin müəyyənlik xassəsidir.
3. Alqoritm ümumi olmalıdır, yəni müəyyən məsələ üçün tərtib olunmuş alqoritm, həmin tipdən (sinifdən) olan bütün məsələlər üçün yararlı olmalıdır. Bu alqoritmin kütləvilik xassəsidir
İsbat olunub ki bütün alqoritmlər 3 əsas alqoritm əsasında qurula bilər.
-
Xətti
-
Budaqlanan
-
Dövrü
Alqoritmlərin əsas 3 təsvir üsulu var
-
verbal. 2. şərti dil əsasında 3.blok sxem əsasında
Ə
n çox qeniş istifadə olunan blok sxem usuludur . Əsas blok sxem işarələri bütün ofise proqramlarda var
|
Proses
|
|
Başlanqic/son
|
|
Daxil etmə /xaric etmə
|
|
Şərt
|
|
dövr
|
|
Alt proses (funksiya)
|
|
Çap
|
Şərti əvvəldə olan dövr
Şərti sonda olan dövr
Parametri olan dövr
-
Xətti alqoritm. Misal
Piramidanın oturacağı –üçbucaqdır, tərəfləri a, b, c və yan tilləri eynidir L
2.Budaqlanan alqoritm .Misal
sin x, əğər x>=a;
y=
cos x, əğər x< a
Hə
Yox
3.Sayı məlum olan dövr . Misal y=sin x funksiyanı [a,b] parçasında h atdım ilə hesablamaq
Burada N=(b-a)/h+1 dövrün itersiyalarının sayi
-
Iterasiya dövru Misal : Kvadrat tənliyin kökün Nyuton üsulu ilə hesablanması
x=√u x0=(u+1)/2
x
yox
i=1/2*( xi-1+u/ xi-1)
│xi2-u│≤ε
-
Bir ölçülü massivlər. Misal a1, a2 , a3 ......... a100 ardiciliğının cəmini hesablamaq y=∑ ai
-
Misal mürəkkəb dövr. Matrisa A (n,m) elementlərin xasilini hesablamaq
C/C++ proqramlaşdırma dilinin qısa tarixi
C proqramlaşdırma dili 1973-cü ildə ABŞ –da Denis Ritçi tərəfindən yaradılıb. Bu dil məşur Unix əməliyyat sisteminin yaradılmasında istifadə olunub. Bu dilin proqramlaşdırma dillərin arasında xüsusi yeri var. Baxmayraq ki bu dil yuksək səviyəli dillərinin qrupuna daxildir, o eyni zamanda aşağı səviyyəli (maşın-yonümlü)dillərin imkanlarına malikdir.
Ona qörə bu dil hal hazırda əsas sistem proqramların (Ms Windows, Ms Office və demə olar əksər tətbiqi proqramların) layihələndirməsində geniş istifadə olunur. Bu dil ALGOL dil qrupuna daxildir.
1981-çi ildə ABŞ-da Byarn Straustrup C dilini təkmilləşdirib və yeni dil C++ adını alıb. C++ dilinin əsas fərqi ondan ibarətdir ki C++ dilində obyekt-yonümlü texnologiyasınin komponentləri əlavə olunub.
90-ci illərdə Windows sisteminin yaradilması ilə bağlı olaraq proqramlaşdırma sahəsində də boyük dəyişıklər baş verir. Windoüs standartlarına uyğun proqramlaşdırma dilləri yaradılıb, o cümlədən MS Visual C++, Borland C++ Builder. Son illərdə daha da təkmolləşdirilmiş versiyası C# və nahayət son versiyası NET platforması əsasında C#.Net versiyası.
C dilinin sintaksisi
C dilində proqram adi mətn redaktorunda yazılmalıdırvə onu c yada cpp qenişlənməsi olmalıdır. Umümiyyətlə proqram bir neçə afylda yerləşə bilər və xüsusi preprosesor əmrləri ilə birləşdirilir.
C dilində proqram operatorlar adlanan xüsusi yazılardan (cümlələrdən) –ibarətdir. Həı bir operatorun öz funksiyası və öz sintaksis qaydaları var. Operatorlar iki qrupa bölmək olar elan və icra edici.
C dilində bütün operatorlar ; simvol ilə bitirilir, operatorlar sərbəst formatda yazilir yəni sətirin hər hansı bir yerindən, bir sətirdı bir neçə operator yerləşə bilər, lazım olan halda yeni sətirə köçürülə bilər.
C proqramında operatorla bərabər proqramı daha başa düşülən edən xüsusi şərhlər(komentariyalar) istifadə oluna bilər. Şərhlərin iki variantı mövcüddur-operatorun sonunda bu halda // işarələrlə başlanır.
İkinci variantda /* işarə ilə başlanır və */ işarə ilə bitir və bir necə sətiri əhatə edə bilər.
A=2; // inisializasiya
/* Menim ilk proqramim*/
Dəyişənlər və başğa obyektlər xüsusi adlarla (identifikatorlarla) işarələnir. Adlar hərifərdən, raqəmlərdən və _ (alt xət) dən qurulur , amma həriflə başlanmalıdır. Maximal uzunlüq 31 simvoldur.
Misal Alfa23 –düzqün, 12adna –səyfdir.
C dilində identifikatorlar reqistrdan asılıdır yəni Aytan, aYtan, AYTAn başğa adlardır.
C dilində istifadə olunan operatorların adları goto, int, break və başğaları kiçik həriflərlə yazılmalıdır və başğa məksədlərlə istifadə oluna bilməz. Misal üçün Break adı münkündur.
İcra olunan operatorların qabahinda niçan( label) ola bilər. Niçanlar operatordan : simvollan aralanır və identifikator qaydalarına uyğün qurulur. Misal
farida: s=2*x-67;
C dilində verilənlər
Verilənlər tipləri aşağıdaki sxemdə verilir.
Bütün dəyişənləri 4 xassəsı ola bilər.
-
Tip (int, char, float, bool,void, enum)
-
Əlavə olaraq tam (int) dəyışənlərin signed ya da unsigned xassəsı ola bilər.
-
Uzunluq xassəsi tam üçün (short, long, long long ), həqiqi üçün ( float , double, və long double)
-
Yaddaş xassəsı (auto, registr,extern, static)
Bu 4 xassələrdən tip xassəsi məcburidir !!!.
Aşağıdaki cədvəldə bütün növlər təsvir olunur.
Verilənlər tipləri
|
Uzunluq
|
İnterval
|
|
Tam
|
char
|
1
|
-128127
|
|
unsigned char
|
1
|
0 255
|
|
signed char
|
1
|
-128 127
|
|
int
|
2 ya 4
|
-32768 32767
|
|
unsigned int
|
2 ya 4
|
0 ÷ 65535
|
|
signed int
|
2 ya 4
|
-32768 32767
|
|
short int
|
2
|
-32768 32767
|
|
unsigned short int
|
2
|
0 ÷ 65535
|
|
signed short int
|
2
|
-32768 32767
|
|
long int
|
4
|
-2147483648 ÷ 2147483647
|
|
long long int
|
8
|
-(263-1) ÷ (263-1)
|
əlavə olunub C99
|
signed long int
|
4
|
-2147483648 ÷ 2147483647
|
|
unsigned long int
|
4
|
0 ÷ 4294967295
|
|
unsigned long long int
|
8
|
0 264-1
|
əlavə olunub C99
|
Həqiqi float
|
float
|
4
|
3.4Е-38 ÷ 3.4E+37
|
Dəqiqlik 6 rəqəm
|
double
|
8
|
1Е-308 1E+307
|
Dəqiqlik 10 rəqəm
|
long double
|
10
|
3.4Е-4932 1.1E+4931
|
Dəqiqlik > 10)
|
Məntiqi
|
bool
|
1
|
true, false
|
|
Əğər int üçün signed unsigned qöstərilmir onda signed qəbul olunur.
Həqiqi dəyişənlər üçün float standart kimi qəbul olunub.
Qöründii kimi hər tipin öz mümkün qiymət intervalı var.
Int tipi üçün dəqiq məlum deyil 2 ya da 4 və bu prossesordan asılıdır əğər 32 bitliq prosesor onda 4 bayt.
Mövcud tiplərin uzunluğunu xüsusi sizeof (tip) (sadə tiplər üçün) əməliyyatın köməyi ilə tapmaq olar
printf (“%d8”, sizeof (int))
Dəyşənlər üçün sizeof formatı sizeof x; burada x dəyşəndir.
Baxmarayq ki char həriflər üçün nəzərdə tutulub, o eyni zamanda tam ədədlər üçün istifadə oluna bilər !!!!!!.
Char tipli verilənlərin kodlari aşağıdaki cədvəldə verilir
Misal üçün A-65 dir a-97 B-66 və s.
Müxtəlif tip dəyşənləri başğa tiplərə çevirməq olar bunun uçü aşagıdaki əməliyatdan istifadə olar
(tip) ifadə;
Misal (float) 2*5 int çevirilir float
(int) ‘A’ char çevirilir int
(char) 65 int çevirilir char
Burda bəzi məhtudiyatlar mövcuddur
Həqiqi tiplə tma çeviriləndə kəsr hissə itir
Sadalan enum növü öz qiymətləri ilə müyyən olunur
enum hafta_gunu (monday, tuesday, wednesday, thirsday, friday, saturdau, sunday);
enum colors (red, green, yellow);
hafta_gunu x,y;
Əslində kompüterdə bu tam yəni long int kimi qəbul olunur və birinci qiymət 0, ikinci 1 və ....
Bu dəyişənləri bir biri ilə müqaisə etmək olar və sabitləri mənimsətmək olar.
Void tipi əsasən funksiylarda istifadə olunur və boş qiymət kimi qəbul olunur
Yaddaş xassəsi
Auto xassəsi qöstərir ki bu dəyşən elan olunan blokda istifadə oluna bilər (dinamikdir) və blokdan kənarda bu dəyşən ləğv olunur.
Registr xassəsi o deməkdir ki dəyişənlər prosesorun reqistrlərdə saxlanilır (əməliyyatları tezləşdirmək üçün) və bloku tərk edən zaman öz qiymətini itirir. Reqistr xassəli dəyyişəni qlobal ola bilməz
Static xassəsi qöstərir ki, bu dəyişən blokdan kənarda da öz qiymətini saxlayır.
extern xassəsi qöstərir ki bu dəyişən bütün proqramda qörünür. Belə dəyişənlər global adlandırılır.
Əğər dəyişən proqramdan əvvəl elan olunur və static xassəsi ilə onda o bütün faylda qörünür, əğər extern xassəsi ilə onda bütun proqramda( yəni bütün fayllarda, əlavə olaraq o bütün fayllarda elan olmalıdır)
Əğər yaddaş növü qöstərilmir onda auto qəbul olunur.
Sabitlər
Hər tip dəyişənlər üçün öz tip sabitləri var.
Simvol sabitləri ‘a’
Sətir sabitləri “a” ya “Aytan”
Tam sabitlər 10,8,16 say sistemində yazıla bilər.
20 on say sistemində
8 say sistemində olan sabitlər 0 ilə (sıfr) başlanmalıdır 023
16-lıq say sistemində 0X (sıfr və X) həriflər ilə başlanmalıdır 0X45
Tam sabitlər üçün əğər axırda U yazılırsə onda unsigned əğər L onda long
Həqiqi sabitlər adi və exponensial formatda yazıla bilər 23.62 , 0.45E-05
Əğər axırda L bu uzun formatdır
C proqramın strukturu
C proqramı ümümi şəkildə preprosesor əmrlərindən, bir əsas və bir neçə adi funksiylardan ibarət ola bilər.
Preprosesor əmrləri
void main ()
{
}
function vag1(.........)
{
......
}
function vag2(.........)
{
......
}
function vag3(.........)
{
......
}
Void sözu c++ proqramlarda istifadə olunur
C dilin başğa dillərdən fərqlərdən biri iki mərhələlikdir. Birinci mərhələ-preprosesor emalı, ikinci –translasiya( maşın dilinə cevirmək prosesi)
Preprosesor (prosesdən əvvəl) translasiya prosesı daha rahat və səmərəli etmək xüsusi bir sistemdir. Preprosesorun öz xüsusi dili mövcuddur və əsasən iki əməliyyatı icra edir
#include
#include
#include
#define aytan 653
#define heleki while
#define chap printf(“salam”);
Birinci və ikinci əmirlərin mənası stdio.h -xüsusi daxiletmə/xaricetmə kitabxanası, math.h –riyazi funksiyların kitabxanası qoşulması, ikinci əmrin mənası seva.c funksiyasını proqrama qoşmaqdır.Üçüncü əmrin mənası 653 ədəd əvəzinə aytan adinı işlətməq icazəsi və nahayyat dördüncü əmrin mənası
While sözün əvəzinə heleki sozunü işlətməq imkanı
Ən sadə variantda C proqramı preprosesor əmrlərindən və bir əsas funksiyadan ibarətdir.
#include
#include
main ()
{
}
{} işarələrə blok deyilir
Blok daxilində başqa bloklar da ola bilər
main ()
{ əsas blok
….
{1 blok
…….
}
…..
{ 2 blok
}
}
C dilində 2 növ əməliyyatlar mövcuddur
1. riyyazi
2. məntiqi
Cədvəl . С++ əsas əməliyyatlar
İşarə
|
Əməliiyat
|
Operandın növü
|
Nəticənin növü
|
+
|
Toplama
|
Tam, həqiqi
|
Tam, həqiqi
|
-
|
Çixma
|
Tam, həqiqi
|
Tam, həqiqi
|
*
|
Vurma
|
Tam, həqiqi
|
Tam, həqiqi
|
/
|
Bölmə
|
Həqiqi
|
Həqiqi
|
/
|
Tam bölmə
|
Tam
|
Tam
|
%
|
Tam bölmədən qaliq
|
Tam
|
Tam
|
--
|
Dekrement - 1
|
Tam
|
Tam
|
++
|
İnkriment artım +1
|
Tam
|
Tam
|
&
|
"and"
|
Tam
|
Tam
|
|
|
"or"
|
Tam
|
Tam
|
^
|
Not "or"
|
Tam
|
Tam
|
~
|
İncar
|
Tam
|
Tam
|
<<
|
Sola sürüşdürmə
|
Tam
|
Tam
|
>>
|
Sağa sürüşdürmə
|
Tam
|
Tam
|
Qörundiyi kimi С dilində ənənəvi əməliyyatlardan başğa inkriment, dekrement və bitlər üzərində əməliyyatlar da var.
++p; p=p+1; mənimsəməni əvəz edir. Eyni p++; Bu əməliyyatların fərqi aşağıdaki misalda qörünür
x=12;
y=++x;
y qiyməti 13 bərabər olacaq
x=12;
y=x++;
y qiyməti 12 bərabər olacaq
Eyniliklə --p; və p--;
Tam ədədlər ilə hesablamalar
Tam arifmetik əməliyyatlara tam bölmə və qalıqın tapılması əməliyatlar daxildir.
Tam bölmə əməliyyatda tam hissə qötürülür qalıqın tapılması əməliyyatında tərsinə qalıq qötürülür.
11 % 4 = 3
11 / 4 = 2
7 % 3 = 1
7 / 3 = 2
26 / 5 = 5
26 % 5 = 1
BIT HESABLAMALARI
Bütün bit hesablamaları tam ədədləri üzərində və kilik say sistemində təsvir formasında aparılır. С dilində aşağıdaki əməliyyatlar mövcuddur.
HESABİ VƏ (&). Hər iki operand (ədəd) ikilik say sisteminə çevirilir və ayrıliqda hər bir bit üzərində aşağıdaki qaydalara uyğun əməliyyat aparılır.
1 & 1 = 1 1 & 0 = 0 0 & 1 =0 0 & 0 = 0
Və əmiliyata aid olan misala bahaq.
#include
int main ()
{
int A, B;
A=13;
B=23;
printf("\n%d\n", A & B)
}
Bu proqram aşağıdaki kimi işləyir. А=13 və В=23 hər ikisi ikilik say sisteminə çevirilir 0000000000001101 və 0000000000010111. Bundan sonra onları üzərində VƏ (&) əməliyatı aparılır.
& 0000000000001101
0000000000010111
0000000000000101
Nəticə onluq say sisteminə çevirilir və bizim misalda cavab 5 bərabərdır.Beləliklə 13 & 23 = 5.
Hesabi YA (|)
eyni yolla və müvafiq qayda ilə hesablamalar keçirilir.
1 | 1 = 1 1 | 0 = 1 0 | 1 =1 0 | 0 = 0
Misal üçün :
#include
int main ()
{
int A, B;
A=13;
B=23;
printf("\n%d\n", A | B)
}
Analojı olaraq alırıq
| 0000000000001101
0000000000010111
0000000000011111
Onluq say sistemində nəticə 13 | 23 =31.
Hesabi İNKAR YA (^). Qaydalar aşağıdaki kimidir
1 ^ 1 = 0 1 ^ 0 = 1 0 ^ 1 =1 0 ^ 0 = 0
Hesabi SABİ İNKAR (~). Hər bit ozunün inkar bit ilə əvəz olunur, Misal üçün ~
0000000000001101
~a 1111111111110010
Onluq say sistemində alırıq ~13=-14.
Sola sürüşdürmə (M << L). İkilik say sistemində verilmiç M tam ədədi sola L pozisiya sürüşdürülür. Misal
17 << 3.
17 ikilik say sistemində 10001, 3 pozisiya miqdarında sola sürüşdürəndə alırıq 10001000, onluq say sistemində bu 136. Yəni 17 << 3 =136. Qeyd edək ki , sola 1 pozisiya sürüşdürmək bərabərdir 2 vurmaqa, eyniliklə 2 pos-4 və s. Yəni M << L bərabərdir M.2L.
Sağa sürüşdürməq M >> L. Eyni yolla sağa 25 >> 1= 12. Burada M 2L bölməq lazımdır.
Məntiqi əməliyyatlar və münasibətlər
Bu əməliyatlar məntiqi qiymətlər üzərində aparılır. İki məniqi qiymət mövcuddur doğru (TRUE) və yalan (False). C dilində alan 1 dır doğru isə hər hansı bir 1 fərqli olan qiymətdir. С++ dilində yeni bool növü əlavə olunub. Münasıbət əməliyyatların nəticələri məntiqi qiymətlərdir (TRUE,1) ya da (FALSE, 0). C dilində 3 əsas məntiqi əməliyyat mövcüddur определены YA (||), VƏ(&&), İNCAR (!) (cədvel).
Cədvəl . Məntiqi əməliyatlar C dilində.
A
|
B
|
!A
|
A&&B
|
A||B
|
0
|
0
|
1
|
0
|
0
|
0
|
1
|
1
|
0
|
1
|
1
|
0
|
0
|
0
|
1
|
1
|
1
|
0
|
1
|
1
| ? Əməliyyatı
Proqramlarda budaqlanmanı təşkiletməq üçün xüsusi ? əmri mövcuddur:
Şərt ? İfadə 1: İfadə 2;
Əğər şərt doğrudur ifadə 1 hesablanır əks halda ifadə 2.
Misal üçün bu əmr y x modulunu mənimsədir.
y=x<0 ? –x: x;
Verilənlərin növ cevirmələri
Başğa növ verilənlərə cevirməq üçün xüsusi əməliyat mövcuddur:
(növ) ifadə
Misal,
x=5;
y=x/2;
z=(float) x/2;
Burada tam bölmə əməliyat nəticəsində y =2 z = 2.5 qiymətlərini alır
0>
Dostları ilə paylaş: |