tanımları yapabilmeniz gerekmektedir .

Slides:



Advertisements
Benzer bir sunumlar
STRİNG FONKSİYONLARI.
Advertisements

Diziler.
Bölüm 8 Diziler Dizi Tanımı Dizi Elemanlarına Değer Atama
Göstericiler (Pointers)
switch - case Yapısı Döngü Yapıları
String Diziler(Katarlar)
C Programlama Diline Giriş
STRING FONKSİYONLARI Tip Tanımları: char a; char ad[16]; char *ad;
Diziler.
Bölüm 9 Dizgiler Dizgi Tanımı Dizgi Girdi İşlemleri
Bölüm 9 Dizgiler Dizgi Tanımı Dizgi Girdi İşlemleri
String Kütüphanesindeki Arama Fonksiyonları
Diziler(Arrays).
Soru1: Dışardan "%s" format belirteci kullanılarak girilecek 20 elemanlı bir dizinin elemanlarının kaç tanesinin rakam, kaç tanesinin harf ve kaç tanesinin.
Soru1: Kullanıcıdan iki tam sayı girmesini isteyen ve daha sonra büyük olan sayı ile beraber ‘en büyüktür’ ifadesi yazan, ancak sayılar birbirine eşitse.
While Döngüsü Tekrarlama deyimidir. Bir küme ya da deyim while kullanılarak bir çok kez yinelenebilir. Yinelenmesi için koşul sınaması döngüye girilmeden.
Diziler Adres Kavramı Nesnelerin Adresleri sizeof Operatörü
Diziler Dizi Tanımı Dizi Elemanlarına Değer Atama Diziler ve Göstergeler 2-Boyutlu Diziler.
Algoritma & Programlama
C PROGRAMLAMA DİZİLER (ARRAYS).
Algoritma & Programlama
Diziler (Arrays).
Diziler. Dizi Tanımı Dizi Elemanlarına Değer Atama Diziler ve Göstergeler 2-Boyutlu Diziler.
Bilgisayar Programlama. Tek bir değişken tanımlamak için aşağıdaki gibi bir yazım yeterlidir. int i; Hatırlanacağı gibi bu tarz bir tanımlamada.
PROGRAM DENETİM DEYİMLERİ
DİZİLER Arrays.
STRING‘LER Karakter Kütüphanesi Fonksiyonları
Dizgiler Dizgi Tanımı Dizgi Girdi İşlemleri Dizgi Çıktı İşlemleri Dizgi Fonksiyonları Karakter Fonksiyonları Gösterge Dizgileri.
MATLAB’ de Programlama
DÖNGÜLER(do-while deyimi)
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Algoritmalar ve Programlama I Ders 8:DİZİ (VEKTÖR) KAVRAMI
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
1 7. HAFTA. 2 Referanslar  Referanslar adres temsilcisidir  İşaretçilerin görevlerini kısmi olarak yapabilirler  Değişken değildirler.  Bellekte yer.
Döngü Komutları. for deyimi bir alt limitten, bir üst limite kadar programın belirli bir parçasını tekrar eder. for deyiminde sayaç artış oranı da verilmelidir.
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Fonksiyonlar.
String Diziler(Katarlar)
C Programlamada, benzer tipte tanımlaman değişkenleri kontrol etmede bize en çok yardım eden dostlarımız dizilerdir. Örneğin: 100 Öğrencinin bilgilerini.
BİLGİSAYAR programlama II
BİLGİSAYAR programlama II
Sıralama. Sıralama, bir dizideki sayısal elemanların küçükten büyüğe veya büyükten küçüğe, sayısal olmayan bir dizideki elemanların ise A’ dan Z’ ye.
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
BİLGİSAYAR PROGRAMLAMA Ders 6: Diziler Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği.
Bölüm 8 Diziler Dizi Tanımı Dizi Elemanlarına Değer Atama Diziler ve Göstergeler 2-Boyutlu Diziler.
Bölüm 3 Atama ve Girdi/Çıktı Komutları
Bilgisayar Programlama BIL 107
Fonksiyonlar ve Diziler
Printf Bu komut ekrana çıktı veren komuttur. Pascalda kullanılan writeln komutuyla aynı anlamdadır.
BİLGİSAYAR PROGRAMLAMA Ders 6: Diziler
C Programlama Dili Bilgisayar Mühendisliği.
BİLGİSAYAR PROGRAMLAMA Ders 10: Dosyalama İşlemleri
BİLGİSAYAR PROGRAMLAMA Ders 6: Diziler
DÖNGÜLER(do-while deyimi)
BÖLÜM 5 POINTER’LER (İŞARETÇİLER)
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
C PROGRAMLAMADA AKIŞ KONTROLÜ
Bölüm 8 Diziler Dizi Tanımı Dizi Elemanlarına Değer Atama
Bölüm 9 Dizgiler Dizgi Tanımı Dizgi Girdi İşlemleri
Bölüm 2 C Dilinin Temelleri
Bölüm 8 Diziler Dizi Tanımı Dizi Elemanlarına Değer Atama
PROGRAM KONTROL KOMUTLARI 1. if koşulu 2. if else koşulu
YAPISAL PROGRAMLAMA Hafta-7
Bölüm 3 Atama ve Girdi/Çıktı Komutları
?: KARŞILAŞTIRMA OPERATÖRÜ
Bölüm 2 C Dilinin Temelleri
Aritmetik Operatörler
Diziler(Arrays).
Sunum transkripti:

