K U R S I Ş I «AZƏRBAYCAN HAVA YOLLARI» DÖVLET KONSERNİ MİLLİ AVİASİYA AKADEMİYASI. MÖVZU: «C dilində iki ölçülü massivlərin.

Benzer belgeler
Programlama Dilleri 1. Ders 5: Göstericiler

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU

«AZƏRBAYCAN HAVA YOLLARI» QAPALI SƏHMDAR CƏMİYYƏTİ MİLLİ AVİASİYA AKADEMİYASI. Aerokosmik informasiya sistemləri

KOCAELİ ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ. BİLGİSAYAR LABORATUVARI II FİNAL SINAVI SORU ve CEVAPLARI(I. ogr)

2) /* Kullanıcıdan alınan iki sayının obebini alt fonksiyon yardımı ile hesaplayan C programı*/

ESM-361 Mikroişlemciler. 3. Hafta Ders Öğretim Üyesi Dr.Öğr.Üyesi Ayşe DEMİRHAN

Adı Soyadı Öğrenci No. Toplam (100p) 2 (10p) +10p. 5 (25p) +10p. 3 (20p) 4 (25p) 1 (20p)

NESNEYE YÖNELİK PROGRAMLAMA C++ a Giriş

Eln 1001 Bilgisayar Programlama I

BİLG Dr. Mustafa T. Babagil 1

#include<stdio.h> #include<conio.h> #define doktorsayisi 3. typedef struct dr{ int ay1, ay2, ay3, ay4; } doktor; float hesapla(doktor dktr){

Hafta 11 Çok Boyutlu Diziler

Algoritma ve Programlama: Karar Yapıları ve Döngüler

1 PROGRAMLAMAYA GİRİŞ

Karakter katarları ile ilgili fonksiyonlar içerir Yerel kayan noktalı sayılar tanımlanır

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ Published by Juan Soulié

Analoq siqnallar Rəqəmli siqnal Rəqəmli siqnal

ÇOK BOYUTLU DİZİLER VE DİNAMİK BELLEK YÖNETİMİ İLE İLGİLİ ÖRNEKLER

TEMPLATES. Binnur Kurt Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi. C++ ile Nesneye Dayalı Programlama 1

Adı Soyadı : Öğrenci No :

Dunya teserrufati. Senaye sahelerinin inkiwafinin yerlewdirilmesi. Dunya teserrufati qarwiliqli elaqede olan ayri-ayri olkelerin milli

Arasınav Sınavı Soruları Güz 2017 Süre: 90 Dakika

Yrd. Doç. Dr. Caner ÖZCAN

BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER,

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

BİL1001 Bilgisayar Bilimlerine Giriş 1

Bölüm 8, Yrd. Doç. Dr. A. Kadir YALDIR PAÜ Bilgisayar Mühendisliği Bölümü BÖLÜM 8: DİZİLER

Döngü Komutları. Komutu. while Komutu Diğer Operatörler Bileşik Komut for Komutu. İçiçe Döngüler break ve continue Komutları

Eastern Mediterranean University Faculty of Arts & Sciences -- Department Of Mathematics BİLG213 BİLGİSAYAR PROGRAMLAMAYA GİRİŞ

mod ile açılacak olan dosyanın ne amaçla açılacağı belirlenir. Bunlar:

BİLG Dr. Mustafa T. Babagil 1

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-10 Diziler. Yrd. Doç. Dr. Ümit ATİLA

Giris {\} /\ Suhap SAHIN Onur GÖK

BLM111 Programlama Dilleri I. Hafta 10 Diziler. Yrd. Doç. Dr. Caner ÖZCAN

İŞ YERİNƏ DAİR ARAYIŞ ELEKTRON XİDMƏTİNDƏN İSTİFADƏ ÜZRƏ MEDODİKİ GÖSTƏRİŞLƏR

C++ Giriş Ders 5 MSGSU Fizik Bölümü Ferhat ÖZOK

Bil Hafta Çalışma Soruları (Yanıtlar)

Temel Bilgisayar Bilimleri Ders Notu #4-1. kısım

BLM 111 ALGORİTMA VE PROGRAMLAMA I

8. İŞARETCİLER (POINTERS)

BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ

#include<stdio.h> #include<string.h> #include<stdlib.h> typedef struct { int ID; char isim[15]; char soyisim[15];

Deney 7: Fonksiyon Tanımlama ve Parametre Aktarım Yöntemleri

Adım Adım C-II. Eksik kalmış konular

10. DOSYA GİRİŞ ÇIKIŞ FONKSİYONLARI

