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

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

Hafta 11 Çok Boyutlu Diziler

Hafta 12 Karakter Tutan Diziler

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

Yrd. Doç. Dr. Caner ÖZCAN

Hafta 7 C Programlama Diline Giriş ve C Derleyicisi

Hafta 5 Algoritma Örnekleri ve Analizi

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

Yrd. Doç. Dr. Caner ÖZCAN

Hafta 13 Fonksiyonlar

Hafta 4 Döngü Yapıları

Hafta 9 C Dilinde Kontrol ve Döngü Yapıları

Yrd. Doç. Dr. Caner ÖZCAN

Diziler (Arrays) Çok Boyutlu Diziler

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

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN

C PROGRAMLAMA D İ L İ

BLM 112- Programlama Dilleri II. Hafta 2 C Programlarının Bellek Düzeni ve Rekürsif (Özyinelemeli) Fonksiyonlar

Yrd. Doç. Dr. Caner ÖZCAN

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

ALGORİTMA VE PROGRAMLAMA I

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-4 Döngü Yapıları. Yrd. Doç. Dr. Ümit ATİLA

Yrd. Doç. Dr. Caner ÖZCAN

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

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

Hafta 8 C Dilinde Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri

ALGORİTMA VE PROGRAMLAMA I

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-7 Sıralama Algoritmaları

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

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

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-2 Değişken Kavramı ve Temel Operatörler

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-7 C Programlama Diline Giriş

BİL1001 Bilgisayar Bilimlerine Giriş 1

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

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

BLM 111 ALGORİTMA VE PROGRAMLAMA I

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

Özyineleme (Recursion)

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

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

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

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

Week 5 Examples and Analysis of Algorithms

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

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

Bilgisayar Programlama. 1.Hafta

Eln 1002 Bilgisayar Programlama II

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

Giriş. ENF102 Jeoloji

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

2. Dereceden Denklemin Köklerini Bulan Program

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

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8

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

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

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

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

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

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

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

HSancak Nesne Tabanlı Programlama I Ders Notları

BLM 111 ALGORİTMA VE PROGRAMLAMA I

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-1 Kapsama Kuralları & Rasgele Sayı Üretimi & Rekürsif (Özyinelemeli) Fonksiyonlar

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

BPR152-Algoritma ve Programlama II Uygulama -13

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

ALGORİTMA VE PROGRAMLAMA II

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

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ı

C Programlama Dilinde Değişkenler

C++ Dersi: Nesne Tabanlı Programlama

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

Adı Soyadı : Öğrenci No :

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

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

PROGRAMLAMAYA GİRİŞ DERS 2

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

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

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

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-8 Dosya İşlemleri-1. Yrd. Doç. Dr. Ümit ATİLA

Bölüm 6. Diziler (arrays) Temel kavramlar Tek boyutlu diziler Çok boyutlu diziler

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

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

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

ALGORİTMA VE PROGRAMLAMA II

BLM 112- Programlama Dilleri II. Hafta 1 Giriş, Kapsama Kuralları ve Rasgele Sayı Üretimi

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

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

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

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

BİLG Dr. Mustafa T. Babagil 1

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

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

BLM 111 Algoritma ve Programlama I Güz 2018

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

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

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

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

Transkript:

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

Diziler Bilgisayarlar yardımıyla yapılan işlemlerde, çok sayıda veri girilmesi ve girilen verilerin işlenerek belirli bir sistematiğe göre sıralanması gerekebilir. Belirli bir düzende olan verilerin işlenmesi hem daha kolay hem de daha pratik tir. Bu nedenle bilgisayar programlarında çoklu verileri işlemek için "dizi" olarak adlandırılan sıralı veri alanları kullanılır. Tek isimle adlandırılan bu veri alanları genel olarak belleğe ardışık olarak yerleşirler. 2

Diziler Aynı amaç için birden fazla aynı tip değişkene ihtiyacımız olur. Örneğin, 100 kişilik bir sınıfın "Programlama Dilleri" dersinden aldığı yılsonu notlarını tek tek değişkenlere aktarmak yerine (100 tane değişken adı gerekli), bunları Notlar isimli bir diziye aktarılabilir. Bu şekilde birçok değişken adı ve alanı kullanılmaz. Bilgiler tek isim altında belirli bir düzen altında tutulur ve hızlı bir şekilde işlenirler. 3

Diziler Birden fazla aynı tip değişkeni bir arada tutan veri yapısıdır. En basit tipi bir boyutlu olanıdır. Bir boyutlu dizinin elemanları bir satırda bir biri ardına dizilmiş şekilde kabul edilir. Kodlama: #define N 10 int A[N]; A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9] İlk index = 0 Son index = N-1 = 9 4

Diziler Dizinin n. elemanı c[n-1] ile gösterilir. c[0]+ c[1]+ c[2]+.c[n-1] Dizi elemanları normal değişkenler gibidir. c[0] = 3; printf( %d, c[0]); İndis numarası üzerinde işlemler gerçekleştirilebilir. a= 2, b=3 ise c[a+b] += 8; // c[5] eleman değerine 8 ekler. Dizinin ilk üç elemanının değerleri toplamını yazdırmak için printf( %d, c[0]+c[1]+c[2]); 5