tanımları yapabilmeniz gerekmektedir . BÖLÜM 3 DİZİLER VE STRİNGLER Bazen basit değişkenler bir takım sorunların çözülmesi için yeterli olmazlar. Örneğin iki matrisin toplamını bulabilecek bir program basit değişkenler ile yazılamaz. Ya da bir dizi değer üzerinde sıralama yapabilecek program, bir dizi sayı içerisinde istenilen değeri bulabilecek program yine basit değişkenler ile yazılamaz. Bu tip programlar için hatta bir çok benzeri program için dizi veya matris tanımları yapabilmeniz gerekmektedir .

Dizi, aynı tipte verilere tek bir isimle erişebilmek için kullanılan bir kümedir. Bir dizinin bütün elemanları bellekte ardışık olarak saklanır. Dolayısı ile adres ardışık olarak artırıldığında dizinin elemanlarına sırasıyla ulaşılabilir. Karakter tipli değişkenlerden oluşan diziler genellikle string olarak adlandırılır. Diziler bir boyutlu veya daha çok boyutlu olabilirler. Dizilerin indis değerleri sıfırdan başlayan pozitif tam sayılardır. Dizilerde dizi boyutu köşeli parantez [ ] içinde belirtilir. degisken_türü ad[eleman sayısı][ikinci_boyut]...; int x[20]; Böyle bir bildirimle derleyici, 20 tane tam sayının saklanacağı bellek alanı ayırır ve bu alanın adresini dizi adına atar. x x[0] x[1] … x[19]

float y[2] [3] ; Çift boyutlu ( 2 satır 3 sütun ) float içerikli dizi int a[3] = {3,5,7}; tek boyutlu diziye ilk değer atama float b[2] [3] = {{ 5.1,0.7,-4.2}, {-3.0,6.4,12.5}}; veya, float b[2] [3] = { 5.1,0.7,-4.2, -3.0,6.4,12.5}; çift boyutlu diziye ilk değer atama

Örnek # include <stdio.h> int sayi [5] ={10,12,9,5,0}; int i ; main () { for ( i =0 ; i<5 ; i++ ) printf (“%d ”,sayi [i] ) ; } #include <stdio.h> #include <conio.h> #include <iostream.h> main() { int i,a[5]; for(i=0;i<5;i++)scanf("%d", &a[i]); system("CLS"); for(i=0;i<5;i++)printf ("a[%d]=%d\n",i,a[i]); getche(); }

#include <stdio.h> #include <conio.h> main() { int i,j; int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};//int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; for(i=0;i<3;i++){ for(j=0;j<4;j++) printf("a[%d][%d]=%d ",i,j,a[i][j]);printf("\n"); } getche();} #include <stdio.h> #include <conio.h> main() { int i,j,a[3][4]; for(i=0;i<3;i++){ for(j=0;j<4;j++)scanf("%d",&a[i][j]); } for(j=0;j<4;j++)printf("a[%d][%d]=%d ",i,j,a[i][j]);printf("\n"); getch();

Örnek # include <stdio.h> # include <conio.h> int i, a[2] [10] ; main () { clrscr () ; for ( i=0 ; i<10 ; i++ ){ printf (“%d .sayıyı gir= “, i+1 ) ; scanf (“%d “, &a[0] [i] ) ; a[1] [i] = a[0] [i] * a[0] [i] ; } for ( i=0 ; i<10 ; i++) printf ( “\n %d. sayının karesi = % d”, i+1,a[1] [i] ); getche () ;

