DEÜ Bilgisayar Bilimleri Bölümü BİL1001 Bilgisayar Bilimlerine Giriş 1 Öğr. Gör. Dr. Alper VAHAPLAR 2017 Yaz Okulu
Tekrarlı Yapılar Algoritmanın belirli bir kısmının, belirli kere ya da belirli durumlar sağlandıkça tekrar ettirilmesine döngü denir. Döngü türleri Koşul Kontrollü Döngüler Sayaç kontrollü Döngüler 2
Tekrarlı Yapılar Alıştırmalar Yarıömrü verilen 100 gr ağırlığındaki bir elementin tükenme süresini (1 gr. ın altına düştüğü süreyi) hesaplayan programı yazınız. (Ör: yarı ömrü 18 gün olan element 18 gün sonra 50gr, 36 gün sonra 25gr, 54 gün sonra 12.5 gr kalır) Klavyeden girilen herhangi bir tamsayının basamak sayısını yazdıran programı yazınız. Klavyeden girilen herhangi bir tamsayıyı tersten yazdıran programı yazınız. Verilen faiz oranına ve anaparaya göre 10 yıla kadar her yıl sonunda oluşacak yatırımı yazdıran programı yazınız. (yatirim = anapara x (1+oran)^yil) İlk 24 fibonacci sayısını bulduran programı yazınız. 3
Diziler Arrays Array (Dizi): Aynı veri tipinden olmak kaydıyla çok sayıda değeri aynı değişken adı altında tutmak için kullanılan yapılara dizi (array) adı verilir. Dizinin her bir elemanına indis (index) adı verilen konum belirleyici ile ulaşılır. Dizinin belirli bir boyutu vardır ve (genellikle) önceden tanımlanmalıdır. Ör: (Pascal) var sayi:array[1..5] of integer; Ör: (C) int c[12]; float kilo[10]; Ör: (Java) int[] sayilar = new int[3]; Ör: (Visual Basic) DIM notlar(5) As Double 4
Diziler Alıştırmalar 1 den 10 a kadar olan sayıların karelerini bir dizide tutan algoritmayı yazınız. 1. Başla 2. indis 1; 3. WHILE (indis<=10) a. dizi[indis] indis * indis; b. dizi[indis] i yazdır; c. indis indis + 1; 4. Bitir. İndis Değer 1 1 2 4 3 9 4 16 5 25 6 36 7 49 8 64 9 81 10 100 5
Diziler C de diziler C de diziler 0. indisten başlar, İlk eleman 0. elemandır. Dizinin adı, aslında bir yer göstericidir. Ör: int arr[3] ogrenci_notu dizinin ismidir. double ogrenci_notu[8]; Dizinin 8 elemanı 6
Diziler C de diziler Dizi tanımlama ve başlangıç değeri atama Ör: int ogrenci_notu[8]={45, 56, 78, 93, 78, 69, 77, 90}; printf ("3. Ogrencinin notu = %d",ogrenci_notu[2]); 7
Diziler Alıştırmalar 1 den 10 a kadar olan sayıların karelerini bir dizide tutan algoritmayı yazınız. 1. Başla 2. indis 1; 3. WHILE (indis<=10) a. dizi[indis] indis * indis; b. dizi[indis] i yazdır; c. indis indis + 1; 4. Bitir. int a[10]; int i; for(i=0;i<10;i++) { a[i]=(i+1)*(i+1); printf ("%d. eleman = %d\n",i,a[i]); } 8
Diziler Alıştırmalar İlk 24 fibonacci sayısını hesaplayıp bir dizide tutan programı yazınız. 0 ile 100 arasında rasgele 10 sayı türetip ortalamasını ve standart sapmasını hesaplayan programı yazınız. 0 ile 10 arasında 100 sayı türetip bunların her birinden kaçar tane olduğunu gösteren programı yazınız. Bu sayıların modunu bulunuz. 10 ile 50 arasında 9 sayı türetip bu sayıları sıralı bir şekilde dizide tutan programı yazınız. 9
Diziler Strings Karakter Dizileri (Strings) Bazı programlama dillerinde karakter dizilerini tutmak için özel veri türleri (string) bulunmaktadır. Ancak C programlama dilinde böyle bir veri türü olmadığı için yerine karakterlerden oluşan bir boyutlu diziler kullanılır. Karakter dizilerine özel olarak, karakter dizilerinin sonuna sonlandırıcı karakter olarak adlandırılan bir simge eklenir. Sonlandırıcı karakter: Dizinin bittiği yeri gösterir, ASCII tablosunun sıfır numaralı ('\0') karakteridir. char katar_adı[elemansayısı] 0 1 2 3 4 5 s ı' n' a' v' \0
Diziler Strings printf() ve scanf() fonksiyonları diğer tiplerde olduğu gibi formatlı okuma/yazma amaçlı kullanılır. Katar formatı %s dir. char str[20];... scanf("%s",str); printf("%s\n",str); Katar okutulurken & operatörünün kullanılmadığına dikkat ediniz. Bir karakter dizisini klavyeden okumak için C'nin standart gets() fonksiyonu kullanılır. stdio.h dışında yeni bir kitaplığı C programına dahil etmeye gerek yoktur. Bu fonksiyon her hangi bir indeks tanımlamadan karakter dizilerinin okunmasını sağlar. Okuduğu karakter dizisinin sonuna satır sonu işaretini değil, NULL değerini yerleştirir. gets(string_name); puts(string_name);
Diziler Strings Örnek Program: void main() { } char isim[10]; printf ("Adınızı yazınız :"); gets(isim); printf ("Merhaba %s, bugun nasilsin?",isim); 12
Diziler Strings Stringler aynı zamanda char tipinde array yapısındadır. void main() { } char isim[10]; printf ("Adınızı yazınız :"); gets(isim); printf ("Merhaba %s, bugun nasilsin?",isim); printf ("Isminizin ilk harfi = %c", isim[0]); 13
Diziler Strings Girilen ifadeyi harf harf alt alta yazdıran programı yazınız. void main() { } char isim[10]; int a=0; printf ("Adınızı yazınız :"); gets(isim); while (isim[a]!= '\0') { printf ("%c \n",isim[a]); a++; } 14
Diziler Strings Girilen ifadede istenilen harfin sayısını bulduran programı yazınız. void main() { char metin[100]; char aranan; int adet=0; int a=0; printf ("Metin giriniz:"); gets(metin); printf ("Hangi harfi arayalim? "); scanf ("%c",&aranan); while (metin[a]!= '\0') { if (metin[a] == aranan) adet++; a++; } printf ("%c harfinden %d tane var", aranan, adet); } Girilen ifadedeki kelime sayısını bulduran programı yazınız. Girilen bir metni ters yazdıran programı yazınız. 15
Diziler İki Boyutlu Diziler Matris görünümünde tablo gibi düşünülebilen yapılardır. Satır ve sütun int a[3][4]; //3 satır 4 sütun formatında tamsayı tutan yapı 16
Diziler İki Boyutlu Diziler int x[3][4]={16,35,48,63,23,12,26,34,56,52,34,33}; int x[3][4]={{16,35,48,63}, {23,12,26,34}, {56,52,34,33}}; İki boyutlu diziyi yazdırma for (satir=0;satir<3;satir++) { for (sutun=0;sutun<4;sutun++) { printf("%4d",x[satir][sutun]); } printf("\n"); } 17
ÖDEV Teslim tarihi : 9 Ağustos 2017 Konu: 10 kişilik bir sınıfın öğrenci adlarını, vize ve finalini kullanıcıdan alıp, bunları dizi yapısında saklayıp, Geçmenotu = Vize*%40+Final*%60 hesaplayıp, geçmenotuna göre ya da isme göre sıralı gösteren programı yazınız. 18