int main(void) { int num = 0; int input = 1; int retval = 0; struct NODE *nodepointer; nodepointer = (struct NODE *)malloc(sizeof(struct NODE));

işlemler bittikten sonra dosyaların kapatılması uygun olacaktır. Bunun için, fclose(fin);

C ile Uygulamalar 2 - Cevaplar

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

C PROGRAMLAMA D İ L İ

edilm si haqq nda RARA ALIR:

ACCESSPAY XİDMƏTİ. 7/23/2014 AccessBank Sales Training - 1 -

PROGRAMLAMAYA GİRİŞ DERS 2

Matris İşlemleri Uygulaması

scanf () Fonksiyonu Klavyeden veri okumak için kullanılır. Yapı olarak printf () fonksiyonu aynıdır. Kullanım biçimi:

int printf (const char *format [, argument,...]);

Pros and Cons of Pointers. Pointers. Avantajlar. Dezavantajlar

scanf () Fonksiyonu Klavyeden veri okumak için kullanılır. Yapı olarak printf () fonksiyonu aynıdır. Kullanım biçimi:

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak: Published by Juan Soulié

Sınav tarihi : Süre : 60 dak. a) strstr b) strchr c) strcat d) strcpy e) strlen. a) b) d) e) 0

Final Sınavı Soruları Güz, Süre: 90 Dakika

Kənan Kərimli

Python ile Programlamaya Giris

MAK 1005 Bilgisayar Programlamaya Giriş C DİLİNE GİRİŞ. Prof. Dr. Necmettin Kaya

Programlama Dilleri Laboratuvarı

Döngü komutları komutların bir çok kez yeniden yürülmesini. sağlayan, programlamada kullandığımız önemli yapılardan biridir.

Temel Bilgisayar Bilimleri Ders Notu #4-2. kısım

BİL1001 Bilgisayar Bilimlerine Giriş 1

Bil 101 Bilgisayar Yazılımı 1 Çözümlü Sorular Timur Karaçay

4.Hafta BİL Soruların Çözümleri

En kucuk calisabilir birime satetement denir Statements semicolon (;) ile sonlanir Yalniz basina ; null statement i ifade eder

B02.6 Karar Verme, Eşitlik ve Bağıntı Operatörleri

C++ Statements. { ve } arasında ifade edilen bir dizi statement bir compound statement (birleşik ifade) oluşturur.

Başkent Üniversitesi Mühendislik Fakültesi Güz Yarıyılı BİL 101-Bilgisayar Yazılımı I Arasınavı

BLM 111 ALGORİTMA VE PROGRAMLAMA I

7. FONKSİYONLAR. Dönüş_Tipi Fonksiyon_Adı (tip giriş_parametreleri);

Örnek1: #include <iostream> #include <string> using namespace std;

Bakı Tədris proqramı. Azərbaycan Respublikası Təhsil Nazirliyi. Təhsil Problemləri İnstitutu

İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 1 DERSİ LAB. ÖDEVİ

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-8 Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri

Pointers (İşaretçiler)

C PROGRAMLAMA D İ L İ

MobilBank. Mobil telefon vasitəsilə kart hesabının idarə olunması

Kompüter (computer) verilənləri emal etmək üçün istifadə edilən proqramlaşdıra bilən elektron qurğu.

Genel Programlama II

8. Bölüm DİZİLER. tip dizi_ismi[eleman_sayısı]; Bütün diziler 0 ile baţlar.

Object-Oriented Programming Lab 4. - Sıcaklık değeri, Kelvin biriminde saklansın. Varsayılan sıcaklık değeri K olsun.

