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

Benzer belgeler
Giriş. ENF102 Jeoloji

Dizgiler. C dilinde karakter m şeklinde tek tırnak içerisinde yazılan ifadelerdir. Bu karakterlerin her biri aslında bir tamsayı ile ifade edilir.

Diziler (Arrays) Çok Boyutlu Diziler

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

Özyineleme (Recursion)

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

C PROGRAMLAMA D İ L İ

2. Dereceden Denklemin Köklerini Bulan Program

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

PROGRAMLAMAYA GİRİŞ DERS 2

BİL1001 Bilgisayar Bilimlerine Giriş 1

ALGORİTMA VE PROGRAMLAMA I

ALFASAYISAL BİLGİLER KARAKTER DİZİLERİ (STRING)

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

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

Programlama Dilleri 1. Ders 4: Diziler

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8

HSancak Nesne Tabanlı Programlama I Ders Notları

GENEL GĐRĐŞ-ÇIKIŞ FONKSĐYONLARI. ENF102 Jeoloji 1. #include <stdio.h> printf Fonksiyonu ÖRNEK. printf

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

ALGORİTMA VE PROGRAMLAMA I

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

C Konsol Giriş Çıkış Fonksiyonları

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

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

Değişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while

Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : dak.

C Programlama Dilininin Basit Yapıları

C PROGRAMLAMA DİLİNE GİRİŞ

Algoritma ve Programlama: Karar Yapıları ve 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) {

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

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA I

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

Pointer Kavramı. Veri Yapı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

STRİNG DİZİLER(KATARLAR)

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

BLM 111 ALGORİTMA VE PROGRAMLAMA I

Hafta 12 Karakter Tutan Diziler

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

Veri Yapıları. Amaçlar: Temel Veri Yapılarını Tanımlamalı Veri Yapılarını Veri Modeli ve Türlerini Öğreneceksiniz. İçindekiler:

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

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

Dr. Fatih AY Tel: fatihay@fatihay.net

HSancak Nesne Tabanlı Programlama I Ders Notları

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

Program Akış Kontrol Yapıları

String ve Karakter Dizileri. Yrd. Doç. Dr. Fehim KÖYLÜ Erciyes Üniversitesi Bilgisayar Mühendisliği Bölümü

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

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İ

Hafta 13 Fonksiyonlar

C Programlama Dilinde Değişkenler

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

Bir dizinin boyutları sabittir ve kullanılmadan önce belirlenmelidir. Dizi boyutunu belirlemek için başka bir değişkende kullanabilirsiniz.

C ile Uygulamalar 2 - Cevaplar

Temel Giriş/Çıkış Fonksiyonları

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

Fonksiyonlar (Altprogram)

Nesne Tabanlı Programlama

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

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

Diziler İndisli Değişkenler

BİLGİSAYAR PROGRAMLAMA DERSİ

BİLGİSAYAR BİLİMİ DERSİ (KUR 1) PYTHON PROGRAMLAMA DİLİ ÇALIŞMA KÂĞIDI - 1

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

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 8

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

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

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

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

Yrd. Doç. Dr. Caner ÖZCAN

3/7/2011. ENF-102 Jeoloji 1. Tekrar -- Değişken Tanımlamaları (Definition) ve Veri Türleri (Data Type) Veri Tanımları ve Mantıksal Đşlemler

Dizi elemanları yukarıdaki gibi tek tek tanımlanabileceği gibi matematiksel ifadelerdeki diziler gibi de tanımlanabilir.

EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA

Matlab da Dizi ve Matrisler. Mustafa Coşar

ALGORİTMA VE PROGRAMLAMA II

YAPILAR (STRUCTURES)

Göstericiler (Pointers)

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 3. Bölüm Veri Tipleri ve Değişkenler

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

Diziler & Karakter Katarı (String)

Telefon Rehberi Uygulaması

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

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

C# Örnek Uygulamalar I

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

Pointers (İşaretçiler)

Genel Programlama II

ELN1001 BİLGİSAYAR PROGRAMLAMA I

BİLG Dr. Mustafa T. Babagil 1

JAVADA DİZİ İŞLEMLERİ

Ders Tanıtım Sunumu. Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı. Öğr. Gör. Murat KEÇECİOĞLU 1

Bilgisayar Programlama MATLAB

Sınav tarihi : Süre : 60 dak. c) En başta #include<stdio.h> yazılmamıştır. c) zt d) Pi e) X0

PASCAL PROGRAMLAMA DİLİ YAPISI

İnternet Programcılığı Dersi 2.Dönem Ders Notu

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

Transkript:

Giriş DİZİLER Arrays Aynı isim altında, aynı türde birden fazla değer tutmak için kullanılan veri yapılarıdır (Data Structure). Dizi bir kümedir; aynı türde verilere tek bir isimle erişmek için kullanılır. Bir dizinin bütün elemanları bellekte ardışık olarak saklanır. Diziler bir veya daha çok boyutlu olabilirler. 2/51 Tek Boyutlu Diziler Buradaki eleman sayısı değişken olamaz. Fakat önceden tanımlanmış bir sembolik sabit olabilir. Tek Boyutlu Diziler Genel kullanımdaki köşeli parantez isteğe bağlı anlamında değildir. Köşeli parantez sembolü dizi tanımlamalarında mutlaka yazılmalıdır. GK: dizinintürü dizininadı [elemansayısı]; 4/68 Örnek int a[6]; /* 6 elemanlı, her elemanı int olan dizi*/ char d2[15]; /*15 elemanlı, her elemanı char olan dizi*/ Örnek float x[10]; /*10 elemanlı, her elemanı float olan dizi*/ double k[10]; /*10 elemanlı, her elemanı double olan dizi*/ 5/68 6/68 ENF-102 Jeoloji 2010 1

Açıklama Derleyici ilk örnekteki gibi bir komutla karşılaştığında, 6 adet sayının saklanacağı bellek alanını ayırır. Açıklama Dizi içerisindeki her bir elemana, dizi isminden sonra, yazılan pozisyon numarası; yani indis değeri (subscript) ile ulaşılır. İndis değerleri mutlaka tamsayı olmalıdır. Açıklama Tek Boyutlu Dizi C dilinde bütün dizilerin indis numarası 0'dan başlar. Dolayısı ile dizinin en büyük indis numarası eleman sayısından bir eksiktir. Tek boyutlu dizilere değer atanması Dizinin elemanlarına ulaşmak için dizinin ismi ve köşeli parantez içerisinde indis numarasını yazmak yeterlidir. a[0]=-12; /*dizinin 0 no'lu elemanına -12 değerini ata*/ Tek boyutlu dizilere değer atanması a[2]=a[4]+3; /*dizinin2noluelemanına4noluelemanının 3fazlasını ata.*/ for(i=0;i<6;i++) i i a[i] =0; /*0'dan 6'ya kadar */ /* dizinin elemanlarına 0 değerini ata.*/ ENF-102 Jeoloji 2010 2

Dikkat a[i] +1 ile a[i+1] İlk gösterim dizinin i no'lu indisindeki elemanın bir fazlası anlamına gelir, ikinci gösterim ise dizinin i'nin bir fazlası indisindeki elemanı anlamına gelir. Dolayısı ile bu iki ifade eşit değildir. Tek boyutlu dizilere ilk değer atanması (initialize) Tanımlanan dizilere ilk değer ataması ise aşağıdaki şekilde yapılır. int a[5]=4,5,3,1,8;,,, Tek boyutlu dizilere ilk değer atanması (initialize) İlk değer atama işleminde küme parantezi kullanılır. Küme işaretindenş sonra ( ; ) kullanılmasına dikkat ediniz. Böyle bir ilk değer atamasından sonra dizinin elemanları aşağıdaki gibi yerleşir. Tek boyutlu diziye ilk değer atamasından sonra elemanların yerleşimi Ayrıca Küme işaretleri içerisine dizinin eleman sayısından daha fazla eleman yazıldığında bir yazım hatası ortaya çıkar. Ayrıca Eleman sayısından daha az eleman yazıldığında ise, diğer elemanlar otomatik olarak sıfır değerini alır. İlk değer ataması yapılmayan dizilerin elemanları hafızadaki rasgele değerlerden oluşur. ENF-102 Jeoloji 2010 3

Ayrıca İlk değer ataması yapıldığında eleman sayısını yazma zorunluluğu yoktur. Ne kadar eleman yazılmışsa, eleman sayısı o kadar olur. ÖRNEK: Klavyeden girilen 5 adet tamsayıyı, giriş sırasının tersinden ekrana yazan C programını kodlayınız. Bu problemde dizi kullanılmayacak olsaydı, 5ayrı değişkene ihtiyaç duyulacaktı. Çünkü girilen her bir değereklavyedengirme işlemi bittikten sonra, tekrar ulaşmak gerekecektir. Kod: ÖRNEK: Klavyeden girilen 10 adet tamsayı sınav notuna göre, ortalamanın üstünde olanları ekrana yazan C programı Bu problem çözülürken öncelikle ortalamanın bulunması gereklidir. Ortalamanın bulunabilmesi için bütün notların toplamı alınacak ve not adedine bölünecektir. ÖRNEK: Klavyeden girilen 10 adet tamsayı sınav notuna göre, ortalamanın üstünde olanları ekrana yazan C programı Bu noktadan sonra daha önceden girilmiş notların her biri sıra ile ortalamayla karşılaştırılacak büyük olanlar ekrana yazdırılacaktır. Çözümde dizi kullanılmayacak olsaydı, 20 ayrı değişkene ihtiyaç duyulacaktı. Çünkü, girilen her bir değere klavyeden girme işlemi bittikten sonra tekrar ulaşmak gerekecektir. Örnek Çalışma: ENF-102 Jeoloji 2010 4