Dizilere İlk Değer Atama Dizilere tanımlama sırasında ilk değer atanabilir. int A[10]={8, 4, 10, 2, 5, 6, 7, 8, 9, 4; Eğer ilk değerler dizinin eleman sayısından az ise kalan elemanların değeri 0 olur. int A[10]={1, 2, 3, 4; /* A[10] dizisinin ilk değerleri {1, 2, 3, 4, 0, 0, 0, 0, 0, 0*/ Eğer ilk değerlerle bir dizi tanımlıyorsak, dizinin boyutunu boş bırakabiliriz. int A[]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10; /* A dizisinin 10 elemanı var A[0]..A[9] */ 6

Dizilere İlk Değer Atama Eğer belirtilen eleman sayısı daha az ise kalan elemanların hepsinin değeri sıfır yapılır. int n[5] = {0; // tüm elemanların değeri 0 olur Dizi elemanlarının başlangıç değerleri otomatik olarak sıfır olmaz. Bunun için en azından ilk eleman değeri sıfır yapılmalıdır. Eğer gereğinden fazla başlangıç değeri varsa hata oluşur. int n[5] = {1, 2, 3, 4, 5, 6; //altı adet başlangıç değeri 7

Dizi Kullanımı Eğer belirtilen eleman sayısı daha az ise kalan elemanların hepsinin değeri sıfır yapılır. Dizilerin her bir elemanına ulaşmak için her elemanın indeksini kullanmamız gerekiyor. Bir indeks elemanın dizideki yerini ifade ediyor. Dizinin elemanları peş peşe sıralanmıştır. (arada boşluk yok) Dizinin her elamanı sırasıyla tanımlanır ve bu sıralama 0 dan başlar. 8

Dizi Kullanımı Örnek #define MAX_OGR_SAYISI 5 int notlar[max_ogr_sayisi]; notlar[0] = 98; notlar[1] = 87; notlar[2] = 92; notlar[3] = 79; notlar[4] = 85; 9

Dizi Kullanımı Uyarı! C indexlerin doğru aralıkta olup olmadığını kontrol etmiyor. (yani, index değerleri, [ ] operatorü kullanılırken dizinin sınırları içerisinde mi değil mi diye kontrol edilmiyor.) #define MAX_OGR_SAYISI 5 int notlar[max_ogr_sayisi]; notlar[53] = 98; notlar[5] = 98; 10

Dizi Kullanımı Dizinin elemanlarına ulaşılırken genelde döngüler kullanılır, ve döngünün her iterasyonunda dizinin bir elemanı üzerinde çalışılır. En sık kullanılan döngü for döngüsüdür. Çünkü döngü ifadesinde açıkça hem ilk değer atamaları hem de indeks değişkeni kullanılabiliyor: notlar[0] = 0; notlar[1] = 0; notlar[2] = 0; notlar[3] = 0; notlar[4] = 0; int i; for(i = 0; i < MAX_OGR_SAYISI; i++) notlar[i] = 0; 11

Örnek: Okuma #include <stdio.h> #define SIZE 5 int main(void) { int i; double a[size]; printf( %d tane dizi elemanı gir: ", SIZE); /* dizi elemanlarını oku*/ for(i = 0; i < SIZE; i++) scanf("%lf", &a[i]); return 0; 5 tane dizi elemanı gir: 1.2 3.4 5.6 7.8 9.0 12

Örnek: Yazma #include <stdio.h> #define SIZE 5 int main(void) { int i; double a[size] = { 1.2, 3.4, 5.6, 7.8, 9.0 ; /* Dizi elemanlarını göster*/ for(i = 0; i < SIZE; i++) printf("a[%d] = %.2lf\n", i, a[i]); return 0; a[0] = 1.20 a[1] = 3.40 a[2] = 5.60 a[3] = 7.80 a[4] = 9.00 13

Örnek: En Büyük Eleman #include<stdio.h> #define SIZE 5 int main(void) { int i; double a[size] = { 1.2, 3.4, 5.6, 7.8, 9.0 ; double max = 0.0; /* Dizideki en büyük elemanı bul*/ for(i = 0; i < SIZE; i++) if (a[i] > max) max = a[i]; printf("max = %.2lf\n", max); return 0; max = 9.00 14

Örnek: Dizi Toplamı #include <stdio.h> int main(void) { int i, N, A[100], B[100], C[100]; printf("dizinin eleman sayisini gir:\n"); scanf("%d", &N); for(i = 0; i < N; i++){ /* Dizi elemanlarını oku*/ printf("a[%d]=",i); scanf("%d",&a[i]); for(i = 0; i < N; i++){ /* Dizi elemanlarını oku*/ printf("b[%d]=",i); scanf("%d",&b[i]); for(i = 0; i < N; i++){ /* Dizi elemanlarını oku*/ C[i] = A[i] + B[i]; printf("c[%d]=%d\n", i, C[i]); return 0; 15

Örnek: Dizi Ortalama ve Standart Sapma #include <stdio.h> #include <math.h> #define N 10 int main(){ int i; float x[n], toplam = 0.0, ort, std_sap = 0.0; /* ortalama hesabı */ for(i=0; i<n; i++){ printf("%d. sayi : ",i+1); scanf("%f",&x[i]); toplam += x[i]; ort = toplam/n; /* standart sapma hesabı */ for(toplam = 0.0, i=0; i<n; i++) toplam += pow(x[i]-ort, 2.0); std_sap = sqrt( toplam/(n-1) ); printf("ortalama = %f\n",ort); printf("standart sapma = %f\n",std_sap); return 0; 16

Kaynaklar Doç. Dr. Fahri Vatansever, Algoritma Geliştirme ve Programlamaya Giriş, Seçkin Yayıncılık, 12. Baskı, 2015. J. G. Brookshear, Computer Science: An Overview 10th Ed., Addison Wisley, 2009. Kaan Aslan, A dan Z ye C Klavuzu 8. Basım, Pusula Yayıncılık, 2002. Paul J. Deitel, C How to Program, Harvey Deitel. Bayram AKGÜL, C Programlama Ders notları 17