İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu DİZİLER

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

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

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

Diziler (Arrays) Çok Boyutlu Diziler

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

C PROGRAMLAMA D İ L İ

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

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

Diziler. Dizi Tanımı Dizi Elemanlarına Değer Atama Diziler ve Göstergeler 2-Boyutlu Diziler

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

BLM 111 ALGORİTMA VE PROGRAMLAMA I

Programlama Dilleri 1. Ders 4: Diziler

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

Giriş. ENF102 Jeoloji

Pointer Kavramı. Veri Yapıları

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

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

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8

Hafta 11 Çok Boyutlu Diziler

8. İŞARETCİLER (POINTERS)

YAPILAR (STRUCTURES)

Programlama Dilleri 1. Ders 5: Göstericiler

BLM 111 ALGORİTMA VE PROGRAMLAMA I

Programlama Dilleri Laboratuvarı

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

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ı

ALGORİTMA VE PROGRAMLAMA I

/ C Bilgisayar Programlama Final Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.

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

Genel Programlama II

C++ Dersi: Nesne Tabanlı Programlama

Örnek 4: Örnek Özyinelemeli fonksiyon örneği Bölüm 9. C++ programlama dilinde Nesne ve sınıf

Diziler. Dizi Tanımı Dizi Elemanlarına Değer Atama Diziler ve Göstergeler 2-Boyutlu Diziler

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

elemanlı bir dizide bir sinyalin 1 er saniye aralıklarla ölçülen gerilim değerleri tutulmaktadır. Bu sinyalin tepeden tepeye genliğini,

MAK 1005 Bilgisayar Programlamaya Giriş. Fonksiyonlar. Prof. Dr. Necmettin Kaya

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

PROGRAMLAMAYA GİRİŞ DERS 2

BİLG Dr. Mustafa T. Babagil 1

DİZİLER 5/4/2010. ENF-102 Jeoloji Giriş. Tek Boyutlu Diziler. Tek Boyutlu Diziler. Örnek. Örnek

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

2. Dereceden Denklemin Köklerini Bulan Program

Adı Soyadı : Öğrenci No :

C ile Uygulamalar 4 - Cevaplar

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

Yrd. Doç. Dr. Caner ÖZCAN

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

#include <stdio.h> main() { int i; i=0; do { printf("i nin simdiki degeri= %d\n",i); i = i + 1; } while (i<5); }

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

Başkent Üniversitesi MühendislikFakültesi BaharYarıyılı YerSıra No BİL 101 Bilgisayar Yazılımı-I Dersi Dönem Sonu MAZERET Sınavı

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

ALGORİTMA VE PROGRAMLAMA I

BİL1001 Bilgisayar Bilimlerine Giriş 1

Özyineleme (Recursion)

BİLGİSAYAR PROGRAMLAMA. Algoritma ve Akış Şemaları

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

C PROGRAMLAMA D İ L İ

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

Struct VE GÖSTERİCİLER FONKSİYONLARDA STRUCT KULLANIMI Programlama dilleri hafta -

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

Kocaeli Üniversitesi Bilgisayar Mühendisliği Programlama 2 Dersi Final Sınavı. A Grubu

BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN

enum bolumler{elektronik, insaat, bilgisayar, makine, gida};

Temel Giriş/Çıkış Fonksiyonları

C Programlama Dilinde Değişkenler

Pointers (İşaretçiler)