Kod: DİZGİLER STRINGS Giriş Karakterlerin (character) gruplanması ile oluşturulmuş veri yapılarına (data structure) dizgi (string) adı verilir. C dilinde karakterler tek tırnak arasına alınmış ifadelerdir. Örneğin m veya y gibi. Aslında temsil ettikleri değer birer tamsayıdır. Derleyici onları hafızada tutarken tamsayı karşılıkları ile saklar. Giriş Karakter serileri,rakamları (digit), harfleri (letter), özel karakterleri (special character) içerebilir. C dilinde dizgi (string) ifadeleri çift tırnak (double quotation) ( " " ) arasında gösterilirler. Örneğin: Vedat Köse (ad soyad) ENF 102" (ders kodu) "2341010" (telefon numarası) Bir dizgi iki şekilde tanımlanarak ilk değer ataması yapılabilir: C dilinde dizgi (string) aslında sonuna \0 karakteri eklenmiş karakter dizisidir (char array). Hafızada tutulan bir dizgiye ilk karakterinin adresi ile erişilir. Başlangıç adresinden 0 karakterine kadar olan bölgede, dizginin kendisi var demektir. 1. char türünde bir dizi tanımlayarak, char isim[]= Vedat Köse ; Burada sonlandırıcı karakter son eleman olduğundan toplam 11 elemanlık bir dizgidir. 1 2 3 4 5 6 7 8 9 10 11 V e d a t K ö s e \0 ENF-102 Jeoloji 2010 5

Dizgi giriş ve çıkış işlemleri Klavyeden bir dizgi okunması gerektiğinde ya da ekran Üzerine bir dizginin yazılması gerektiğinde printf ve scanf fonkiyonları kullanılabilir. Ancak yer tutucu olarak %s kullanılmalıdır. Klavyeden girilen ismi ekrana yazan C programı /*Klavyeden girilen ismi ekrana yazar*/ char ad[20]; printf( adınızı giriniz ); scanf( %s,ad); printf( \ngirdiğiniz isim=%s dir,ad); & işareti Ad değişkeninin önüne & işareti koyulmamıştır. Çünkü ad içerisinde zaten bir adres vardır. Dikkat edilmesi i gereken nokta en fazla 19 karakterlik bir kelime yazılması gerektiğidir. Dizgilerde işlem yapıla bilmesi için \0 karakterlerini bulundurmaları gerekir. Dikkat edilmesi gereken diğer bir husus ise, dizgi girilirken bu scanf fonksiyonu boşluk, tab, enter karakterlerini dizgi sonu olarak algılamaktadır. Klavyeden girilen bir il adının harf sayısını ekrana yazan C programı /*Klavyeden girilen il adının harf sayısını ekrana yazar*/ char ad[50]; int harfsayisi=0; printf( İl adınızı giriniz ); scanf( %s,ad); while (ad[harfsayisi]!= \0 ) harfsayisi++; /*for (harfsayisi=0; ad[harfsayisi]!= \0 ; harfsayisi++)*/ printf( \ngirdiğiniz il adı %d harften oluşuyor,harfsayisi); Klavyeden girilen bir ismi tersten yazan yazan C programı /*Klavyeden girilen ismi tersten yazar*/ char ad[50]; int i,s=0; printf( Adınızı giriniz ); scanf( %s,ad); printf( adınızın tersten yazlışı: ); while (ad[s]!= \0 ) s++; for(i=s-1;i>=0;i--) printf( \n%c,ad[i]); ENF-102 Jeoloji 2010 6