else *on=*on+1; return gecici; } int giseyeyerlestir(struct gise*giseler) {//giseye bos olmasi durumunda yerlestirme yapiliyor...

MobilBank. Mobil telefon vasitəsilə kart hesabının idarə olunması

BÖLÜM 2 C PROGRAMLAMADA AKIŞ KONTROLÜ. GOTO: C programında programın herhangi bir yerinden bir yerine şartsız olarak atlanmasını sağlayan komuttur.

Programlama Dilleri 1. Ders 4: Diziler

C/C++ ile Programlamaya Giriş. Yrd.Doç.Dr.Bülent Çobanoğlu

DİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II

Operatörlere İşlev Yükleme

Big Endian & Little Endian K.Atilla Toker İzmir Üniversitesi Meslek Yüksek Okulu Bilgisayar Programcılığı Ver:01

SAKARYA ÜNİVERSİTESİ BİLGİSAYAR VE BİLİŞİM BİLİMLERİ FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ GÜZ DÖNEMİ PROGRAMLAMAYA GİRİŞ DERSİ

Bölüm 2 - C ile Programlamaya Giriş

Klavyeden girilen metnin karakter uzunluğu bulan C programı. Klavyeden girilen metin içerisindeki küçük ve büyük harf sayısını bulan C programı

Örnek: İki fonksiyondan oluşan bir program. Fonksiyon Tanımı

BLM 112- Programlama Dilleri II. Hafta 4 İşaretçiler (Pointers)

Transkript:

«AZƏRBAYCAN HAVA YOLLARI» DÖVLET KONSERNİ MİLLİ AVİASİYA AKADEMİYASI FAКÜLTƏ: «----» КAFEDRA: «----» IXTISAS: «----» K U R S I Ş I MÖVZU: «C dilində iki ölçülü massivlərin emali» QRUP: 497/A KURSANT: Məmmədov Kamran MUƏLLİM: S.B.HƏBIBULLAYEV 1

BAКI 2008 Giris C dili 70-ci ilde Bell laboratoriyasini emekdasi Denis Ritci terefinde yaradilmisdir.bu dil evvelce yalniz PDP-11 EHM-da UNIX emeliyyat sisteminin reallasdirilmasi ucun istifade olunurdu.sonralar ise bu dil basqa emeliyyat sistemlarinde de istifade olunmaga baslandi. C yuksek seviyyeli assembler dili adlanadirila biler.bele ki, bu dilin komeyile proqramci komputerin daxilinde bitler, baytlara, registerlere ve xarici qurgulara muraciet etmek imkani qazanir.c dili sistem proqramlarin, kompilyator ve emeliyyat sistemlerinin yaradilmasina imkan verir. C dili nisbeten mobil dildir.bele ki bu dilde konkret komputer ve emeliyyat sisteminden yazilmis proqrami ya minimal deyisiklikle, ya da hec bir deyisiklik etmeden basqa k komputer ve ya basqa emeliyyat sistemine kecirmek olar.deyilenler C-nin bir cox reallasmasinda esas rolu kitabxanalara da aiddir.c hecmine gore olduqca kicikdir.onun gucunun boyuk hissesi proqramci terefinde yaradilan ve kompilyatorun desteklediyi kitabxanadadir.meselen, daxiletme ve xaricetme emeliyyatlari dilinin bir hissesi deyil.bu emeliyyatlar stdio ( standart daxiletme/xaricetme ) kitabxanasindan secilir. 1980-ci ilin evvelerinde ise hemin Bell laboratoriyasinin emekdasi Byar Straustrup terefinden obyektyonlu proqramlasdirma ucun nezerde tutulan C dillinin genislenmesi yarandi.evvel bu dil C sinifleri adlandirildi.1983-cu ilde ise Rik Massitti bu dile C++ ( Si plyusplyus ) adini verdi.c++ dili C dilinin genislenmesi oldugundan, C dilindeki proqrami C++ dilinin kompilyatoru emal edir. C++ dilinin genis yayilmasina baxmayaraq evveller bu dil ucun standartlar yox idi.bir nece ilden sonar ise bu dilin muellifi B. Straustrupun rehnerliyi ile yaradilan AT&TC++ release 2/0 standart kimi qebul olundu.sonra ise C++ dilinin tekminlesmis 3.0 versiyasi meydana geldi.hal-hazirda ise Amerikanin milli Santdartlar institutunda ( ANSI ) C++ (X3J16) dili uzre komite movcudur.indiye kimi ANSI komitesinin WG21 isci qrupu terefinden standartin bir nece versiyasi buraxilmisdir. Bu dil uzre Borland firmasinin Turbo C++ ve 2

Borland C++ kompilyatorlaridan genis istifade olunur.c++ dilinde proqramlarin tertibinde Borland C++ 3.1, Turbo C++ 1.01, Borland C++ 4.0, Borland C++ 4.5, Borland C++ 5.01, kimi inteqrallasmis muhitlerden cox istifade olunur. Teqdim edilen dress vesaitinde C++ dilinin demek olar ki, butun prinsip, vasite ve mexanizmi system proqram noqteyi nezerinde aciqlanir.ders vesaitinde bu dilin komeyi ile proqramlasdirmanin esas elementleri arasdirilir.ders vesaitinden C++ dilini ve bu dilin esasindda system proqram teminatinin bezi elementlerinin oyrenmek isteyenler istifade ede bilerler. Sistem proqramlasdirma elmi haqqinda Bu fenn sistem proqramlarla elaqelidir.sistem proqram dedikde komputerin islemesi ile elaqedardir.umumiyyetle komputerde istifade olunan proqramlar 2 yere bolunur. 1.Sistem proqramlar. 2.Tetbiqi proqramlar Sistem proqramlara emeliyyat systemleri drayverler xidmet proqramlari translyatorlar ve s.daxildir. Tetbiqi proqramlara ise muxtelif meqsedler ucun nezerde tutulan proqramlardir.bura metin redaktorlari, cedvel redaktorlari, verilenler bazasinin idareetme sistemleri ve s. daxildir. Emeliyyat sistemi komputerin isini ve komputerle istifadeci arasinda elaqeni yaradan sistem proqramdir. Emeliyyat sistemi 3 novu movcuddur. 3

1).Bir meseleli 2).Cox meseleli 3).Sebeke Translyator assembler, interpritator ve konpelyator olmaqla 3 qrupa bolunur. Assembler dilinde yazilan proqramin translyasiyasi ucundur. Interpritator konpelyatordan ferqli olaraq ilkin proqram setir setir oxunur ve obyekt modulu yaratmir.sistem proqramlarinin yaradilmasinda en cox istifade olunan diller assembler ve C dilidir C++ dilinde proqramlarin icra olunma merheleleri C++ dilinde proqramlasdirma haqqinda tesevvur almaq ucun asagidaki sade bir proqrama baxaq: Misal1. Milli Aviasiya Akademiyasi sozunu displeyine cixaran proqram. //MAA.CPP-proqram faylinin adi #include <iostream.h.> Void main( ) { cout << \n Milli Aviasiya Akadeniyasi \n ; Proqramin birinci setri // simvollar cutu ile baslayib, gorunmeyen setrin sonu simvolu ile qurtaran birsetirli serhi gosterir. Proqramin ikinci setrinde preprosessorun # include <iostream.h> direktivi yerlesir. Direktiv kompilyatora proqram metnine 4

