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

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

Diziler (Arrays) Çok Boyutlu Diziler

Değişkenler, içerisinde tek bir değer tutabilen yapılardır. Örneğin haftanın günlerini değişkenlerde tutmak istersek, her bir gün adı için bir

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ı*/

C++ Dersi: Nesne Tabanlı Programlama

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

C PROGRAMLAMA D İ L İ

BİL1001 Bilgisayar Bilimlerine Giriş 1

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

Dizi nin Önemi. Telefon rehberindeki numaralar, haftanın günleri gibi v.b.

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

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

HSancak Nesne Tabanlı Programlama I Ders Notları

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

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

D İ Z İ L E R A R R A Y S

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

Adı Soyadı : Öğrenci No :

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

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

Hafta 11 Çok Boyutlu Diziler

Giriş. ENF102 Jeoloji

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

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

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

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

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

Fall Object-Oriented Programming Laboratory 02 - Structures

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

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

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

C++ Operatörler (Operators)

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

Özyineleme (Recursion)

2. Dereceden Denklemin Köklerini Bulan Program

BLM 111 ALGORİTMA VE PROGRAMLAMA I

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

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

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8

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

Programlama Dilleri 1. Ders 5: Göstericiler

Hafta 13 Fonksiyonlar

Visual Basic Uygulamaları-4. Dİ Zİ LER (ARRAYS) ve Nesne Kü meleri

C++ Dersi: Nesne Tabanlı Programlama

BİLG Dr. Mustafa T. Babagil 1

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

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

Eln 1001 Bilgisayar Programlama I

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

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

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İ

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

Matlab da Dizi ve Matrisler. Mustafa Coşar

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ı

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

BLM 111 ALGORİTMA VE PROGRAMLAMA I

C dilinde if-else yapısı

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

ALGORİTMA VE PROGRAMLAMA I

Programlama Dilleri 1. Ders 4: Diziler

C ile Uygulamalar 4 - Cevaplar

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

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

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

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

Programlama Dilleri Laboratuvarı

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

PROGRAMLAMAYA GİRİŞ DERS 2

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

BÖLÜM 11: YAPISAL VERİ TİPLERİ

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

Fonksiyonlar. Yrd.Doç.Dr.Bülent Çobanoğlu

DÖNGÜLER (LOOPS) while(), do-while(), for(), foreach()

5. BÖLÜM (10ncu ve 11nci hafta)

STRING (SÖZEL) İŞLEMLER. Yrd. Doç.Dr. Bülent Çobanoğlu

BPR152-Algoritma ve Programlama II Uygulama -13

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

Döngü ve Koşul Deyimleri

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

Temel Giriş/Çıkış Fonksiyonları

elemanlarının gezilmesine yönelik bir örnek sunulmuştur, inceleyiniz.

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

Java da Dizi Tanımlama

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

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

C PROGRAMLAMA D İ L İ

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

BMB1002 Bilgisayar Programlamaya Giriş. Dosyalar. Prof. Dr. Necmettin Kaya

C++ Dersi: Nesne Tabanlı Programlama

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

JAVADA DİZİ İŞLEMLERİ

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

8. İŞARETCİLER (POINTERS)

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

NOT: Bu kodlar çeşitli internet siteleri, üniversite siteleri ve ders kitaplarından derlenerek hazırlanmıştır.

AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ

PROGRAMLAMA TEMELLERİ DERSİ ÖZETİ

while(), do-while(), for() M.İLKUÇAR 2010 MAKU-MYO

Transkript:

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

Dizi (Array) Nedir? Bellekte sürekli yer kaplayan artarda sıralanmış aynı türden verilerin oluşturduğu kümeye dizi (array) denir. Dizi, çok fazla miktardaki tek tip verinin, tek bir isimle saklandığı / depolandığı bellek alanıdır. Diziler bir nevi bileşik değişkenlerdir. Tanımdan da anlaşılacağı üzere dizi elemanlarının aynı tip elemanlardan oluşmuş olması gerekir.

Dizi Nasıl Tanımlanır? Dizi tanımlama şekilleri, kullanılan programlama dillerine göre farklılık gösterse de temel mantık aynıdır. Yani dizinin adı, eleman sayısı (boyutu) ve tipi belirtilir. Dizi tanımlarken; o dizinin adını ve indisini (dizi içerisindeki elemanlara erişmek amacıyla onun kaçıncı eleman olduğunu belirten numarasını) yazmak gerekir. Değişken tanımlamada olduğu gibi dizi tanımlamada da dizi elemanlarının veri tipini mutlaka belirtmemiz gerekir.