Örnek Klavyeden girilen sayıyı ikilik sisteme çeviren program. # include <stdio.h> # include <conio.h> main () { int a, i=0 ,b [10]; clrscr () ; printf (“Bir sayı giriniz”); scanf("%d“,&a ); don1 : b[i]=a%2; a=a/2 ; i++; if (a>=2) goto don1 ; printf ("%d\n “,a); while (i) { i--; printf("%d”,b[i]); } // veya for(c=i-1;c>1;c--) printf (" %d”, b[c]) ; getche () ; }

Örnek Bir sayı dizisinin elemanlarının toplamı #include <stdio.h> #include <math.h> #include <conio.h> int i,n, a[20],toplam; main(){ printf(“dizi boyutunu giriniz 1-20 arası:”);scanf(“%d”,&n); toplam=0; for( i=0; i<n ; i++) { printf(“%d dizi elemanini gir:”,i+1); scanf(“%d”, &a[i] ); toplam=toplam+a[i]; } printf(“toplam=%d”,toplam); getch();

Örnek Bir sayı dizisinin en büyük elemanını bulma #include <stdio.h> #include <conio.h> #include <math.h> int i,eb,m, a[10]; main(){ for(i=0; i<10;i++) { printf("%d elemanı giriniz:", i+1); scanf(“%d”, &a[i] ); } eb=a[0]; for( i=1; i<10 ; i++) if(eb<a[i]) eb=a[i]; printf("\n En Büyük Sayı=%d",eb); getch();

Örnek Sıfırdan farklı NxN’lik bir matrisin esas köşegeni üzerindeki elamanları 1 (bir) yapma # include<stdio.h> # include<math.h> # include<conio.h> int i,j,n; float a[10] [10],b[10]; main( ) { printf ("n sayisini giriniz.."); scanf ("%d\n",&n); for(i=0;i<n;i++) { for(j=0;j<n;j++) { scanf("\n%f",&a[i][j]);} } b[i]=a[i][i]; for(j=0;j<n;j++) { a[i][j]= a[i][j]/ b[i]; printf (“%f\t”, a[i][j]);} printf(“\n”); } getche(); }

Örnek mxn boyutlu bir matrisin en büyük elemanını bulma # include<stdio.h> # include<math.h> # include<conio.h> int i,j,n,m,eb; int a[20][20]; main ( ){ printf(“m ve n sayisini giriniz..” ); scanf (“%d %d”,&m,&n); for(i=0;i<m;i++) { for(j=0;j<n;j++) scanf(“%d”,&a[i][j]); } eb=a[0][0]; for(j=0;j<n;j++) if (eb<a[i][j]) eb=a[i][j]; printf(“en büyük sayi=%d\n”,eb); getche();

#include <stdio.h> #include <math.h> Örnek NxN’lik bir matrisin transpozesinin bulunması #include <stdio.h> #include <math.h> #include <conio.h> int i,j,n,z; int a[20][20], b[20] [20]; main() { printf(“n sayisini giriniz..”); scanf(“%d”,&n); for(i=0;i<n;i++) for(j=0;j<n;j++) scanf (“%d”,&a[ i ] [ j ]); for(j=0;j<n;j++) b[ i ] [ j ]=a[ j ] [ i ]; for(i=0;i<n;i++){printf(“\n”); for(j=0;j<n;j++) printf (“%d”,b[ i ] [ j ]);} getch();}

#include <stdio.h> #include <math.h> Örnek Girilen iki matrisin toplamını #include <stdio.h> #include <math.h> #include <conio.h> int i,j,n,z; ini a[20][20], b[20] [20], t[20] [20]; main() { printf(“n sayisini giriniz..”); scanf(“%d”,&n); for(i=0;i<n;i++) for(j=0;j<n;j++) { scanf (“%d”,&a[ i ] [ j ]); scanf (“%d”,&b[ i ] [ j ]); //a[0][0] b[0][0] değerleri giriliyor t[ i ] [ j ]=a[ i ] [ j ]+b[ i ] [ j ]; } for(i=0;i<n;i++) {printf(“\n”); for(j=0;j<n;j++) printf (“%d”,t[ i ] [ j ]); } getch();}

Örnek işlemini gerçekleştiren program. #include<stdio.h> #include<math.h> int n,k,toplam=0,carpim; main () { for(n=1;n<=5;n++){ carpim=1; for(k=n;k<=7;k++) { carpim=carpim *pow(k,2); } toplam=toplam+n+carpim; printf(“sonuc=%d”,toplam); getch(); }