iostream.h faylinin terkibine elave etmek melumatini verir. Bu deriktiv verilenlerin standart axinla daxiledilmesini ve xaricedilmesini te min edir. Gosterilen vasiteler iostream.h adli faylda yerlesir. Burada I ( input ) daxiletme, o ( output ) xaricetme, stream axin, h ( head ) -basliq demekdir. Susmaya gore standart axinli xaricetme displeyin ekranina xaric etmeni, standart axinli daxiletme ise verilenlerin klaviaturadan daxil edilmesini temin edir. Proqramin novbeti hisseleri ise bas funksiyanin tesviridir.bu bas funksiyanin basligi ile baslayir: void main ( ) C++ dilinde istenilen proqram yalniz bir main adli bas funksiyadan teskil olunur. Proqramin icrasi buradan baslayir. void spesifikator adlanir ve main funksiyasinin yerine yetirilmesi neticesinde hec bir qiymet qaytarilmadigini gosterir. main den sonar moterizede parametrlerin siyahisi da ola biler. Bu msalda parametrler lazim deyil ve siyahi bosdur. Ixtiyari finksiyanin govdesi fiqurlu moterizede olan tesvir, teyin ve operatorlardan ibaretdir. Her bir tesvir, teyin ve operator ; simvolu ile qurtarir. Burada bas funksiyanin govdesinde tesvir, teyin yoxdur ve yalniz informasiyanin displeyin ekraina xaric etmek ucun cout << \n Milli Aviasiya Akademiyasi \n ; operatoru var. Informasiya xaric olunmaq ucun << emeliyyati vasitesi ile cout obyektine oturulur. Bu halda \n Milli Aviasiya Akademiyasi \n ; setridir ( setir sabiti ). C++ dilinde dirnaq isaresi daxilinde olan ixtiyari simvollar ardicilligidir. Bu simvollar da ola biler. Meselen, burada \n - idareni ekranin novbeti setrinin baslangicina oturen idareedici simvoldur. Qeyd edk ki, binary emeliyyatlarda << simvollar cutu sola surusdurmedir. 5

