Giriş. ENF102 Jeoloji

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

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)

C PROGRAMLAMA D İ L İ

2. Dereceden Denklemin Köklerini Bulan Program

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

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

BİL1001 Bilgisayar Bilimlerine Giriş 1

PROGRAMLAMAYA GİRİŞ DERS 2

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

ALGORİTMA VE PROGRAMLAMA I

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

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

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

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

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

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8

Programlama Dilleri 1. Ders 4: Diziler

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

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

HSancak Nesne Tabanlı Programlama I Ders Notları

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

ALGORİTMA VE PROGRAMLAMA I

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

C Konsol Giriş Çıkış Fonksiyonları

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

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

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

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

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA I

STRİNG DİZİLER(KATARLAR)

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

BLM 111 ALGORİTMA VE PROGRAMLAMA I

C Programlama Dilininin Basit Yapıları

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

Hafta 12 Karakter Tutan Diziler

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

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

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

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

C Programlama Dilinde Değişkenler

Dr. Fatih AY Tel: fatihay@fatihay.net

Hafta 13 Fonksiyonlar

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

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

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

Temel Giriş/Çıkış Fonksiyonları

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

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İ

Fonksiyonlar (Altprogram)

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

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

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

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

C ile Uygulamalar 2 - Cevaplar

HSancak Nesne Tabanlı Programlama I Ders Notları

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

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

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

ALGORİTMA VE PROGRAMLAMA II

BİLG Dr. Mustafa T. Babagil 1

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

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

C PROGRAMLAMA D İ L İ

ELN1001 BİLGİSAYAR PROGRAMLAMA I

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

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

Genel Programlama II

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

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

Eln 1001 Bilgisayar Programlama I

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

Göstericiler (Pointers)

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

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

EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA

Program Akış Kontrol Yapıları

JAVADA DİZİ İŞLEMLERİ

YAPILAR (STRUCTURES)

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

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

Telefon Rehberi Uygulaması

Diziler & Karakter Katarı (String)

Nesne Tabanlı Programlama

Pointers (İşaretçiler)

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

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

şeklinde tanımlanmıştır. O halde, dosyaları daha önceki bilgilerimizi kullanarak FILE *Dosya1, *Dosya2;

Diziler İndisli Değişkenler

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ı

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

Nesne Yönelimli Programlama

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

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 8

Transkript:

DİZİLER Arrays

Giriş 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.

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ı];

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

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 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 Dizi

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; /*dizinin 2 nolu elemanına 4 nolu elemanının 3 fazlasını ata.*/ for(i=0;i<6;i++) a[i] =0; /*0'dan 6'ya kadar */ /* dizinin elemanlarına 0 değerini ata.*/

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.

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ı, 5 ayrı değişkene ihtiyaç duyulacaktı. Çünkü girilen her bir değere klavyeden girme 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:

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ı)

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.

Bir dizgi iki şekilde tanımlanarak ilk değer ataması yapılabilir: 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

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*/ # include <stdio.h> void main() { 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 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*/ # include <stdio.h> void main() { 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*/ # include <stdio.h> void main() { 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]); }

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*/ # include <stdio.h> void main() { char ad[5][20]; int i,j; for(i=0;i<5;i++) {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ı

Karakter Fonksiyonları 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.

Dizgi Kütüphaneleri 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 Fonksiyon prototipi int isupper(int c) int tolower(int c) Açıklaması Verilen karakter büyük harf ise doğru, diğer tüm hallerde yanlış değer döndürür. Verilen karakterin küçük harf karşılığını döndürür. int toupper(int c) Verilen karakterin büyük harf karşılığını 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.

Dizgi Kütüphaneleri Fonksiyon prototipi İnt iscntrl(int c) İnt ispunct(int c) İnt isprint(int c) İnt isgraph(int c) Açıklaması Verilen karakter kontrol karakteri ise doğru, diğer tüm hallerde yanlış değer döndürür. Verilen karakter noktalama karakteri ise doğru, diğer tüm hallerde yanlış değer döndürür. Verilen karakter boşluk dahil yazılabiliyor ise doğru, diğer tüm hallerde yanlış değer döndürür. Verilen karakter ekrana yazılabiliyor ise doğru, diğer tüm hallerde yanlış değer döndürür.

Karakter fonksiyonları # include <stdio.h> # include <ctype.h> void main() { 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

Büyük harf küçük harf dönüştürme # include <stdio.h> # include <ctype.h> void main() { 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); }