ELN1002 BİLGİSAYAR PROGRAMLAMA 2

Benzer belgeler
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.

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

Giriş. ENF102 Jeoloji

Hazır Fonksiyonlar {\} /\ Suhap SAHIN Onur GÖK 1

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

ELN1001 BİLGİSAYAR PROGRAMLAMA I

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

Eln 1001 Bilgisayar Programlama I

C Konsol Giriş Çıkış Fonksiyonları

STRİNG DİZİLER(KATARLAR)

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

PROGRAMLAMAYA GİRİŞ DERS 2

Hafta 12 Karakter Tutan Diziler

Diziler & Karakter Katarı (String)

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8

ALGORİTMA VE PROGRAMLAMA I

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

ALGORİTMA VE PROGRAMLAMA I

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

Temel Giriş/Çıkış Fonksiyonları

BÖLÜM 1b: C++ PROGRAMLAMANIN YAPISI. C++, hard diskte TC, BIN, INCLUDE, LIB gibi alt dizinlere yüklenir.

Programlama Dilleri 1. Ders 4: Diziler

BÖLÜM 4: DEĞİŞKENLER, SABİTLER VE OPERATÖRLER

ALGORİTMA VE PROGRAMLAMA I

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

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

int printf (const char *format [, argument,...]);

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

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

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

MATLAB/Değişkene Değer Atamak

BİL1001 Bilgisayar Bilimlerine Giriş 1

C Programlama printf() Fonksiyonu

C Programlama Dilininin Basit Yapıları

2 ISINMA TURLARI - DERLEYİCİ VE DERLEME KAVRAMLARIYLA BİRLİKTE GCC DERLEYİCİSİNE BİR BAKIŞ

Fonksiyonlar (Altprogram)

C Programlama Ders Notları

scanf () Fonksiyonu Klavyeden veri okumak için kullanılır. Yapı olarak printf () fonksiyonu aynıdır. Kullanım biçimi:

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

C Programlama. Öğr. Grv. Mustafa AKSOĞAN. Akçadağ MYO

C Dosyalama. Öğr. Gör. M. Ozan AKI. Rev 1.0

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

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

Dr. Fatih AY Tel: fatihay@fatihay.net

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

Özyineleme (Recursion)

Ders 5: Temel Kütüphane Fonksiyonlar

/* Çember alanını hesaplar */

B02.6 Karar Verme, Eşitlik ve Bağıntı Operatörleri

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

ALGORİTMA VE PROGRAMLAMA II

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İ

Strings(Karakter Dizisi)

Internet Programming II

Temel Dosya İşlemleri. Kütük Organizasyonu 1

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

Diziler (Arrays) Çok Boyutlu Diziler

Internet Programming II

BÖLÜM 5: TEMEL GİRİŞ/ÇIKIŞ FONKSİYONLARI

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

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

NESNEYE YÖNELİK PROGRAMLAMA

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

BMT 101 Algoritma ve Programlama I 6. Hafta. Yük. Müh. Köksal Gündoğdu 1

String Sınıfını Yönetmek

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

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

C PROGRAMLAMA D İ L İ

ALGORİTMA VE PROGRAMLAMA II

Eln 1002 Bilgisayar Programlama II

Ders 4: Temel Giriş/Çıkış Fonksiyonları

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

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

Yrd. Doç. Dr. Caner ÖZCAN

HSancak Nesne Tabanlı Programlama I Ders Notları

C PROGRAMLAMA D İ L İ

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

Yrd. Doç. Dr. Caner ÖZCAN

DOSYA İŞLEMLERİ Programlama dilleri hafta -

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

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

C Programlama Dilinde Değişkenler

Yrd. Doç. Dr. Caner ÖZCAN

Biçem Belirteçleri (Format Specifiers)

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

Temel Giriş/Çıkış Fonksiyonları (Devam) Örnek :

Bigisayar Programlama

Dr. Fatih AY Tel: fatihay@fatihay.net

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

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

BİL102 - Bilgisayar Yazılımı II Özet Ders Notları

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

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

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

Pointer Kavramı. Veri Yapıları

Hafta 13 Fonksiyonlar

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

BİLDİRİM, TANIMLAMA, DEĞİŞMEZLER ve İŞLEVLER

Program Çözümleme. Aşağıdaki örneklerde printf() ve scanf() fonksiyonlarının işlevleri gösterilmektedir. Liste 1.1. Çözümleme:

ALGORİTMA VE PROGRAMLAMA II

Transkript:

ELN1002 BİLGİSAYAR PROGRAMLAMA 2 KARAKTERLER KARAKTER DİZİLERİ (STRING) Sunu Planı Karakterler ve Stringler Karakter İşleme Kütüphanesi String Dönüşüm Fonksiyonları Standart Giriş/Çıkış Kütüphane Fonksiyonları String Kütüphanesinin String İşleme Fonksiyonları String Kütüphanesinin Karşılaştırma Fonksiyonları String Kütüphanesinin Arama Fonksiyonları String Kütüphanesinin Bellek Fonksiyonları String Kütüphanesinin Diğer Fonksiyonları 1

Karakterler Karakterler, bilgisayar programlarının en temel yapı taşlarından birisidir. Arda arda anlamlı bir şekilde yerleştirilerek kelimeleri, kelimeler arda yerleştirilerek yazıları oluşturur. C programlama dizilerinde karakterler, karakter dizilerinin içinde tutulurlar. Karakter dizilerinin sonuna, genellikle NULL karakteri yerleştirilir. Karakter sabiti, tırnak içinde ifade edilen karakteri temsil eden bir tamsayı değeridir. z z nin ASCII değeri : 122 \n ASCII değeri : 10 String C Programlama dilinde string, \0 NULL karakteri ile sonlanan karakter dizilerine verilen isimdir. String, tek bir birim olarak düşünülebilecek bir karakter dizisidir. String, harfleri, rakamları ve özel karakterleri içerebilir. String sabitleri, C programlama dilinde çift tırnak ile yazılır: Elektronik Muhendisligi Oda No : 432 Gorukle, Bursa (224) 294 20 01 2

String String e string in ilk karakterini gösteren bir işaretçi ile erişilebilir. String in değeri, ilk karakterinin adresidir. Bundan dolayı, C programlama dilinde, string i bir işaretçi olarak görmek doğru olacaktır, string in ilk karakterine işaret eden bir işaretçidir. Bu anlamda, string bir dizi gibidir, diziler de ilk elemanlarının değerlerini gösterir. Bir karakter dizisi veya char* tipi, tanımlamasında bir string i ilk değer olarak alabilir. m char mavi[] = mavi ; a const char *mavi_ptr = mavi v char mavi[] = { m, a, v, i, \0 } i \0 String \0 karakterini içermeyen string leri ekrana yazdırmaya çalışmak bir hatadır. Bir karakter dizisine bellekte, \0 karakterini içermesini engelleyecek kadar az yer ayrılması bir hatadır. char yazi[20]; scanf( %s, yazi); yazi değişkeni bir dizi olduğu için & opeartörüne ihtiyaç yoktur. scanf boşluk, tab, \n veya EOF karakterleriyle karşılaşana kadar tüm karakterleri okur. Örneğimizde, 19 karakterden daha fazla karakter sayısına sahip bir giriş, programın hata üretmesine sebep olur. Bunu aşmanın yolu, %19s dönüşüm belirtecinin kullanılmasıdır. Bu yöntemle, ayrılan bellek bölgesinin taşarak takip eden alanlara bilgi yazılması engellenmiş olur. 3

Karakter İşleme Kütüphanesi Karakter işleme kütüphanesi, karakter verisi üzerinde faydalı bir takım testler veya işlemler gerçekleştirebileceğimiz çeşitli fonksiyonlar içerir. Her fonksiyon giriş olarak tamsayı ile temsil edilen bir karakter veya EOF alır. Daha önce de belirtildiği gibi, karakterler çoğu zaman bir tamsayı gibi işlenir, çünkü C de karakter genellikle 1 baytlık bir tamsayıdır. Standart karakter işleme kütüphanesi, ctype.h olarak adlandırılmıştır Karakter İşleme Kütüphanesi int isdigit(int c) int isalpha(int c) int isalnum(int c) int isxdigit(int c) int islower(int c) int isupper(int c) int isspace(int c) c karakteri bir sayı ise doğru (1) değil ise yanlış (0) değerini döndürür. c karakteri bir harf ise doğru (1) değil ise yanlış (0) değerini döndürür. c karakteri bir harf veya sayı ise doğru (1) değil ise yanlış (0) değerini döndürür. c karakteri bir hexadesimal (onaltılık sayı) ise doğru (1) değil ise yanlış (0) değerini döndürür. c karakteri bir küçük harf ise doğru (1) değil ise yanlış (0) değerini döndürür. c karakteri bir büyük harf ise doğru (1) değil ise yanlış (0) değerini döndürür. c karakteri eğer beyaz boşluk karakteri (, \n, \f, \r, \t, \v ) ise doğru (1) değil ise yanlış (0) değerini döndürür. 4

