20 Temmuz 2011 Çarşamba

String Tokenizer ( Dizgi Parçalayıcı )

Bilgisayar bilimlerinde sık kullanılan veri tiplerinden birisi de dizgilerdir (Strings). Bu veri tipinde herhangi bir yazı durabilir. Genellikle verinin bir parçasını elde etmek için dizgi içerisinden bir parça çıkarılması gerekir. Bu işlem için dizginin (string) parçalanması gerektiğinde yapılan işleme parçalama (Tokenize) ismi verilir.
Örneğin çok sık kullanılan virgül ayırmalı veri (Comma seperated values) yapısındaki bir dosyayı ele alalım:
isim,telefon,dogum
ali,123,1970
veli,321,1980
ahmet,333,1981
Yukarıdaki bu dosyayı okuyarak sırasıyla verileri işlememiz gerekirse yapılacak işlem dosyadan satır satır verileri okumak ve “,” karakterinden okunan dizgileri bölmek gerekir.
Bu işlem için örneğin C dilinde bir karakter dizisine okumak ve dizinin her elemanı üzerinden bir döngü ile geçerek , karakteri görünce bölme işlemini tamamlamak gerekir.
Bu işlemi yapan strtok isimli bir fonksiyon string.h dosyasında bulunmaktadır.  Aşağıdaki şekilde kullanılabilir:
/* strtok ornegi */
#include <stdio.h>
#include <string.h>

int main ()
{
  char str[] ="- Bu, ornek bir dizgidir.";
  char * pch;
  printf ("Girilen \"%s\" mesajini parcaliyoruz:\n",str);
  pch = strtok (str," ,.-");
  // parcalama icin kullanilan ayırıcılar (delimiters)
  while (pch != NULL)
  {
    printf ("%s\n",pch);
    pch = strtok (NULL, " ,.-");
  }
  return 0;

}
Yukarıdaki programın sonucu aşağıda verilmiştir:
Girilen "Bu, ornek bir dizgidir." mesajini parcaliyoruz:
Bu
ornek
bir
dizgidir
Yukarıda görüldüğü üzere ,.- karakterlerinden parçalanmıştır. Benzer bir hazır fonksiyonda JAVA dilinde bulunmaktadır. StringTokenizer isimli fonksiyonun kullanımı aşağıda verilmiştir:
StringTokenizer st = new StringTokenizer("Bu, ornek bir dizgidir"," ,.");
     while (st.hasMoreTokens()) {
         System.out.println(st.nextToken());
     }
Yukarıdaki kodda da aynı dizgi aynı ayıraçlarla (Deliminator) verilmiştir ve çıktısı aşağıdaki şekildedir:
Bu
ornek
bir
dizgidir

9 Temmuz 2011 Cumartesi

C++ ile 1. Yazılı, 2. Yazılı, Sözlü Ortalama Hesaplamak

Merhabalar,

Bu videomuzda 1. yazılı, 2.yazılı, sözlü ortalama hesaplama programı yapımını öğreneceğiz.

İlk işimiz programı açmak. Yeni kaynak dosyası oluşturup kodumuzu yazıyoruz.


#include#include
main()
{
      float yazil,yazili,sozlu,ort;
      printf("1.yazili notunu girin=");
      scanf("%f",&yazil);
      printf("2.yazili notunu girin=");
      scanf("%f",&yazili);
      printf("sozlu notunu yazin=");
      scanf("%f",&sozlu);
      ort=(yazil+yazil+sozlu)/3;
      printf("sonuc=%.2f",ort);
      getch(); }



Bu kodları yazdıktan sonra programımızı başlatabiliriz.

Fakat değişkenleri kendime göre atadım, siz farklı değişken atayabilirsiniz.

printf("sonuc=%.2f",ort);


Burada %.0f kullanmamızın amacını 2. derste söylemiştim, ama tekrar söyleyeyim: Eğer ki buraya .2 yazmasaydık sonucumuz mesela 50.3333333 gibi şekilde olurdu, şimdi ise 50.33 şeklinde çıkartıyor. İsterseniz burayı .0 yapabilirsiniz. Fakat "." (nokta) 'yı unutmayınız virgül koyarsanız olmaz.

5 Temmuz 2011 Salı

C++ Ders Notları ve Uygulamalar

Bilgisayar programlama 2 (C++) dersinin uygulamaları ve tekrar örnekleri toplu halde bilgisayar labaratuarı ağında paylaşılmıştı. Alamayanlar  ders notlarını buradan indirebilir.
Ders Notlarının ve örneklerinin paylaşıldığı sayfa:
http://nucleus.istanbul.edu.tr/~bilprog2/
Hoca geçen yılın vize sorularınıda yayınlamış. (Kek)
Hepsini tek tek indirmek yerine buradan toplu olarak indirebilirsiniz. (Vize öncesi Ders 6 dahil )
Ayrıca derleyici olarak Dev C++ yı tavsiye ederim ki zaten okulda da onu kullanıyouz. Bu bağlantıda altarnatif  indirme adresi.

Sorularınız olursa bilgimizin yettiği kadarına cevap vermeye çalışırız.
C++ ve diğer diller için videolu ders anlatımlarını bu yazımdan bulabilirsiniz. Mesela Kariyervideo dan C++ derslerini izleyebilirsiniz. ( Üyelik gerekir- Ücretsiz ) Amacınız sadece sınavı geçmekse ders notlarını okusanız da yeter.