DİZGİ DİZİLERİ Dizgi Dizileri Bir dizgi ismi altında birden fazla değer saklama ve her bir dizgiye indis numarası vererek erişme ihtiyacı ortaya çıkabilir. İsimler Vedat Mete Neva Mehmet Hakan Dizgi Dizileri Her bir dizginin bir karakter dizisi olduğu hatırdan çıkarılmamalıdır. S0 S1 S2 S3 S4 S5 S6 S0 V E D A T \0 S1 M E T E \0 S2 N E V A \0 s3 M E H M E T \0 S4 H A K A N \0 Dizgiler Dizisi Bu yapı aşağıdaki gibi tanımlanabilir ve ilk değerleri atanabilir. char isimler [5][7]= Vedat, Mete, Neva, Mehmet, Hakan ; Klavyeden girilen beş ismi giriliş sırasının tersinden yazan C programı /*Klavyeden girilen isimleri giriliş sırasının tersinden yazar*/ char ad[5][20]; int i,j; for(i=0;i<5;i++) 0i 5i printf( %d. Adı giriniz,i); scanf( %s,ad[i]); /*çok önemli*/ printf( Ters olarak isimler ); for(i=4;i>=0;i--) printf( \n%s,ad[i]);/*çok önemli*/ Karakter Kütüphane Fonksiyonları ENF-102 Jeoloji 2010 7

Karakter Fonksiyonları Dizgi Kütüphaneleri Bu kütüphanede hazır fonksiyonlar, karakterler üzerinde test ve düzeltme işlemlerini yapmak amacı ile kullanılırlar. ctype.h başlık dosyası include direktifi ile bildirilmelidir. Ve geriye int değerinde değer döndürür. Fonksiyon prototipi int isdigit(int c) int isalpha(int c) int isalnum(int c) int isxdigit(int c) int islower(int c) Açıklaması Verilen karakter rakam ise doğru, diğer tüm hallerde yanlış değer döndürür. Verilen karakter harf ise doğru, diğer tüm hallerde yanlış değer döndürür. Verilen karakter rakam veya harf ise doğru, diğer tüm hallerde yanlış değer döndürür. Verilen karakter onaltılık ise doğru, diğer tüm hallerde yanlış değer döndürür. Verilen karakter küçük harf ise doğru, diğer tüm hallerde yanlış değer döndürür. Dizgi Kütüphaneleri Dizgi Kütüphaneleri Fonksiyon prototipi Açıklaması Fonksiyon prototipi Açıklaması int isupper(int c) Verilen karakter büyük harf ise doğru, diğer tüm hallerde yanlış değer döndürür. İnt iscntrl(int c) Verilen karakter kontrol karakteri ise doğru, diğer tüm hallerde yanlış değer döndürür. int tolower(int c) Verilen karakterin küçük harf karşılığını döndürür. İnt ispunct(int c) Verilen karakter noktalama karakteri ise doğru, diğer ğ tüm hallerde yanlış ş değer ğ döndürür. int toupper(int c) Verilen karakterin büyük harf karşılığını döndürür. İnt isprint(int c) Verilen karakter boşluk dahil yazılabiliyor ise doğru, diğer tüm hallerde yanlış değer döndürür. int isspace(int c) Verilen karakter boşluk (, \n, \r, \t, \v )ise doğru, diğer tüm hallerde yanlış değer döndürür. İnt isgraph(int c) Verilen karakter ekrana yazılabiliyor ise doğru, diğer tüm hallerde yanlış değer döndürür. Karakter fonksiyonları # include <ctype.h> printf( %c %s\n, 9, isdigit( 9 )? rakamdır : rakam değildir ); printf( %c %s\n, A, isdigit( A )? rakamdır : rakam değildir ); printf( %c %s\n, A, isalpha( A )? harftir : harf değildir ); printf( %c %s\n, +, isdigit( + )? harfdir : harf değildir ); printf( %c %s\n, A, isalnum( A )? harf, rakamdır : harf,rakam değildir ); printf( %c %s\n, *, isalnum( * )? harf,rakamdır : harf,rakam değildir ); printf( %c %s\n, F, isxdigit( F )? hex rakamdır : hex rakam değildir ); printf( %c %s\n, H, isxdigit( H )? hex rakamdır : hex rakam değildir ); printf( %c büyüğü=%c\n, F, toupper( F )); printf( %c küçüğü=%c\n, F, tolower( F )); Klavyeden girilen en fazla 25 karakter uzunluğundaki kelimenin büyük harflerini küçüğe, küçük harflerini büyüğe dönüştüren programı kodlayınız. Örnek çalışma(en fazla 25 karakter): AhMeT Dönüştürülmüş hali: ahmet ENF-102 Jeoloji 2010 8

Büyük harf küçük harf dönüştürme # include <ctype.h> char s[25]; int i; printf( kelimeyi giriniz ); scanf( %s,s); for(i=0;s[i]!= \0 ;i++) if(isupper(s[i])) s[i]=tolower(s[i]); else if (islower(s[i])) s[i]=toupper(s[i]); printf( dönüştürülmüş hali %s,s); ENF-102 Jeoloji 2010 9