karakter dizileri

25
DİZGELER KARAKTER DİZİLERİ programlama dilleri 1 - 4. hafta - Araş. Gör. Nesibe YALÇIN BİLECİK ŞEYH EDEBALİ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

Upload: nesibe-yalcin

Post on 20-Mar-2017

26 views

Category:

Education


0 download

TRANSCRIPT

DİZGELER – KARAKTER DİZİLERİ programlama dilleri 1

- 4. hafta -

Araş. Gör. Nesibe YALÇIN

BİLECİK ŞEYH EDEBALİ ÜNİVERSİTESİ

MÜHENDİSLİK FAKÜLTESİ

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

2

Karakter Dizileri

― char tipli karakterlerden oluşan ve en sonuna ‘\0’ (boş, NULL) karakteri eklenmiş dizilerdir.

― string, katar, dizge, dizgi de denir.

― Karakterler ‘?’, ‘1’, ‘t’, ‘+’ şeklinde tek tırnak içerisinde yazılır, dizgeler “Bilecik” şeklinde çift tırnak içerisinde yazılırlar.

― “Bilecik” = {‘B’, ‘i’, ‘l’, ‘e’, ‘c’, ‘i’, ‘k’, ‘\0’}

3

Değer Atama

char a[] =“C dili”; Derleyici, karakter sayısına göre otomatik olarak dizi boyutunu ayarlıyor.

0 1 2 3 4 5 6

C d i l i \0

Adres Veri

0x00

0x01 67 ‘C’

0x02 32 ‘ ’

0x03 100 ‘d’

0x04 105 ‘i’

0x05 108 ‘l’

0x06 105 ‘i’

0x07 0 ‘\0’

0x08

0x09

0x10

0x14

De

rley

ici

4

Değer Atama

char a[]={'C',' ','d','i','l','i','\0'}; char x[] =“programlama”; char x[]; //hatalı NOT: Fonksiyonlarda girdi olarak kullanılabilir. char x[25]; x[]=“programlama”; //hatalı x=“programlama”; //hatalı

• Çok boyutlu dizilerde; • char isim[5][8] = {“Ayse”, “Hamdi”, “Burak”, “Leyla”, “Ahmet”};

• char sehir[][10] = {“Ankara”, “Sakarya”, “Yozgat”, “Konya”};

• Stringlerde doğrudan kullanılmayan karakterler:

– Çift tırnak karakterini ekrana yaz: \”

– Tek tırnak karakterini ekrana yaz: \’

– Ters bölü karakterini ekrana yaz: \\

– Yüzde karakterini ekrana yaz: %%

5

Değer Atama

6

Karakter Dizileri

#include <stdio.h>

#include <conio.h>

void main() {

char a[]="C dili";

int i=0;

while(a[i]!='\0'){

printf("%c",a[i]);

i++; }

getch (); }

#include <stdio.h>

#include <conio.h>

void main() {

char a[]="C dili";

for(int i=0; i<6;i++)

printf("%c",a[i]);

getch (); }

#include <stdio.h>

#include <conio.h>

void main() {

char a[]="C dili";

printf("%s",a);

getch (); }

7

Karakter Dizileri

#include <stdio.h>

#include <conio.h>

void main() {

char a[]="C dili";

printf("%s\n",a);

a[3]='\0';

printf("%s",a);

getch (); }

8

Karakter Dizileri

#include <stdio.h>

#include <conio.h>

void main() {

char a[]="C dili";

printf("%s\n",a);

a[6]=‘m';

printf("%s",a);

getch (); }

• puts(char str []): Ekrana stringi ekrana yazdırdıktan sonra imleci bir sonraki satıra geçirir.

#include <stdio.h>

#include <conio.h>

void main() {

char bolum[10]="bilgisayar";

printf("%s",bolum);

// puts(bolum);

getch (); }

9

String Fonksiyonları

• gets(char str[]): Girdi olarak string almak için kullanılır, stringin sonuna ‘\0’, null karakterini otomatik olarak ekler.

#include <stdio.h>

#include <conio.h>

void main() {

char bolum[10];

scanf("%s",bolum);

// gets(bolum);

getch (); }

10

String Fonksiyonları

• string.h kütüphanesinde yer alanlar:

• strlen(char str[]): Bir string (dizge) içindeki karakter sayısını bulmak için kullanılır.

int adet=0;

while(str[adet]!=‘\0’)

adet++;

ya da

adet=strlen(str);

11

String Fonksiyonları

• strcpy(char str1[],char str2[]): str2 stringini str1 stringine kopyalama işlemini yapar.

char ad[10];

strcpy(ad,"elanur");

• strncpy(char str1[],char str2[],int n): str2 stringindeki ilk n adet karakteri str1 stringine kopyalama işlemini yapar.

12

String Fonksiyonları

• strcat(char str1[],char str2[]): str1 stringinin sonuna str2 stringinin eklenmesini sağlar.

char str1[10]= “sınıf”;

char str2[10]= “C112”;

strcat(str1, str2);

str1’ in yeni hali “sınıf C112”

• strncat(char str1[],char str2[],int n): str1 stringinin sonuna str2 stringinin ilk n karakterinin eklenmesini sağlar.

13

String Fonksiyonları