MASSIVLER Bildiyimiz kimi massiv strukturulasmis eyni tipli elementlerden teskil olunaraq yaddas sahesini tutur.massivler indekslerinin sayina gore bir,iki ve cox olculu olur.bir olculu massivin tesvir formati asagidaki kimidir. elementlerin_tipi ad [ sabit_ifade]; Burada -identifikator, sabit_ifade ise massivin olcusunu, yeni massivin elementlerinin sayini teyin edir.bezi hallarda ise massiv elementlerinin sayi olmadan,yeni sabit_ifadesiz tesvir olunur.meselen,massiv int D [9 ] ; Kimi tesvir olunub.yeni 9 tam elementlerden ibaret D adli massiv élan olunub.massivin indeksi sifirdan baslayir ve kvadrat moterizede massivin olcusu gosterilmeye de biler.misallar : char CH [ ] = { 'A','B','C', 'D' ; // 4 elementden ibaret massiv int IN [8] = { 10,20,30,40,50 ; // 8 elementden ibaret massiv char STR [ ] = " ABCD" ; // 5 elementden ibaret massiv Bu misallarda CH massivinin elementlerinin sayini kompilyator inisializasiya siyahisindaki elementlerin sayina gore teyin edir.in massivinde 8 element olmasina baxmayaraq, yalniz 5 element baslanciq qiymet alir.str massivinin 5-ci elementi,yeni STR [ 4 ] ' \0 '-a beraber olur.kvadratmoterizede sabit ifade gosterilmezse massivin teyininde baslangic qiymetlerinin olmasi vacibdir. Birolculu massivlerin emalina dair nece misala baxaq. 6

Misal 1. Heqiqi elementlerden tewkil olunmus massivin elementlerini ededi ortasinin tapilmasi. #include<iostream.h> #include<conio.h> void main( ) { const n=10; int I ; double B[n], sb; clrser( ); for (i=0 ;i<n;i++) { cout << " B["<<i<<"]="; cin>>b[i]; SB=0; for (i=0; i<n; i++) SB=SB+B[i]; SB=SB/n; cout << " \ Orta qiymet = " << SB; Misal 2.Verilmis a, a,... a massiv elementlerinin artma ardicilligi ile nizamlanmasi. Bu misalign blok-sxemi dersliyin birinci hissesinde verilib (birinci hisse sek. 1.13) #include<iostream.h> #include<conio.h> void main( ) { int A [ ] = { 7, 8, 5, 4, 2, 1, 3, 9, 6, 10 ; int I, j, n, C ; clrser( ); n=sizeof (A) / size of (A[ 0 ]); for (i=0; i<n-1; i++) for (j=0; i<n-1-i; i++) if (A[ j ]>x[j+1]) {C=A[ j ] ; A[ j+1 ];A[j+1]=C; for ( i=o ; i<n ; i++) cout < < A[i] < < " " ; 7

Proqramda massivin olcusunu tapmaq ucun sizeof( ) emeliyyatinda istifade olunur.sizeof (A) in neticesi A massivinin yaddadaki olcusunu ( 20 bayt ), sizeof (A[0]) ise A massivinin bir elementinin olcusudur ( 2 bayt ). nsizeof(a)/sizeof(a[0]) ifadesi ile massivin elementlerinin sayi teyin olunur. Coxolculu massivler.dilin sintaksisine uygun olaraq, coxolculu massivin elementleri massivdir. Cox olculu massivin teyini umumi halda tip, olcu ve her bir olcunun sayi haqqinda melumatlari ozunde saxlayir: Tip massivin_adi [K1][K2]... [KN]; Burada tip esas ve ya toreme tip, maasivin_adi identikikator, N massivin olcusu, KN ise massivde elementlerin sayidir. Meselen:float R [7] [5] ; operatoru 7 elementden ibaret massivin élan edir ki, bu element her biri 5 heqiqi ededden ibaret massivdir. Meselen: Int MASSIV [4] [3] [6]; MASSIV 4elementden ve her biri ikiolculu massivden teskil olunmus 3 olculu massivdir. Indi ise dersliyin birinci hissesinde verilen asagidaki misala baxaq. Misal 3.A (n,m) matrisinin setir elementlerinin hasillerinin cemini hesablayan alqoritmi tertib etmeli.qoyulan meseleni bu sekilde ifade etmek olar: 8

S = A IJ #include<stdio.h> #include<conio.h> void main( ) { clrser( ); const n=3 m=4; int i,j,z,s,a[n][m]; printf("\n Massivin elementlerini daxil edin\n"); for(i=0 ; i<n ; i++) for(j=0 ; j<m ; j++) { scanf("%d", & a[i][j]); printf("a[%d][ %d]= %d\n", i, j,a[i][j]; S=0; for(j=0; i<n; i++) { For(j=0; j<m; i++) Z=Z*A[i][j]; S+=Z printf("\nnetice%d",s); Misal 4. 0 dan 99 a kimi tesadufi ededlerden tewkil olunmuw massivin elementlerinden maksimumunun tapilmasi. #include<iostream.h> #include<iomanip.h> #include< conio.h> #include<stdlib.h> #define n 5 9

Void main ( ) { int i, j ImaxA, JmaxA,A [n] [n] ; clrser( ); randomize ( ); for(i=0 ; i<n ; i++) { for(j=0 ; j<m ; j++) { A [i] [j]= rand ( )%100: Cout <<setw (6)<<A [i] [j]: Cout << endl; ImaxA = JmaxA = 0 ; for(i=0 ; i<n ; i++) { for(j=0 ; j<m ; j++) { if (A[i] [j] > A[ImaxA] [JmaxA]) { ImaxA =i, JmaxA = j: Cout<< Maksimal qiymet : [ <<ImaxA<< ][ <<JmaxA<< ] = A [ImaxA][ JmaxA]; Proqramda yeni elementlerden istifade edilib.bunlar tesadufi ededlerin rand(0) ve tesadufi ededlerin qurasdirilmasi olan randomize( ) funksiyalaridir.rand (0) in neticesi 0 ile 32767 diapazonunda ixtiyari tam tesadufi eded, randomize( ) nin neticesi ise tekrarlanmani aradan qaldirmaqdir. Digger iki element manipulyator ( bu haqqda dersliyin 3- cubolmesinde genis melumat verilib) adlanir ve cout obyektinin komeyi ile axinli xaricetmeni idare edir.bu manipulyatorlar ucun iomanipp.h élan olunmalidir.setw(6) manipulyatoru n ci movqeden baslayaraq ekrana xaric olmani gosterir.endl ise setrin sonunu ve kursoru yeni setrin baslangicina kecirilmesini temin edir (\n idareedici simvolu kimi). 10

Massivler ve gostericiler Bildiyimiz kimi massivin etyini massivin_adi [ indeks ]yazisi iki operanddan ibaretdir. Burada birinci, massivin_adi-sabit gosterici olmaqla, yaddasda massivin baslangic unvanin gosterir. Indeks ise tam tipli ifade olmaqla, baslangisdan olan surusmeni teyin edir. Yeni massivin gostericis kimi asagidaki kimi tesvir olunur: *( massivin_adi + indeks ) C/C++ dillerinde massivin indeksinin sifirdan baslanmasi qebul edilib. Yeni int z ( 3 ) massivi z ( 0 ), z ( 1 ), z ( 2 ) kimi uc indeksli elementden ibaretdir. Nezere alsaqki,indeks elementin nomresini yox, massivin baslangicina nisbeten surusmeni teyin edir. Belelikle, burada *z massivin birinc elementi z ( 0 )-a, *( z+1) massivin ikinci elementi olan z( 1 ) e ve *( z+2 ) ise massivin ucuncu elementi olan z( 2 ) e muracietdir. #include <iostream.h> void main ( ) { char x [ ]= DIXI ; int i = 0; while ( * ( x+i )! = \0 ); cout << \n << * ( x + i++ ); Bu proqramda massivin elementlerinin sayi gosterilmeyib ve mensubetme neticesinde massivin elementlerinin sayi teyin edilir, yeni burada massivin elementlerinin sayi bes olur. Sonuncu element setrini sonu \0 simvoludur. While dovr operatorunun komeyile massivin elementleri ekrana xaric edilir. 11

Massivin ve gostericilerin asagidaki konstuksiyasina baxaq: Type*ad Bu type * tipli muxtelif obyektleri teyin ve tesvir edir. Eger o istenilen funksiya xaricde yerleserse, onda obyekt susmaya gore sifir qiymetini alan xaric gostericidir. Funksiya daxilinde bu qiymeti teyin olunmayan gostericidir. Her iki halda onu mueyyen tipde olan massivin elementleri ile bir nece usulla elaqelendirmek olar. Teyin etmede asagidaki imkanlar movcuddur: Type*ad = artiq_type_teyin_olunmus_massivin_adi; Type*adi = new type [ massivin_olcusu ]; Type*ad = ( type ) malloc ( olcu * sizeof ( type )); Meselen: Long arlong [ ] = { 10,20,3040 ; //Massivin teyin olunub Long *arlo = arlong ; // Gosterici teyin edilerek massivile //elaqelendirilib Int * arint = new int [ 4 ] ; //Gosterici teyin edilib ve //Yaddas sahesi ayrilib Float * arfloat = new float [ 4 ] ; //Gosterici teyin edilib ve //Yaddas sahesi ayrilib Double * ardouble = ( double * )malloc ( 4* sizeof( double )); //Gosterici teyin edilib ve //Yaddas sahesi ayrilib 12

Massivin baslangic unvani massivin tesviri aninda kompilyator terefinden teyin olunur ve bu unvan hec vaxt yeniden teyin edile bilmez. Bele ki, asagidaki kimi tesvir duzgun deyil: Float data [ 200 ]; Float * r = ( float *) malloc(sizeof(float)); *r = 1.412; Data = r ; /sehv operator*/ C++ kompilyatoru data = r operatorunda sol qiymetin teleb olundugu melumatini verir. Bu onunla elaqedardir ki, data unvaninin qiymet r unvanin qiymetli ile evez bilmez. Pascal dilinde oldugu kimi C++ -de bir massivin qiymetlerinin digger massive asagidaki sekilde mensub edilmesi sehvdir. Int alfa [15], betta [15]; Betta = alfa; Burada betta massivinin gostericisi sabit oldugundan, bu sehvdir. Bu emeliyyat C++ - de murekkeb formada heyata kecirilir ve asagidaki kimidir. Int * alfa = (int *)malloc(100*sizeof(int)), *betta = (int*) malloc(100*sizeof(int)), Betta = alfa; Burada alafa ni ozunde saxlayan unvan betta deyisenine mensub edilir.massivinlerden birindeki deyisiklik o biri massivde de bas verir. 13

Eger alfa massivinin qiymetlerini betta massivine gondermek teleb olunursa bu asagidaki sekilde heyata kecirilir: Int; Int * alfa= ( int * )malloc (100 * sizeof (int)), *betta = ( int * )malloc (100 * sizeof (int)), For (I = 0 $ I < 100, i++) Betta [ I ] = alfa [ I ]; Asagidaki kimi tesvir olunan alfa ve betta massivlerini muqayise edek. Int * alfa = (int * )malloc (200*sizeof(int)); Int betta [ 200 ]; Her iki massivin yaddasda 400 bayt yer tutur.alfa massivin yaradilmasinda yaddasin dinamiki paylanma funksiyasi olan mallocdan istifade olunur.burada massivler arasinda ondadirki, alfa dan ferqli olaraq, betta sabit gostericidir. Burada, betta = alfa mensubedilmesi duz, alfa = betta mensubedilmesi ise sehvdir.qeyd etmek lazimdir ki, deyisen gostericinin komeyi ile tesvir olunan massivlerde verilenlerin oxunub ve ya yazilmasi ucun muraciet usulu deyismir.asagidaki proqrama baxaq: /*Massivlerin adlari ve gostericileri arasindaki elaqeni tesvir eden proqram*/ #include <iostream.h> void main ( ) { float data [ 245 ]; printf( \n data-nin unvani=%u, data ); 14

printf( \n data[ 0 ]- in unvani=%u,& data [ 0 ] ); printf( \n data[ 1 ]-in unvani=%u\n, data [ 1 ] ); Misal 5. Massivin butun elementlerine baxis ve onun qiymetlerini cap etmek ucun proqram #include <iostream.h> #include<alloc.h> void main ( ) { #define size 200 Float * data=(float*) Malloc(size*sizeof(float)); Float*end_ptr=data+size-1; Int i ; For ( i=0; i<ksize; i++ ) data [ i ]=3*i++11; /*Massivin elementlerine muraciet ucun gostericiler uzerinde hesabi emeliyyatdan istifade olunur*/ while ( data!=end_ptr ) printf ( %8.0,*data++ ); printf ( \n ); Indi ise basqa misala baxaq.burada ++*data ve *++data ifadeleriden istifade olunur. ++*data ifadesi *data nin qiymetini, ondan istifade olunmazdan evvel bir vahid artirir.*++data ifadesinde evvel unvan bir vahid ve sonar bu unvanin qiymeti ( bu 10 a beraberdir ) goturulur. Misal 6. #include <iostream.h> 15

#include<alloc.h> void main ( ) { Int *data( int * )malloc( 20*sizeof( int )); Int i; For( i=0; i<20; i++ ) data [i]=10*i; printf( \n ++*datai=%d, ++*data ); printf( \n ++*data=%d\n, ++* data ); Birolculu massivlerde oldugu kimi coxolculu massivde de onun elementlerine muraciet hem indeks deyisenlerinin, hem de gostericilerin komeyi ile mumkundur.her iki usulu bir ifadede birlesdirmek olar.gostericilerin komeyi ile coxolculu massivin elementlerine muraciet nezere olmaq lazimdir ki, gostericiye tam kemiyyet elave etdikide onun daxili qiymeti elemente uygun tip uzunlugu qeder deyisir.massivin adi hemise sabit gostericidir.meselen, type AR [ N ] [ M ][ K ] kimi teyin edilen massivde AR gostericisine bir vahidin elave olunmasi unvanin qiymetini sizeof ( type ) * M * L kemiyyet deyisilmesine getirir... Buna gore de * ( AR+1 )ifadesi AR [ l ]elementinin unvanidir.umumi sekilde ucolculu AR [ i ][ j ] [ l ] massivin indeks elementleri * ( * ( * ( AR+i ) + j )+ l ) ifadesine uygundur. Meselen, a [ 2 ] [ 3 ] ifadesi * ( * ( a+2 ) +3 ) gostericisi ile ekvivalentdir. Coxolculu massivler yaddasda ele yerlesirki,sonuncu indeks suretle deyissin. Int d [ 3 ] [ 4 ] kimi tesvir olunan ikiolculu massivin yaddasda asagidaki kimi yerlesir. d [ 0 ] [ 0 ], d [ 0 ] [ 1 ], d [ 0 ] [ 2 ], d [ 0 ] [ 3 ], d [ 1 ] [ 0 ], d [ 1 ] [ 1 ], d [ 1 ] [ 2 ], d [ 1 ] [ 3 ], d [ 2 ] [ 0 ], d [ 2 ] [ 1 ], d [ 2 ] [ 2 ], d [ 2 ] [ 3 ], 16

Int d [ 2 ] [ 2 ] [ 2 ] kimi tesvir olunan ucolculu massivinverilenleri ise yaddasda asagidaki kimi yerlesir. d [ 0 ][ 0 ][ 0 ],d [ 0 ] [ 0 ][ 1 ], d [ 0 ][ 1 ][ 0 ],d [ 0 ] [ 1 ][ 1 ], d [ 1 ][ 0 ][ 0 ],d [ 0 ] [ 0 ][ 1 ], d [ 1 ][ 1 ][ 0 ],d [ 1 ] [ 1 ][ 1 ], Bu deyilenleri asagidaki misalda gosterek. Misal 7.Gostericinin komeyi ile massivin elementlerine muraciet proqrami #include <iostream.h> void main ( ) { int ar [3][2][4] = { 0, 1, 2, 3, 10, 11, 12, 13, 100, 101, 102, 103, 110, 111, 112, 113, 200,201, 202, 203, 210, 211, 212,213, Cout << \nar = " <<ar; // ar [ ][ ][ ] massivin unvani Cout << \n*ar = " <<*ar; // ar [0][ ][ ] massivin unvani Cout << \n**ar = " <<**ar; // ar [0][0][ ] massivin unvani Cout << \n***ar = " <<***ar; // ar [0][0][0] elementi Cout << \n*(ar+1) = " <<*(ar+1); // ar [1][ ][ ] massivin // unvani 17

Cout << \n*(ar+2) = " <<*(ar+2); // ar [2][ ][ ] massivin // unvani // ar [0][1][ ] massivin // unvani Cout << \n*(*ar+1) = " <<*(*ar+1); Cout << \n*(*(*ar+1)+1)+1) = " <<*(*(*ar+1)+1)+1); Cout << \n*(ar[1][1]+1) = " <<*(ar[1][1]+1); Cout << \n*(ar[1]+1)[1] = " <<*(ar[1]+1)[1]; Proqramdaki asagidaki ifadeler ekvivalentdir: *( * ( * ar + 1 ) + 1 ) + 1) = = ar [1] [1] [1] = = [1] [1] Coxolculu massivin elementlerine muracietin iki formasinda bir ifadede istifade etmek olar, yeni : *(ar [1] [1] + 1 ) = = 1 1 1 Dinimiki yaddasli massivler. Massivleri yaddasda dinamiki yerledirmek ucun new emeliyyatindan istifade olunur ve formati asagidaki kimidir: New massivin_tipi 18

Bu emeliyyat massivi inisiallasdirmaga imkan vermir. New emeliyyatinin yerine yetirilmesinin neticesi massivin birinci elementinin unvaninin qiymetinin gostericisidir. Massivinler ucun dinamiki yaddasin ayrilmasinda onun olcusu tam teyin olunmalidir Long (*lp)[2] [4]; //Gosterici teyin olunub Ip = new long [3] [2] [4]; //Masivin ucun yaddas ayrilib Bu misalda elementleri long tipinde olan ikiolculu massivde obyektin gostericisinden istifade olunub.qeyd edek ki, gostericinin teyinind dairevi moterizelerden istifade olunub ki, bunsuz mumkin deyil. Bu operatorlarin yerine yetirilmesinden sonar lp gostericisi 3 * 2 * 4 * Sizeof(long) bayt olculu dinamiki yaddas sahesine muraciet vasitesi olur. Ayrilmis dinamiki yaddasdan istifade ucun bu yaddas sahesi bosalmalidir ki, bu delete emeliyyatinin komeyile yerine yetirilir.meselen, delete [ ] lp ; operatorunun icrasi neticesinde yuxaridaki ucolculu massiv ucun ayrilan dinamiki yaddas sahesi tamam bosalir. Massivin teyininden ferqli olaraq, dinamiki massivin inisializasiyasi yerine yetirilmir.buna gorede dinamiki massivler massivler ucun yaddasin ayilmasinda onun olcusu tamaile teyin olunmalidir. Meselen, New long [ ]; New long [ ] [2 ] [4]; //Sehvdir, olcu melum deyil //Sehvdir,olcu melum deyil 19