Dizi Nasıl Tanımlanır? C \ C++ Tip diziadı [Eleman Sayısı]; Tamsayı dizi örnekleri (İçerisinde tamsayıları sakladığımız 6 elemanlı bir A dizisi) - int A [6]; - int boyut=6; int A[boyut]; - int A[] = 8, 9, 12, 4, 1, 0; Karakter dizi örnekleri - char A[] = sau ; - char A[] = s, a, u, \0 ; String dizi örnekleri - char *gun; - char gun[][5]= "Paz","Sali","Çarş","Per"; - string gun [7]; // C++ için Not: C\C++ dillerinde karakter boyutları tanımlanırken dikkatli olmak gerekir. Çünkü karakter (char) dizilerin en son elemanı NULL( \0 ) olacaktır

İndis (Index) Nedir? Dizilerde değişken ismini takiben parantez içerisinde belirtilen numaraya indis adı verilir. C\C++ ve Java dillerinde dizilerin ilk elemanı, 0. indisli elemanıdır. Son elemanı da dizi tanımında belirtilen eleman sayısının 1 eksiğidir. 1.eleman 2.eleman 3.eleman 4.eleman 5.eleman 6.eleman 7.eleman A[7] A[0] A[1] A[2] A[3] A[4] A[5] A[6] 5 7 9 23 45 12 04

Dizi ve indislere isim verirken dikkat edilmesi gereken hususlar: Dizileri tanımlamada değişken tanımlama kuralları geçerlidir. İndis değeri negatif olamaz. İndisler tamsayı veya tamsayı üreten bir değer olmalıdır. İndis değeri en az 1 olmalıdır. Dizi tanımlama esnasında indis değeri verilmez (yani boyutu belirtilmez) ise dizinin boyutu tanımlanan eleman sayısı kadardır. Örneğin; int A[ ]=0, 1, 2, 3, 4, 5; şeklindeki tanımlamada dizinin boyutu 6 dır. Dizinin ilk indis değeri 0 (sıfır) dır. Dolayısıyla n elemanlı bir dizinin n. elemanının indis değeri n-1 dir.

Diziler Olmasaydı, Programcı Ne Yapardı?

Dizi Elemanlarına Nasıl Değer Aktarırım? Her bir elemana ayrı ayrı değer girilebilir: int dizi[100]; dizi[0] = 2; dizi[1] = 3;.. Tüm elemanlara bir kerede, dizi tanımlaması sırasında değer girilebilir: Tip dizi[ ] = değer1, değer2, değer3,..., değer100 ; Bir döngü içerisinde indis numarası belirtilerek değer aktarılabilir. for(int i = 0; i<100 ; i++) dizi [i] = 5; //dizi[i]=i;

Dizi Elemanlarına Nasıl Değer Aktarırım? Örnek 1. 0, 1, 2, 3, 4, 5 sayılarını A dizisine aktarıp ekranda gösteren programı yazınız.

Dizi elemanlarının dışarıdan(klavyeden) girilmesi Dizi elemanları ya da dizi boyutunu dışarıdan (klavyeden) da girebiliriz. Bunun için for döngü yapısını kullanabiliriz #include <stdio.h> #include <conio.h> main() int Say[5]; int i, rakam; for (i= 0; i< 5; i++) printf ("Gir dizi elemanlarini\n"); scanf("%d", &rakam); Say[i] = rakam; printf ("Yaz diziyi ekrana \n"); for (i= 0; i< 5; i++) printf("%d ", Say[i]); getch();

Soru: Dizi boyutunun dışarıdan girildiği ( N elemanlı ) bir dizinin tüm elemanlarını toplayan programı yazınız. Eleman değerleri 1 ile 100 arasında rastgele girilsin

Fonksiyonlara parametre olarak dizi aktarımı Fonksiyona bir dizinin aktarımı aşağıdaki şekilde tanımlanır; Tip fonksiyonadi (tip diziadi[],.) // void notlarial(int prognot[]) gibi Soru: Programlama dersinden kalanların ve geçenlerin sayısını veren programı yazınız Programlama dersine ait başarı notları bilgisayar tarafından rastgele üretilecektir.

Çözüm #include <iostream> #include <stdio.h> #include <stdlib.h> #include <time.h> using namespace std; int A[24];//genel bir dizi void notlarial(int []); int kalanlaribul (int [], int); int main() srand(time(0)); int kalan, gnot=50; notlarial(a); kalan=kalanlaribul(a, gnot); cout << " kalanlar..: " << kalan; cout << " geçenler..: " << 24-kalan; return 0; void notlarial(int A[]) int i; for (i=0; i<24; i++) A[i]=1+rand()%100; cout << A[i] << " "; int kalanlaribul (int A[], int gnot) int i,k=0; for (i=0;i<24;i++) if (A[i]<gnot) k++; return k;