• strcmp(char str1[],char str2[]): str1 ve str2 stringlerini karşılaştırır: Eşit ise 0, str1 stringi sözlükte daha önce geliyorsa -1, str2 stringi daha önce geliyorsa 1 değerini döndürür. – strcmp(“Ankara”, “Ankara”) 0 – strcmp(“Ankara”, “Antalya”) -1 – strcmp(“Antalya”, “Ankara”) 1

• strncmp(char str1[],char str2[],int n): str1 ve str2

stringlerinin ilk n karakterlerinin karşılaştırılmasını sağlar.

14

String Fonksiyonları

• strrev(char str1[]): str1 stringini ters çevirir.

• strstr(char str1[],char str2[]): str1 stringi içinde str2 stringini arar, ilk karşılaştığı yeri verir.

15

String Fonksiyonları

#include <stdio.h>

#include <conio.h>

#include <string.h>

void main() {

char girdi[20];

puts("Bir string girin: ");

gets(girdi);

printf("%s\n",strstr(girdi,"al"));

getch (); }

• strchr(char str1[],char x): str1 stringi içinde x karakterini arar, ilk karşılaştığı yeri verir.

16

String Fonksiyonları

#include <stdio.h>

#include <conio.h>

#include <string.h>

void main()

{

char girdi[20];

puts("Bir string girin: ");

gets(girdi);

printf("%s\n",strchr(girdi,'a'));

getch ();

}

• strlwr(char str1 []): str1 stringindeki büyük harfleri küçük harflere çevirir.

• strupr(char str1 []): str1 stringindeki küçük harfleri büyük harflere çevirir.

17

String Fonksiyonları

#include <stdio.h>

#include <conio.h>

#include <string.h>

void main() {

char ad[]="NeSiBe YaLCiN";

strupr(ad);

printf("%s\n",ad);

strlwr(ad);

printf("%s",ad);

getch (); }

• ctype.h kütüphanesinde yer alanlar:

• isalnum(char x): Girilen x karakterin alfabetik ya da nümerik olup olmadığını sorgular.

18

String Fonksiyonları

#include <stdio.h>

#include <conio.h>

#include <ctype.h>

void main() {

char x;

puts("Bir karakter girin: ");

scanf("%c",&x);

if(isalnum(x))

printf("Alfabetik/Numerik");

else

printf("Alfabetik/Numerik degil");

getch (); }

• ctype.h kütüphanesinde yer alanlar:

• isalpha(char x): x bir harf ise sıfırdan farklı, diğer durumlarda sıfır değerini döndürür.

• isdigit(char x): x bir sayı ise sıfırdan farklı, diğer durumlarda sıfır değerini döndürür.

• isspace(char x): x boşluk, yeni satır veya tab karakteri gibi bir karakterse sıfırdan farklı, diğer durumlarda sıfır değerini döndürür.

19

String Fonksiyonları

• isupper(char x): x büyük bir harf ise sıfırdan farklı, diğer durumlarda sıfır değerini döndürür.

• islower(char x): x küçük bir harf ise sıfırdan farklı, diğer durumlarda sıfır değerini döndürür.

• sizeof(…. a): Donanım sisteminin a değişkenine ya da veri türüne ayırdığı bellek büyüklüğünü verir.

20

String Fonksiyonları

• toupper(char x): x’ in değerinin büyük harf karşılığını verir.

• tolower(char x): x’ in değerinin küçük harf karşılığını verir.

21

String Fonksiyonları

#include <stdio.h>

#include <conio.h>

#include <ctype.h>

void main() {

char x;

puts("Bir karakter girin: ");

scanf("%c",&x);

printf("%c",toupper(x));

printf("%c",tolower(x));

getch (); }

22

Uygulama Örnekleri

// #include <string.h>

#include <stdio.h>

#include <conio.h>

void main() {

char str[20]="Muhendislik";

//for(int i=0;i<strlen(str);i++)

for(int i=0;str[i]!='\0';i++){

for(int j=0;j<i+1;j++)

printf("%c",str[j]);

printf("\n"); }

getch(); }

23

Uygulama Örnekleri

#include <stdio.h>

#include <conio.h>

void main() {

char girdi[20];

int i=0,sayac=0;

puts("Bir string girin: ");

gets(girdi);

while(girdi[i] != '\0'){

if( girdi[i] == 'a')

sayac++;

i++; }

printf("'a' karakteri sayisi = %d\n",sayac);

printf("Toplam karakteri sayisi = %d\n",i);

printf("Ayrilan bellek buyuklugu %d byte",sizeof(girdi));

getch (); }

24

Uygulama Örnekleri

#include <stdio.h>

#include <conio.h>

#include <string.h>

void main() {

char girdi[20];

int sayac=0;

puts("Bir string girin: ");

do{

gets(girdi);

sayac++;

}while( strcmp(girdi, "Ankara*06")!=0);

printf("%d seferde bildiniz\n",sayac);

getch (); }

• Kullanıcı tarafından girilen bir karakter dizisi içindeki boşluk karakterini çıkaran programı C dilinde yazınız.

• strstr fonksiyonu ile aynı görevi yapan void str_arama(char a[],char b[]) isimli kendi fonksiyonunu yazınız.

• Kullanıcı tarafından girilen bir stringin Palindrom olup olmadığını bulan fonksiyonu yazınız. 2141412, ata, kazak, Ey Edip Adanada pide ye …

25

Uygulama Örnekleri