Karakter İşleme Kütüphanesi int iscntrl(int c) int ispunct(int c) int isprint(int c) int tolowerint c) int toupper(int c) c karakteri kontrol karakteri ise doğru (1) değil ise yanlış (0) değerini döndürür. c karakteri harf, sayı veya boşluktan başka herhangi bir yazılabilir karakter ise doğru (1) değil ise yanlış (0) değerini döndürür. c karakteri karakterini de içeren yazılabilir bir karakter ise doğru (1) değil ise yanlış (0) değerini döndürür. Eğer c karakteri büyük harf ise, bu karakteri küçük harfe dönüştürür, aksi takdirde işlem yapmaz. Eğer c karakteri küçük harf ise, bu karakteri büyük harfe dönüştürür, aksi takdirde işlem yapmaz. Karakter Tipleri Beyaz boşluk(whitespace) karakterleri:, \f, \n, \r, \t, \v isspace Kontrol Karakterleri: \t, \v, \f, \a, \b, \r, \n iscntrl Boşluk, sayı veya harfin dışındaki yazılabilir karakterler: $, #, (, ), [, ], {, }, ;, :, % ispunct Ekrana basılabilen tüm karakterler isprint (boşluk dahil) Ekrana basılabilen tüm karakterler isgraph (boşluk hariç) 5

Örnek String Dönüşüm Fonksiyonları Bu bölümde stdlib.h kütüphanesinden gelen fonksiyonlar üzerinden durulacaktır. Bu fonksiyonlar stringleri tamsayı(integer) veya kayar noktalı(floating point) sayı değerlerine dönüştürmektedir. 6

String Dönüşüm Kütüphanesi double atof(const char *nptr); int atoi(const char *nptr); int atol(const char *nptr); double strtod(const char *nptr, char **endptr); long strtol(const char *nptr, char **endptr, int base); unsigned long strtoul(const char *nptr, char **endptr, int base); nptr string ini double tipine dönüştürür. nptr stringini int tipine dönüştürür. nptr stringini long int tipine dönüştürür. nptr string ini double tipine dönüştürür. nptr stringini long tipine dönüştürür. nptr stringini unsigned long tipine dönüştürür. atof 7

atoi atol 8

strtod strtol 9

Standart G/Ç Kütüphanesi stdio.h int getchar(void); char *gets(char *s); int putchar(int c); int puts(const char *s) Stdin den gelen bir sonraki karakteri alır ve bir tamsayı olarak döndürür. EOF veya \n ile karşılaşana kadar stdin den gelen karakterler s dizisinin içine alır. Diziye bir \0 karakteri eklenir. s içine yazılan diziyi döndürür. s diziyi tutacak kadar büyük değilse hata oluşacaktır. c de tutulan karakteri ekrana yazdırır ve tamsayı değerini döndürür. s stringini ve onu takiben \n karakterini yazdırır. Başarılı olursa 0 olmayan bir tamsayı döndürür, tersi durumunda EOF döndürür. Standart G/Ç Kütüphanesi stdio.h int sprintf(char *s, const char *format, ); int sscanf(char *s, const char *format, ); printf le özdeştir fakat, çıkış ekrana yazdırılmak yerine bir dizinin içine yazdırılır. Başarılı olursa s içine yazdırılan karakterlerin sayısını, başarısız olursa EOF döndürür. scanf le özdeştir fakat, giriş klavye yerine bir s dizisinden okunur. Başarılı olursa fonksiyon tarafından okunan karakterlerin sayısını, başarısız olursa EOF döndürür. 10

sprintf sscanf 11

<string.h> kütüphanesi string işleme komutları char *strcopy(char *s1, const char *s2) char *strncopy(char *s1, const char *s2, size_t n) char *strcat(char *s1, const char *s2) char *strncat(char *s1, const char *s2, size_t n) s2 string ini s1 dizisine kopyalar. s1 in değeri döndürülür. s2 stringinin en çok n karakterini s1 dizisine kopyalar. s1 değerini döndürür. s1 dizisine s2 stringini ekler. s1 dizisinin \0 karakterinin yerine s2 stringinin ilk karakteri döndürülür. s1 dizisinin değeri döndürülür. s1 dizisine s2 stringinin en çok n karakterini ekler. s1 dizisinin \0 karakterinin yerine s2 stringinin ilk karakteri döndürülür. s1 dizisinin değeri döndürülür. strcopy ve strncopy 12