Dizi Elemanlarının Sıralanması (BubbleSort Alg. göre Algoritması #include<stdlib.h> #include<stdio.h> int main() int i,j,enk; int say[]= 50, 20, 45, 82, 25, 63, 34, 12, 23, 8; printf ("Dizinin Sırasız hali.: "); for (i=0; i<10;i++) printf ("%d ", say[i]); // Dizi elemanları sıralanıyor for (i = 0; i < 10; i++) for (j = i+1; j <= 10; j++) if (say[i] > say[j]) enk=say[i]; say[i]=say[j]; say[j]=enk; //Kod devamı printf ("\ndizinin Sıralı hali.: "); for (i=0; i<10;i++) printf ("%d ", say[i]); printf("\nen küçüğü.:%d",say[0]); printf("\nen büyüğü.:%d",say[12]); system("pause"); return 0;

İKİ BOYUTLU DİZİLER (MATRİSLER) Bellekte art arda sıralanmış satır ve sütunlardan oluşan yapıya iki boyutlu dizi ya da matris adı verilir. İki boyutlu dizileri aşağıdaki şekilde gösteririz. Matris Tanımlama: Tip Dizi_adı [satir_boyutu][sütun_boyutu]; int A [4] [7];

Örnek: Aşağıdaki matrisi oluşturup, ekranda gösteren programı yazınız.

Soru: 10 kişilik bir sınıftaki öğrencilerin her birinin bir dersten aldığı 4 notu (Vize, KısaSınav1, KısaSınav2, Ödev, Final) bir A matrisine atayan ve ortalamaları ile birlikte aşağıdaki gibi ekranda gösteren programı yazınız.

ÇÖZÜM #include <stdio.h>//printf,scanf #include <conio.h>//getch #include <iostream>//cout, cin #include <stdlib.h>//rand() #include <time.h>//time using namespace std; int main() srand(time(0)); int A[10][7];// 10 satır, 7 sütunlu elemanlı int i,j; printf ("No\tKs1\tKs2\tOdev\tVize\tFinal\tOrtalama\n"); for (i=0; i<10; i++) // satırı verir A[i][0]=i; //numaralar for (j=1; j<6; j++) // sütunu verir A[i][j]=1+rand()%100;//notlar A[i][6]=(A[i][1]*0.1+ A[i][2]*0.1+A[i][3]*0.2+ A[i][4]*0.6)*0.5+A[i][5]*0.5; //Devam for (i=0;i<10;i++) for (j=0;j<7;j++) printf ("%d\t",a[i][j]); printf ("\n"); //satır atla getch(); return 0;

Örnek. 3*4 elemanlı bir A matrisinin içindeki tek sayıları tek boyutlu B dizisine, çift sayıları ise tek boyutlu C dizisine aktaran C/C++ programını yazınız. 3*4 lük A matrisinin elemanları 1 ile 9 arasında rastgele üretilecektir #include <stdio.h> #include <conio.h> int main() printf ("A Matrisi\n"); int A [3][4]; int B[12]; int C[12]; int s1=0, s2=0; int i,j; //A matrisinin elemanları giriliyor for (i=0; i<3; i++) for (j=0; j<4; j++) A[i][j]=1+ rand()%9; printf("%d", A[i][j]); printf("\n"); // A matrisinden B ve C dizileri oluşturuluyor for (i=0; i<3; i++) for (j=0; j<4; j++) if (A[i][j]%2!=0) B[s1]=A[i][j]; s1=s1+1; else C[s2]=A[i][j]; s2=s2+1; printf("b dizisinin elemanları..:"); for ( i=0; i<s1; i++) printf ("%d ", B[i]); printf("\nc dizisinin elemanları..:"); for ( i=0; i<s2; i++) printf("%d ", C[i]); getch();

Karakter Dizileri (Stringler) char *suit[4] = "Hearts", "Diamonds", "Clubs", "Spades" ; char suit [] [10] = "Hearts", "Diamonds", "Clubs", "Spades" ;

String dizi elemanlarını ekranda alt alta gösteren program #include <iostream> #include <conio.h> using namespace std; int main() char ad [] [10] = "Hearts", "Diamonds", "Clubs", "Spades" ; for (int i=0; i<4; i++) cout << ad[i] << endl; getch();