Ders 4: Diziler (Arrays( Arrays) barisgokce.com

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

/* Çember alanını hesaplar */

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

Sınav tarihi : Süre : 60 dak.

ALGORİTMA VE PROGRAMLAMA I

Hafta 12 Karakter Tutan Diziler

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

Genel Programlama II

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#10

Programlama Dilleri. C Dili. Programlama Dilleri-ders08/ 1

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

Yrd. Doç. Dr. Caner ÖZCAN

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

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

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

C ile Uygulamalar 3 - Cevaplar

Fonksiyonlar (Altprogram)

Telefon Rehberi Uygulaması

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

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

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

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta

C de Detaylı Üs Alma Programı. C# Dilinde Metot Tanımlama ve Yazdırma

ALGORİTMA VE PROGRAMLAMA I

STRİNG DİZİLER(KATARLAR)

İ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-11 Karakter Diziler. Yrd. Doç. Dr. Ümit ATİLA

Adım Adım C. Dr. Hidayet Takcı

HSancak Nesne Tabanlı Programlama I Ders Notları

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

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-3 İşaretçiler (Pointer) (Kısım-2)

Transkript:

DİZİLER Dizi Nedir? Aynı türden nesnelerin oluşturduğu, bellekte bitişik bir biçimde bulunan veri yapısına dizi denir.mesela alfabe diye bir dizi tanımlarız, harfleri a,b,c,d... diye sıralarız.dizinin faydası, aynı mantıksal ilişki içindeki nesnelerin bir arada tutulmasıdır.örneğin kullanıcıdan 100 tane değer girmesini istediğimizde her bir değer için bir değişken tanımlamamız gerekirdi. int a,a1,a2... a99; diye.mümkün ama oldukça zahmetli. Bunun yerine int a[100] yazdığımızda bize bellekten 100 tane int değişken için alan ayrılıyor. Değişkene ulaşırken onun adını yazarız, dizilerde de bu böyledir aşağı yukarı. Tek fark, dizinin adıyla beraber elemanın numarasını da yanında yazarız. Örneğin d dizisinin 40. elemanını çağırmak için d[39] yazarız. 40 değil de 39 yazmamızın nedeni C programlama dilinde dizilerin 0 dan başlamasıdır.yani bir dizinin ilk elemanı d[0] dır. O nedenle ulaşmak istediğimiz elemanın bir eksiğini yazarız. a dizisinin 40.elemanı, a[39]; 100.elemanı a[99] ile çağırırız. Şimdi basit bir örnek verelim: /*5 sayinin ortalamasini alan program*/ #include <stdio.h> int dizi[5]; float toplam=0; float ortalama=0; for(i=0;i<5;i++) printf ("%d.degeri giriniz.. ", i+1); scanf("%d", &dizi[i]); toplam += dizi[i]; ortalama = toplam/5; printf("ortalama %.5f",ortalama); return 0;

Bu programın cıktısı şu şekilde olacaktır : Bu programda kullanıcıdan 5 değer istiyoruz, daha sonra bunların ortalamasını alıyoruz. Her değer için bir int değişkeni kullanmak yerine int dizi[5] yaparak bu işi tek satırda hallediyoruz. ------------------------------------------- Bir dizi tanımlarken onu 2 veya daha fazla boyutlu da tanımlayabiliriz Örneğin: int dizi [4][3] = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ; int dizi[3][5][4]; int dizi[1][5]; gibi, bu 1x5 lik bir matris oluyor aynı zamanda. Dizilere Değer Atama Bir değişken tanımlarken ona değer atayabiliriyoz.mesela int a = 2; diyoruz. Aynı şekilde diziyi tanımlarken elemanlarına değer atayabiliriz. int dizi[5] = 1,2,6,7,9 char name[ ] = O, z, a, n ; char city[5] = OZAN ; //HATALI char city[4]= OZAN ; GEÇERLİ İlk değer tanımı yapacaksanız eleman sayısı kısmını boş bırakabilirsiniz. int dizi[ ] = 1,2,6,7,9 şeklinde yapabilirsiniz.derleyici atanmak istenen değer sayısına bakar ve ona göre dizinin boyutunu belirler.

Dizi elemanlarına ilk değer verilmesinde kullanılan ifadeler, sabit ifadeleri olmalıdır. int a[10] = c, c + 3, d + 2; gibi bir ilk değer verme işlemi derleme zamanı hatası oluşturur. Diyelim ki elimizde 5 elemanlı bir dizi var biz bunun ilk elemanının değerini 3 diye atadık.diğerlerini atamadık.programı derleyip printf() ile diğer elemanları yazdırdığımızda hepsinin 0 olduğunu göreceğiz.yani int dizi[5]=3; yaparsak ilk eleman 3, diğerleri 0 olmuş olur. Derleyici değer atanmayan elemanlara otomatik olarak 0 değerini verir.yalnız; int dizi[5]; yapıp hiçbir elemanın değerini atamazsak bu sefer derleyici elemanlara 0 değerini atamaz. Bellekte, o dizinin olduğu yerde hangi değer varsa onu verir. Bir örnekle görelim : #include <stdio.h> main () int dizi[5]; for(i=0;i<5;i++) printf("%d\n",dizi[i]); Bu programın cıktısı şu şekilde olacaktır : Burada 5 elemanlı bir dizi tanımladık ama elemanlara herhangi bir değer atamadık. Dolayısıyla bellekte dizinin olduğu yerde hangi değer varsa elemanlara o atanmış oldu. Dizilerle ilgili diğer bir örnek:

//Maas ortalaması bulan program #include <stdio.h> #define calisansayisi 10 int maaslar[calisansayisi]; int i,y=0,toplam=0; float ortalama; while(1) for(i=0;i<10;i++) printf("%d.kisinin maasi\n",i+1); scanf("%d",&maaslar[i]); toplam +=maaslar[i]; ortalama=toplam/10; printf("ortalama = %f\n",ortalama); for(y=0;y<10;y++) if(maaslar[y]<ortalama) printf("%d.calisanin maasi ortalamanin altinda\n",y+1); else printf("%d.calisanin maasi ortalamanin ustunde\n",y+1); printf("yeni degerler giriniz\n"); Bu programın cıktısı aşağıdaki gibidir.

//mutlak deger programi #include<stdio.h> void mutlak( int[], int ); int a; int dizi[] = -32, 13, -13, -6, 0, 8 ; mutlak( dizi, 6 ); for( a = 0; a < 6; a++ ) printf("%d ", dizi[a]); void mutlak( int dizi[], int buyukluk ) int c; for(c = 0; c < buyukluk; c++) if( dizi[c] < 0) dizi[c] *= -1; Programın çıktısı : Dizilerin fonksiyonlara aktarımı Uzun uzun anlatmak yerine örnek üzerinde bakalım #include<stdio.h> //once fonksiyonların prototipleri float maksimum( float [ ], int ); float minimum( float [ ], int ); float ortalama( float [ ], int ); // 8 elemanli bir dizi tanimliyoruz ve degerler atiyoruz float sayilar[ 8 ] = 23.44, 48.98, 9.06, 15.1, 13, 2.455, 3.44, 2.33 ; float max, min, ortalama1; // Burada fonksiyonlardan yararlaniyoruz max = maksimum( sayilar, 8 ); min = minimum( sayilar, 8 );

ortalama1 = ortalama( sayilar, 8 ); printf( "Maksimum: %.2f\n", max ); printf( "Minimum: %.2f\n", min ); printf( "Ortalama: %.2f\n", ortalama1 ); return 0; //Maksimum bulma fonksiyonu float maksimum( float dizi[ ], int eleman_sayisi ) float max; max = dizi[0]; for( i = 1; i < eleman_sayisi; i++ ) if( max < dizi[ i ] ) max = dizi[ i ]; return max; //Minimum bulma fonksiyonu float minimum( float dizi[ ], int eleman_sayisi ) float min; min = dizi[ 0 ]; for( i = 1; i < eleman_sayisi; i++ ) if( min > dizi[ i ] ) min = dizi[ i ]; return min; //Ortalama alma fonksiyonu float ortalama( float dizi[ ], int eleman_sayisi ) float ortalama1 = 0; for( i = 0; i < eleman_sayisi; i++ ) ortalama1 += dizi[ i ]; return ortalama1/ 8;

Ekran Çıktısı : Burada belirlediğimiz dizinin elemanlarından en büyüğünü, en küçüğünü ve bu elemanların ortalamasını fonksiyonlar yardımıyla buluyoruz. Dizilere pointer ile erişim Pointerlar değişkenleri işaret ettiği gibi dizileri de işaret edebilirler. Ptr=dizi; yazmak bunun için yeterlidir. Bunun için atama işareti (&) kullanmaya gerek yoktur. Dizilerde birer pointer olduğundan & işaretine ihtiyaç duyulmaz. Ptr=dizi; yazdıktan sonra ptr[3] diye kullanabilirsiniz.ayrıca, örneğin dizinin üçüncü elemanına ulaşmak için *(ptr+3) i kullanabilirsiniz.*(ptr+x) =ptr[x]. Ayrıca pointerla ptr=&dizi[4] diyerek dizinin 5. elemanını atayabiliriz. Bir örnek: //pointerla dizi kullanimi #include<stdio.h> int dizi[ 6 ] = 3, 5, 18, 22, 44, 11 ; int *ptr; ptr = dizi; for( i = 0; i < 6; i++ ) printf( "%d\n", *( ptr + i ) ); return 0; Ekran çıktısı :

Dizilerin Sıralanması Sıralama için birçok algoritma kullanılabilir.kullanımı basit olan kabarcık(bubble) sıralamasını göreceğiz : #include <stdio.h> #define boyut 8 int x[boyut]=3,4,2,1,6,7,9,22; int a,b,c; for (a=0;a<boyut-1;a++) for(b=0;b<boyut-1-a;b++) if(x[b]>x[b+1]) c = x[b]; x[b]=x[b+1]; x[b+1]=c; for(b=0;b<boyut;b++) printf("%d\n",x[b]); return 0; Programın ekran çıktısı şu şekilde olacaktır: Ozan TEZCAN ozantezcan@msn.com İTÜ IEEE Bilişim Komitesi