strcat ve strncat Karşılaştırma Fonksiyonları int strcmp(const char *s1, const char *s2); int strncmp(const char *s1, const char *s2, size_t n) s1 stringini s2 string iyle karşılaştırır. Dönüş değeri: = 0 eşitlik varsa > 0 s1 s2 den büyükse < 0 s1 s2 den küçükse s1 stringinin n karakterini s2 string iyle karşılaştırır. Dönüş değeri: = 0 eşitlik varsa > 0 s1 s2 den büyükse < 0 s1 s2 den küçükse 13

strcmp ve strncmp Arama Fonksiyonları char *strchar(const char *s, int c); size_t strcspn(const char *s1, const char *s2); size_t strspn(const char *s1, const char *s2); char *strpbrk(const char *s1, const char *s2); c karakterinin s string i içindeki ilk kullanımını bulur. Eğer c bulunduysa, c nin s içindeki yerini işaret eden bir işaretçi döndürür, değilse NULL işaretçi döndürülür. s1 dizisi içinde s2 dizisinden herhangi bir elemanı içermeyen başlangıç parçasının uzunluğunu verir. s1 dizisi içinde s2 dizisindeki elemanların kaç kere kullanıldığınının sayısını verir. s2 stringinden herhangi bir karakterin s1 stringi içindeki ilk kullanımını bulur. s2 stringinden karakterle s1 stringi içinde ilk karşılaşıldığında, s1 içindeki karakterin yerini işaret eden bir işaretçi döndürülür. Aksi takdirde NULL işaretçi döndürülür. 14

strchr strcspn 15

strspn strpbrk 16

Arama Fonksiyonları char *strrchar(const char *s, int c); char *strstr(const char *s1, const char *s2); char *strtok(char *s1, const char *s2); c karakterinin s string i içindeki son kullanımını bulur. Eğer c bulunduysa, c nin s içindeki yerini işaret eden bir işaretçi döndürür, değilse NULL işaretçi döndürülür. s2 stringinin s1 stringi içindeki ilk kullanımını bulur. Eğer bulunduysa s1 içindeki string i işaret eden bir işaretçi döndürülür. Aksi takdirde NULL işaretçi döndürülür. strtok fonksiyona yapılan bir dizi çağrı, s1 stringini s2 stringinde içerilen karakterlerle parçalara böler. İlk çağrı s1 i ilk argüman olarak içerir, ardından gelen çağrılar aynı stringi ilk argümanı olarak NULL içerecek şekilde parçalamaya devam eder. Her çağrıyla geçerli parçaya bir işaretçi döndürülür. Eğer yeni bir parça oluşturulamıyorsa, NULL döndürülür. strrchar 17

strstr strtok 18

Bellek Fonksiyonları void *memcpy(void *s1, const void *s2, size_t n); void *memmove(void *s1, const void *s2, size_t n); int memcmp(const void *s1, const void *s2, size_t n); s2 tarafından gösterilen n karakterlik veri bloğunu s1 tarafından işaret edilen veri bloğuna kopyalar. Sonuç veri bloğuna bir işaretçi döndürür. s2 tarafından gösterilen n karakterlik veri bloğunu s1 tarafından işaret edilen veri bloğuna kopyalar. Kopyalama işlemi, veri bloğunun önce s2 işaretçisinin gösterdiği yerden geçici bir diziye daha sonra geçici diziden s1 işaretçisinin gösterdiği yere kopyalanması şeklinde gerçekleştirilir. Sonuç veri bloğuna bir işaretçi döndürür. s1 ve s2 işaretçileri tarafından işaret edilen veri bloklarının ilk n karakterini karşılaştırır. Dönüş değeri: = 0 eşitlik varsa > 0 s1 in gösterdiği s2 nin gösterdiğinden büyükse < 0 s1 in gösterdiği s2 nin gösterdiğinden küçükse memcpy 19

memmove memcmp 20

Bellek Fonksiyonları void *memchr(const void *s, int c, size_t n); void *memset(void *s, int c, size_t n); s işaretçisiyle işaret edilen veri bloğunun ilk n karakteri içinde c karakterinin(unsigned char a dönüştürülmüş) ilk kullanımını bulur. Eğer c bulunursa, veri bloğu içinde c nin yerini gösteren bir işaretçi döndürülür. Aksi takdirde, NULL döndürülür. s tarafından işaret edilen veri bloğunun ilk n karakterinin yerine c karakterini(unsigned char a dönüştürülmüş) yazar. Sonuca işaret eden bir işaretçi döndürülür. memchr 21

memset Diğer Fonksiyonlar size_t strlen(const char *s) s stringinin uzunluğunu bulur. NULL karakterinden önceki tüm karakterlerin sayısı döndürülür. 22

strlen 23