char ad[ ] = “mehmet” ; char isim[5] [10] ; Stringler: C dilinde ayrıca bir string tipi tanımlanmadığından, string ifadeler ancak char tipindeki diziler ile tanımlanabilir. Stringleri, sayısal dizelerden ayıran en önemli özellik stringin sonuna yerleştirilen NULL ( ASCII kodu 0 olan karakter ) karakteridir. char ad[10]; Tek boyutlu string ad null ad[0] ad[9] char ad[10] = “mehmet” ; char ad[ ] = “mehmet” ; char isim[5] [10] ;

#include <stdio.h> #include <string.h> #include <conio.h> main() { char ad[100],xx[]="ali",cevap; printf("Ad ve cevap değerlerini giriniz E/H?\n"); scanf("%s %c",ad,&cevap); printf("\n%s\n%s\n%c\n%c",ad,xx,cevap,ad[2]); getch(); }

#include <stdio.h> #include <conio.h> main(){ char ad[5][10]; int i; printf("isim listesini giriniz:\n"); for(i=0;i<5;i++) { printf("isim[%d]:\n",i);scanf("%s",ad[i]); } printf("isim listesini gormek icin bir tusa basiniz\n"); getch(); for(i=0;i<5;i++)printf("isim[%d]:%s\n",i,ad[i]); getch();}

Stringlerle İlgili Bazı Hazır Kütüphane Fonksiyonları Aşağıda <stdio.h> dosyasında tanımlanan string işlemleriyle ilgili çeşitli komutlar verilmiştir. Karakter dizesinin Okunup-Yazılması Bazen tek bir karakter veya tek bir kelime değil de Enter tuşuna basılıncaya kadar ya da satır sonu işaretini buluncaya kadar tüm yazılanların okunması gerekebilir . Bu nedenle şu fonksiyonları kullanmak yerinde olacaktır . char ad[30]; gets(ad); scanf("%s", a);//Bir karakter dizesini klavyeden okur puts(ad); printf("%s", a);//Bir karakter dizesini ekrana yazar strcmp: İki stringin ascii kodlarını (ilk karakterden başlayarak) karşılaştırır ve karşılaştırmanın sonucunu 0,pozitif yada negatif bir sayı olarak döndürür. strcmp(s1,s2); yada x=strcmp(s1,s2); s1=s2 ise x=0 s1>s2 ise x>0 s1<s2 ise x<0

strcpy: Bir stringi diğer bir stringe kopyalar. strcpy(s1,s2); s2’yi s1’e kopyalar strcpy(s1,”fırat”); s1=fırat olur. strncpy: Bir stringin başlangıcından itibaren n tane elemanını diğer bir stringe kopyalar. strncpy(s1,s2,n); s2’den n tane elemanı s1’e kopyalar. strcat: Bir stringi başka bir stringin sonuna ekler. strcat(s1,s2); s2’yi s1’in sonuna ekler strncat: Bir stringin n tane elemanını diğerinin sonuna ekler. strncat(s1,s2,n); strlen: Bir stringin eleman sayısını verir. x=strlen(s1); strlwr: stringdeki harfleri küçük harfe çevirir.’A’-‘Z’ dışındaki karakterler için bir değişiklik söz konusu değildir. strlwr(s); strupr: string içindeki harfleri büyük harfe çevirir.’a’-‘z’ dışındaki karakterler için bir değişiklik söz konusu değildir. strupr(s);

Örnek: Klavyeden girilen bir karakter dizesinin tersi bulunarak ekrana yazan program #include <stdio.h> #include <string.h> main() { char ifade[100]; int k,uzunluk; puts("İfadenizi Giriniz\n"); gets(ifade); uzunluk=strlen(ifade); for(k=uzunluk-1;k>=0;k--) putchar(ifade[k]); getch(); } putchar('\n');getch();

#include <stdio.h> Örnek #include <stdio.h> #include <string.h> #include <math.h> char s1[]="firat",s2[]="TEKNIK",s[20]; int i,a; main(){ a=strcmp(s1,s2);printf("%d\n",(a)); strncpy(s,s1,3);puts(s); strcpy(s,s2);puts(s); strcat(s,s1);puts(s); strupr(s);puts(s); strlwr(s);puts(s); for (i=0;i<strlen(s1);i++) s1[i]=s1[i]-32;puts(s1); for (i=0;i<strlen(s2);i++) s2[i]=s2[i]+32;puts(s2); } ASCII kodlar: A B C …..65 66 67 … a b c……97 98 99 ..