21 Aralık 2016 Çarşamba

Kod Yazmadan Kolayca Mobil Marketler için Oyun Geliştirme

Bilgisayar oyunlarının geliştirilmesi uzun ve zahmetli bir iştir. Bu iş için genellikle on binlerce satır kod yazılması, yazılımcıların uzun saatler boyunca emek harcaması ve genellikle bir oyun geliştirme
platformu kullanılması gerekmektedir.

Oyun geliştirme platformu olarak Unity oyun geliştiriciler arasında çokca kullanılsa da, Cocos2D, Multimedia Fusion, Game salad, Game Maker gibi başka oyun geliştirme platformlarıda bulunmaktadır.

Örnek olarak 1993  yılında Paris'te kurulan Click Team şirketi tarafından geliştirilen Multimedia Fusion oyun geliştirme platformu bir dizi GUI aracı kullanarak etkileşimli yazılımlar geliştirebilmektedir. 

"Oyun geliştirme daha önce hiç bu kadar kolay olmamıştı" sloganı ile oyunlar geliştiren Multimedia Fusion kullanılarak geliştirdiğiniz oyunları sadece Windows ortamında değil farklı platformlarda da kullanabiliriz. Bunun için program içerisindeki Build seçeneği kullanılarak geliştirdiğimiz uygulamayı, Android (Apk), IOS, HTML5, Flash, XNA gibi platformlara kolayca çevirebiliriz.

Multimedia Fusion'ın diğer bir özelliğide kod yazmadan sadece olay tabanlı akış ile oyunlar geliştirilebilmesidir.

Örnek olması amacı ile WarCrime adında bir bilgisayar oyunu sadece 15 dakika içerisinde Multimedia Fusion kullanılarak geliştirilmiş ve Android markete yüklenmiştir. WarCrime oyunu Android marketten incelemek amaçlı olarak indirilebilirsiziniz. (Bu çok basit oyunun amacı 6 haraketli karakterden kaçarak onları vurmak.)

Multimedia Fusion kullanılarak geliştirilmiş çok sayıda profesyonel 2D oyun bulunmaktadır. Bu oyunlar hakkında bilgi almak için yandaki youtube videolarını ( 167 tane MultimediaFusion ile geliştirilmiş oyun veya Multimedia Fusion ile ne yapabilirim isimli video) izleyebilirsiniz. Multimedia Fusion ile ayrıca 3D uygulamalarda geliştirilebilmektedir. 

Multimedia Fusion 2.5 yazılımının Demo versiyonu http://www.clickteam.com/  sitesinden ücretsiz olarak indirilebilirsiniz. Uygulamanın Developer versiyonu ise ücretlidir.  Ayrıca geliştirdiğiniz oyunlara Google Admob ekleyerek uygulama üzerinden gelirde kazanabilirsiniz. İlgilenecekler yandaki eğitim videolarını kullanabilirler Multimedia Fusion Eğitim Videoları (ingilizce)

13 Aralık 2016 Salı

Yazılım Test Proje Sunumu Notlandırması


Proje sunumu Notlandırması

1-)Gereksinimlerin doğru alınması ve Analizin doğru yapılması (%20).
2-)Tasarım (%15)
  • % 10 Ekran tasarımları
    •  (% 5 Görsellik ve Kolaylık % 5 Doğru bilgilerin ekranda listelenmesi.)
  • %5 Doğru verilerin veri tabanında tutulması (Db Diyagramı).
3-)İstenilen belgelerin oluşturulması (%20) ayrıca cbuyzm3105@gmail.com adresine gönderilmesi.

  • Gantt Chart (Kim hangi işi hangi sürede yapmış)
  • Source Monitor Dosyası (*.smp uzantılı dosya)
  • Test Dökümanı (Örnek verildi.)
  • Şartname (Ekler dahil) (Örnek verildi.)
  • Oluşturduğunuz projenin kaynak kodlar ve proje dosyaları.
4-)Karakutu testlerinde başarı ile geçmesi (%25).
5-)Beyaz Kutu testlerinde başarı ile geçmesi (%20) .

7 Aralık 2016 Çarşamba

YOLO Dünyası için Geri Sayım Başladı!

haydar-colakoglu-yolo-uygulama
Ulaşımda En Pratik Yol O!  sloganı ile yola çıkan ve Uber’in karşılaştığı en güçlü rakip olan girişim YOLO için geri sayım başladı. Dünyada olduğu gibi ülkemizde de yoğun ilgi gören şehir içi, konfor ve kaliteyi birleştiren yolculuklar sağlayan platformlara bir yenisi daha ekleniyor. Kısa süre içinde hayatımızda farklı bir yer edinmeyi hedefleyen girişimin adı YOLO.
YOLO, şehir içinde lüks segment araçlar ile şehir içi VIP taşımacılık hizmeti veren ve sektöre çok iddialı girerek diğer rakiplerine nazaran çok farklı iş modeli ve kazanç vaat eden bir mobil uygulama. Dünyada Uber modeli olarak bilinen mobil uygulamanın Türkiye versiyonu olarak planlanmış olan YOLO, uzun süren Ar-Ge çalışmaları sonucunda ortaya çıkmış.
YOLO’yu dünyadaki benzerlerinden farklı kılan en önemli özellik TR’de hukuksal altyapısının sağlamlığı ve farklı kazanç modelleri. YOLO, hem kullanıcılara, hem de iş ortaklarına sağladığı yeni nesil bir iş modeli ile kısa sürede yola çıkıyor.
haydar-colakoglu
YOLO, TEB Holding ve Çolakoğlu Grup Yönetim Kurulu Üyesi Haydar ÇOLAKOĞLU başkanlığındaki güçlü yatırımcı ve yönetim kadrosu ile de dikkat çekiyor. Yönetim kademesindeki 12 kişilik tecrübeli ekibin, 1 yıl süren çalışmaları sonucu ortaya çıkardıkları YOLO, şehir hayatına yeni bir soluk getirmeyi planlıyor.
haydar-colakoglu-teb-genel-mudur
haydar-colakoglu
haydar-colakoglu-teb
Ulaşımdaki zorlukları keyif ve konfor ile çok uygun koşullarda sunmayı hedefleyen ekip adına konuşan YOLO Yönetim Kurulu Başkanı Haydar ÇOLAKOĞLU şunları söyledi;
“Günümüzde temel ihtiyaçlarımızdan biri olan şehir içi konforlu seyahatin hızlı, güvenli ve ucuz olarak sağlanabilmesi başlangıç noktamızdı. Bununla birlikte, kayıt dışı kalan birçok seyahatin kayıt altına alınarak vergilendirilmesi, sektörde hukuksal altyapının sağlamlaştırılması yeni düzende yeni normallere alışan bizler için çok önemli. İşlerimize teknolojiyi en verimli şekilde entegre etmek hem kullanıcılarımıza hem de iş ortaklarımıza yüksek kazanç sağlayacaktır.
YOLO yüzde yüz yerli yapım bir uygulamadır. Amaçlarımızdan biriside bu iş modelini hızlı bir şekilde ülke dışında da kullanılan bir marka yapmaktır. YOLO’nun temel felsefesi bundan ibarettir.
Kendi kurucularımızın sağladıkları desteklerin yanında, henüz başlangıç aşamasında iken Los Angeles merkezli bir yatırım şirketinden 16 milyon dolar değerleme ile bir kısım yatırım aldık. Kendileri ile yaptığımız çalışmalar sonucunda da “you only live once” baş harflerinden oluşan YOLO isminde karar kıldık. Bunun yanısıra Los Angeles, San Francisco, Londra ve Zürih merkezli yatırımcı grupları ile de görüşmelerimiz devam etmekte. Bu güç birliği platformu ile hem UBER gibi bir dünya devine rakip olacak, hem de Türkiye’den bir dünya markası çıkartabilmek için çalışacağız.
haydar-colakoglu-yolo-turkiye
Başlangıç gününde 300’ün üzerinde araç ile hizmet verecek olan YOLO ile kullanıcılar, tek tuş ile araç çağırabilecek, ulaşım ücretlerini kredi kartları ile ödeyebilecekler. Araçta unuttukları herhangi bir eşyanın güvende olduğunu bilecekler. Yıl sonu hedefimizde 1000’i aşkın araçla hizmet vermek var.
Bu uygulamaların yanısıra yolcularımızı çok özel kampanyalardan da faydalandıracağız. Farklılıklarımız, ilk günden bu ayrıcalıklar ile görülecek. Kasim ayında acilacak beta surumu ile İstanbul`un bazi seckin mekanlarinda yapilacak test surusleri ile hizmete baslayacak olan uygulama üzerinden özellikle tanıtım günlerimizde kayıt yaptıran yolcularımıza 15 Aralık - 4 Ocak tarihleri arasında ücretsiz ulaşım hakları, çeşitli promosyonlar sağlayacağız. Açılışa özel bu kampanya gibi birçok büyük kurumdan da kampanya desteği alan YOLO ile yolculuklarınızın standartları değişecek. YOLO’yu hepinize tavsiye ediyorum. YOLO dünyasına hoş geldiniz.”
GooglePlay ve AppStore dan indireceğiniz uygulama sayesinde YOLO dünyasında siz de yerinizi alın. Detaylı bilgi ve iletişim için www.yolo.com.tr adresinden YOLO’ ya ulaşabilir @yolo_turkiye Instagram adresinden de takip edebilirsiniz.

Bir boomads advertorial içeriğidir.

6 Aralık 2016 Salı

Twitter Analytics Nedir?

Attığınız twitler kaç kişi tarafından görülmüş?
Bunlardan kaç tanesi o twiti gördükten sonra o twit  ile ilgilenmiş?
Eğer bu bilgileri öğrenmek isterseniz tek yapmanız gereken Twitter sitesinin bir subdomaini olan https://analytics.twitter.com sitesine gitmek.

Ani Gif Oluşturma



İnternetin ilk çıktığı yıllarda veri trafiğinin az olması için videolar yerine  kullanılan anigifler son dönemde tekrar gündemimize geldi. Bu tarz anigifleri hazırlamak için kullanabileceğimiz pek çok alternatif var. Bunlardan en kolayı http://www.gifmaker.me/ sitesi.  Bu site içerisinde bulunan Create GIF Animation buttonu kullanılarak istenilen hızda resim geçiş özelliği bulunan anigifler üretebilirsiniz.



Ücretsiz Gantt Project Oluşturma Aracı


GanttProject aracı; Windows, OSX ve Linux için geliştirilmiş ücretsiz bir  proje zamanlama ve yönetim uygulamasıdır. Görevler ve kilometre taşları oluşturma, Gantt chart çiziimi gibi özelliklere sahip bir programdır.


Detaylı bilgi ve indirme adresi  http://www.ganttproject.biz/


Web Tabanlı bir proje yönetim aracı olan Trelloyu'da projenizi izlemek ve proje yönetimini esnek bir hale getirmek için deneyebilirsiniz. Kayıt ve kullanım ücretsizdir.

Detaylı bilgi: https://trello.com/





Google Translate'e Yeni Güncelleme

Google Translate Türkçe dil özelliğini değiştirdi. Teknik alt yapı olarak neural network teknolojisini detaylı olarak kullanmaya başladı. Bu sayede Google translate sadece kelimeler üzerinden yaptığı çeviriyi bırakarak cümlesel ve anlamsal çevirilere geçti. Sistemi geliştiren ekibe göre; "geliştirilen sistem verilen cümleye en yakın çeviriyi günlük konuşmaya benzer bir formda oluşturabilmekte."
Kullanılan teknoloji kendini  sürekli olarak geliştirmesi nedeni ile Google translate ilerleyen dönemde daha anlamlı ve kapsamlı çeviriler gerçekleştirebilecek.

Yazılım Sınama Ödev Notları

Ödev Notları  (06.12.2015) itibari ile.

5 Aralık 2016 Pazartesi

13.Veritabanı Oluşturma Aşamaları


Bir veritabanı oluşturulurken çeşitli aşamalardan geçmektedir. Bu aşamaları aşağıdaki gibi sıralayabiliriz.
Bir veritabanının kavramsal modellenmesi;
Kavramsal modelleme (sistemin analizi) yapılması,
Varlık–ilişki modelinin oluşturulması,
İlişkisel modelin oluşturulması.
Veritabanının mantıksal kurulumunun yapılması;
Kavramsal modellerin VYTS bileşenlerine dönüştürülmesidir.
Veritabanının fiziksel olarak kurulması;
Veritabanının programlanması safhasıdır.
Sistem analizi aşamasında, veritabanının tüm bileşenlerinin çok detaylı bir tanımlanması yapılmaktadır. Yani bu sistemde nelerin gerekli olduğu ayrıntılı bir şekilde incelenmektedir. Bu inceleme kod tabanlı değil metin tabanlı bir incelemedir.
Burada ihtiyaçlar belirlenirken son kullanıcının görüşlerine yer verilmektedir. Yani sistemde hangi verilerin tutulacağı ve ne türden işlemlerin yapılacağı sistemi bizzat kullanacak kullanıcıyı da sorularak hazırlanabilmektedir.
Kavramsal model, fiziksel model ile karşılaştırıldığında;
fiziksel model, kullanılmak istenen VTYS üzerinde verilerin bilgisayarda tutulması, kayıtların düzenlenmesi ve erişim yöntemlerinin belirlenmesi vb. işleri gerçekleştirirken,
kavramsal model VTYS ve kısıtlamalardan bağımsız genel amaçlı bir model ortaya koymayı amaçlamaktadır.
Kavramsal model herhangi bir sistem üzerinde değil kâğıt üzerinde veya bir tasarım yazılımı kullanılarak yapılmaktadır. Yani sistem analizi yapılmaktadır ve bu genellikle sözel bir bölümdür. Problemin detaylı tanımlaması yapılmaktadır.

Şimdi kavramsal modele bir örnek verelim.

"Maltepe Üniversitesi Kütüphanesinde kullanılmak üzere bir veritabanı modellenmek istenmektedir. Kütüphanede kitaplar içeriklerine göre tasnif edilmektedir. Her kitaba ait bir kitap numarası ve kitap adı vardır. Kitaplar içeriklerine göre tasnif edildiğinden birde raf numarası verilmektedir. Kütüphane görevlilerinin kendilerine ait kullanıcı adı ve şifreleri vardır. Kütüphane görevlisi ödünç kitap verme, kitap iadesi alma, kitap ekleme ve çıkarma haklarına sahiptir.”
“Kütüphaneden ödünç kitap öğrencilere, öğretim elemanlarına ve diğer personele verilebilmektedir. Kitaplar öğrencilere ödünç verilecekse öğrenci numarası, adı, soyadı, fakülte adı ve bölümü bilgilerine, personele verilecekse personel numarası, adı, soyadı, fakülte adı ve bölümü bilgisine, diğer personele verilecekse, personel numarası, adı, soyadı ve çalıştığı birim bilgilerine ihtiyaç vardır. Kitabın ödünç verilme süresi 15 gündür. Zamanında getirilmeyen kitaplar için personele gün başına ceza kesilir.”



12.İlişkisel Veri Modeli


Şu anda kullanılan veri tabanlarının çoğu ilişkisel veri modelini desteklemektedir.
Bu modelde birbiri ile alakalı olan veriler, tablolar içinde saklanır. Ayrıca tablolar arasında değişik türlerde ilişki  kurulmaktadır.
İlişkiler kurulurken birincil anahtar (primary key) ve yabancı anahtarlar (foreign key) kullanılır.
Anahtar alanlar sayesinde indeksleme yapma olanağı sunan ilişkisel veri tabanlarında erişim ve işlemler daha hızlı yapılabilmektedir.
İlişkiler ve onların temsilleri olan tablolardan oluşan veri modelleri ilk olarak 1970 yılında Codd tarafından ortaya atılmıştır.
İlişkisel veri modelleri formüle edilirken, veri yönetimi ihtiyaçlarını karşılayabilmek için ilişkinin matematiksel teorisi, mantıksal olarak genişletilmiştir.
İlişkisel veri modellerinde kullanılan tek yapılandırma aracı ilişkidir. İlişkinin tanımı, veri tabanı ilişkilerinin zamana bağlı olması dışında, matematiksel tanımı ile aynıdır. Yani, bir veri tabanı ilişkisinde satırlar; eklenebilir, değiştirilebilir ya da düzeltilebilir.
Aşağıda gördüğünüz satırlar, basit bir hastane veri tabanının ilişkisel şemasını göstermektedir.


HASTANE (Hastane_Kodu, Hastane_Adı, Adres, Tel_No, Yatak_Sayısı)
DOKTOR (Hastane_Kodu, Diploma_No, Adı, Uzmanlığı)
İŞÇİ (Hastane_Kodu, Sigorta_No, Adı, Adres, Kıdem, Maaş, D_Tarihi)


Ağ (Network) Veri Modeli
Ağ veri modeli 1970'li yıların başında geliştirilmiştir. Bir verinin doğası gereği birden çok veri ile ilişkisinin olmasından dolayı hızlıca kabul görmüştür.
Bu modelde verilerin birbirine ağ şeklinde bağlandığı varsayılır.
Bir veri ağında iki kullanıcının haberleşebilmesi için bir çeşit adresleme şekli gereklidir. Genelde, iki veya üç adres gerekir. Bazı sistemlerde bir fiziksel adres, bir veri bağlantı adresi ve bir ağ adresi kullanılır. Daha yaygın bir yaklaşım, yalnızca fiziksel ve ağ adreslerini kullanmaktır. Bu yaklaşımda, fiziksel ve veri bağlantı adresi aynıdır. Veri iletişimi bu adresler aracılığı ile sağlanmaktadır.


Nesneye Yönelik Veri Modeli
Diğer veri modellerinden daha sonra ortaya atılan ve karmaşık uygulamalarda başarısını kanıtlamış nesne yönelimli programlamaya dayanan veri modelidir.
Nesne yönelimli sistemler, bir istatistiksel sistem içinde, esnek veri yapılarının geliştirilmesi ve istatistiksel modellerin sunumunda da kullanılmaktadır.


Nesne yönelimli bir veri modelinin çekirdeğini şu unsurlar oluşturmaktadır.
Nesne ve nesne tanımlayıcı: Nesne yönelimli sistemler ve dillerde, gerçek hayattaki her bir varlık birer nesne olarak modellenir. Her nesnenin de bir tanımlayıcısı vardır.
Öznitelikler ve metotlar: Her nesnenin bir durumu ve bir davranışı vardır. Bir nesnenin durumu, nesnenin özniteliklerinin aldığı değerlerin kümesidir. Nesnenin davranışı ise, nesnenin durumu üzerinde işleyen metotlar (program kodları) kümesidir.
Sınıf: Aynı öznitelikler ya da metotlar kümesini paylaşan nesneleri gruplama aracı olarak kullanılır. Nesne ile sınıf arasında bir ilişki vardır. Kendisi de bir nesne olan özniteliğin değeri de sınıfın içinde yer alır (kapsülleme). Bu sınıf, nesnenin özniteliğinin tanım kümesi olarak adlandırılır.
Sınıf hiyerarşisi ve kalıtım: Nesne yönelimli sistemlerde, var olan bir sınıftan yeni bir sınıf türetilebilir. Altsınıf denilen bu yeni sınıf, üst sınıf denilen ve daha önce var olan sınıfın tüm özniteliklerini ve metotlarını kalıtsal olarak taşır.

11.Sıradüzensel (Hiyerarşik) Veri Modeli


Hiyerarşik veri modeli 1960 ve 1970 yılları arasında popüler olan bir modeldir. Bu modelde çoklu ilişkileri temsil edebilmek için, varlık tiplerinin her ilişki için ayrı ayrı tanımlanması gerekir. Bu da gereksiz veri tekrarına sebep olur.
Bu modelde, veriler ağaç yapısına benzer bir biçimde modellenir. En üste kök ve kökün dalları bulunur. Ayrıca her dalın alt dalı sayesinde dallanma ve çeşitlilik artar.
Bu modelde her bir alt dalın sadece bir tane noktadan bağlanma şartı bu modelin en büyük kısıtlamalarından biridir.
Model dahilindeki herhangi bir düğüm, altındaki n sayıda düğüme bağlanırken, kendisinin üstünde ancak bir düğüme bağlanabilir.
Hiyerarşik yapının en tepesindeki düğüm noktasına kök denir ve bu düğümün sadece bağımlı düğümleri bulunur. Bu veri yapısını gösteren grafiğe de hiyerarşik tanım ağacı denir.
Bir hiyerarşik tanım ağacının örneği aşağıda görülmektedir.


10.Veritabanı Türleri



Veritabanları;kullanıcı sayısına,fiziksel konumuna,veri modeline göre üç şekilde sınıflandırılabilir.


Kullanıcı Sayısına Göre
Tek-kullanıcılı (single-user) veritabanları, bir seferde yalnızca bir kullanıcıyı destekler.
Masaüstü veritabanı: tek-kullanıcılı, PC üzerinde çalışır.

Çok-kullanıcılı (multi-user) veritabanları, aynı anda birden çok kullanıcıyı destekler.
Kurumsal veritabanları…


Fiziksel Konumuna Göre
Dağıtılmış sistemlerde tüm belgelerde aynı veri tabanı yönetim sistemi kullanılmış ise homojen dağıtılmış veri tabanı sistemi, farklı belgelere farklı veri tabanı sistemleri kullanılıyor ise heterojen dağıtılmış veri tabanı sistemi denir.
Merkezi Veritabanı: Tek bir veritabanı sistemi bulunur.  Fiziksel olarak ta tek bir merkezde bulunur.
Dağıtık Veritabanı: VTYS’nin çeşitli parçaları bir çok bölgeye dağıtılmıştır. Dağıtılmış veritabanı, kullanıcıya tek bir veritabanı gibi gözükür, fakat ayrı yerlerdeki veritabanlarından oluşur
Res-9


Veri Modeline Göre
Veri Tabanı Yönetim Sistemleri belirli bir veri modeline dayanır.
Bir veritabanı yapısının temelini veri modeli kavramı oluşturmaktadır. Veriyi mantıksal düzeyde düzenlemek için; kullanılan kavramlar, yapılar ve işlemler topluluğuna veri modeli denir.

Birçok veri modeli geliştirilmiştir. Başlıca veri modelleri;
Sıra düzensel veri modeli,
Ağ (network) veri modeli,
İlişkisel veri modeli,
Nesneye yönelik veri modeli.

Sayılan bu veri modellerinin ilk ikisi şu anda kullanılmamaktadır. En yaygın kullanılanı ise, İlişkisel Veri Modelidir. Günümüzde kullanılan VTYS?’lerin hemen hemen tümü ilişkisel veri modeline dayalıdır. Son zamanlarda ortaya çıkan Nesneye Yönelik Veri Modeli, İlişkisel Veri Modeli ile birlikte bazı VTYS’?lerde kullanılmaktadır.

9.VTYS’nin Sağladığı Yararlar


Veri tabanları dışında VTYS’nin de çeşitli faydaları vardır. Bunları şöyle açıklayabiliriz.
Veri Tekrarı: Aynı veriler değişik bilgisayarlarda tekrar tekrar tutulmak zorunda değildir. Dolayısı ile verilerin tekrarı azaltılmış olur.
Veri Tutarlılığı: Herhangi bir tabloda güncellenen bir bilgi başka bir yerde güncellenmemiş olabilir. Böyle bir durum verilerin tutarsızlığına neden olabilir. Bu nedenle bir tabloda güncellenen bir bilgi başka bir tabloda da güncellenmek zorundadır.
Veri Paylaşımı/Eşzamanlılık: Bir VTYS ‘de bir veri tabanına saniyede yüzlerce kez bağlanılabilir. Bu işlem sırasında veritabanının bütünlüğü ve tutarlılığı bozulmamalıdır.
Veri Bütünlüğü: Bir tablodan herhangi bir kayıt silinirse bununla ilişkili olan diğer kayıtlarda tüm tablolardan silinmelidir. Aksi halde verilerin bütünlüğü sağlanamamış olur.
Veri Güvenliği: Verilerin yanlış kullanım sonucu zarar görmelerini engellemek için çok kapsamlı mekanizmalar mevcuttur.
Veri Bağımsızlığı: Bir verinin fiziksel olarak temsili, bulunduğu yer ve verinin kullanımı birbirinden bağımsızdır. Bir uygulamanın, veritabanının veriyi nasıl ve nerede depoladığını bilmesi gerekmez. Uygulama sadece istekte bulunur. Ayrıca veritabanı üzerinde tablo ekleme, silme gibi işlemlerden uygulama programı etkilenmemelidir

8.Veritabanı Yönetim Sistemleri

Veritabanı Yönetim Sistemleri (VTYS - DBMS), kullanıcı ile veritabanı arasında arabuluculuk görevini üstlenir.
Veritabanı yapısı, bir dosya topluluğu olarak depolanır.
VTYS ile bu dosyalara erişilebilinir.
VTYS, paylaşılabilir veriler sağlar.
VTYS, birçok kullanıcı bakış açısına göre verileri birleştirir.
VTYS, son kullanıcı ile veritabanı arasındaki etkileşimi yönetir.
Bir veritabanı sistemi ile bir dosya sisteminin karşılaştırılmasını görüyoruz.



7.Piyasa da yaygın olarak kullanılan başlıca veri tabanı yönetim sistemi yazılımları:

Oracle,
Microsoft SQL Server,
Sysbase,
DB2,
MySQL,
Paradox,
Firebird,
Microsoft Access.
SQLite

Veritabanı kullanımı, geleneksel dosya kullanımına göre birçok yönden üstünlük sağlamaktadır. Bunlar:

Verinin tekrarlamasını önler,
Verinin tutarlı olmasını sağlar,
Aynı andaki erişimlerde tutarsızlıkların ortaya çıkmasını önler.
Verinin güvenliğini sağlar.

Geleneksel dosya sistemlerinin kullanıldığı uygulamalarda, her bir uygulama için veriler ayrı ayrı tutulur. Uygulamalar alt sistemlere bölünmüştür ve her bir alt sistemin kendi veri dosyaları bulunmaktadır. Bu veriler önemli oranda tekrarlıdır.
Örneğin; Türkiye’deki il kodları ve isimlerinden oluşan bir dosya PERSONEL alt sisteminde kullanılabilir. Ancak aynı dosyanın pazarlama alt sisteminde de bir kopyasının bulunması gerekmektedir. Daha başka birçok yerde aynı dosya bilgilerinin tekrarlanması gerekmektedir.
Veritabanı sistemlerinde ise bu tekrarlara gerek yoktur.

Veri tutarlılığını sağlar…
Veritabanı sistemlerinin en önemli üstünlüklerinden biri, veri bütünlüğünün (data integrity) sağlanmasıdır. Veri bütünlüğü, verinin doğruluğunu ve tutarlılığını anlatmaktadır.
Veritabanındaki verilerin doğruluğunu ve tutarlı bir bütün oluşturmasını sağlamak için, bir takım kısıtlamalara yer verilebilir.
Örneğin, öğrenci bilgileri girilirken; doğduğu il koduna 100 değeri kaydedildiğinde, yanlış bilgi nedeniyle, bu giriş isteğinin yerine getirilmemesi istenebilir.

Tutarsızlıkları önler…
Veritabanı uygulamalarında, veritabanı nesneleri başka başka uygulamalar tarafında paylaşılabilir. Veriler aynı anda farklı uygulamalar ve dolayısıyla farklı kullanıcılar tarafından aynı anda paylaşılabilir. VTYS, birlikte kullanımın yol açabileceği sorunları otomatik olarak çözer.
Örneğin, ürün stokunda 100 adet bilgisayar olduğunu varsayalım. İki farklı satış temsilcisinden birinin aynı anda 50, diğerinin ise 55 bilgisayar çıkışı yapmaya çalıştığını düşünelim.
İşlem aynı anda yapıldığı için, 100 birimlik stoktan 105 birim çıkış yapılacağı düşünülebilir.
Ancak VTYS buna izin vermez. Çıkışlar aynı anda yapılmasına rağmen, önce birincisini stoktan çıkarır ve ikincisi için bir kontrol yaparak çıkışı önler.
Bunun için bir kısıtlama tanımlanır. Bu kısıtlama verinin doğruluğunu denetleyecektir. Söz konusu kısıtlamalar veritabanı üzerinde verinin doğru ve tutarlı olmasını sağlayacaktır.
Veritabanı sistemleri, uygulamaların bir bütün olarak tasarlanmasını, alt sistemler arasında ilişkinin kurulmasını ve birden çok uygulamada kullanılan verilerin aynı veritabanı içinde ortak kullanılacak biçimde tasarlanmasını öngörür. Tüm uygulamaların gereksinim duyduğu veriler birbirleriyle bütünleşik yapıdadır. Dolayısıyla veri kaynağı tek olarak tasarlanır ve böylece veri tekrarları önlenmiş olur.

Veri güvenliğini sağlar…
Bazı uygulamaların ürettiği verilerin güvenliğini sağlamak önemli bir konudur. Veritabanı kullanıcılarının veritabanının içerdiği tüm bilgilere kolayca erişmesi istenilen bir durum değildir.
Örneğin; pazarlama bölümü uygulamalarında çalışan bir kullanıcının, diğer PERSONEL özlük bilgilerine ulaşması engellenmelidir.
Bunun gibi, her kullanıcının erişebileceği veriler ayrı ayrı tanımlanmalıdır.
Veritabanı sistemleri erişimlerin kısıtlanması için gelişken olanaklar sunmaktadır. Kullanıcılara veritabanı üzerinde çeşitli yetkiler atanır ve bu yetkiler veritabanı üzerindeki veriler ile birlikte saklanır.

6.Veritabanı Sistemleri

Karmaşık dosya yapıları ve çok sayıda dosya arası ilişki ve kullanıcıların dosyalara erişimi söz konusu olduğunda, geleneksel dosya sisteminin yetersiz kaldığı görülmüştür. Bu sorunu çözmek üzere, veriyi saklama ve veriye erişim konusunda yeni yazılım teknolojilerine yönelme başlamış ve Veri Tabanı Yönetim Sistemleri (VTYS) yaklaşımı ortaya çıkmıştır.
Veri Tabanı Yönetim Sistemleri (VTYS) yaklaşımında veri girişi ve depolanması, veriye erişen uygulama programlarından bağımsızdır. Klasik dosya kullanımında ise, kayıt desenleri ve dosya yapılarında ortaya çıkabilecek en ufak bir değişiklik bile uygulama programlarının değişmesine ve yeniden derlenmesine neden olmaktadır.
Geleneksel dosya sisteminin yetersiz kaldığı durumlardaki sorunu çözmek üzere, veriyi saklama ve veriye erişim konusunda yeni yazılım teknolojilerine yönelme başlamış ve Veritabanı Yönetim Sistemleri (VTYS) yaklaşımı ortaya çıkmıştır.


Veritabanı yönetim sistemleri, veri yönetiminde karşılaşılan problemlerin çoğunu çözer. Bu sistemler, iş (business), araştırma (research) ve yönetim (administration) alanındaki veri yönetimini içeren hemen hemen bütün modern düzenlemelerde kullanılmaktadır.
Veritabanı sistemleri bilgisayar sistemlerinin önemli bir bileşeni olarak değerlendirilir.
Veritabanı yönetim sistemleri (VTYS), birbirleriyle ilişkili veri ve programlar topluluğundan oluşmaktadır.
Veri topluluğu bir veritabanı olarak değerlendirilir.
Veritabanı bir kuruluşa ilişkin bilgilerin yer aldığı ortamdır.
Veritabanı sistemleri, veri kümelerinin düzenli biçimde tutulduğu ve bu verilerin çeşitli yazılımlar aracılığıyla yönetildiği ortamlardır.

5.Hesaba Dayalı Dosyalar

Bir diğer doğrudan erişimli dosya türü hesaba dayalı dosyalar (hashed files) olarak bilinir.
Bu tür dosyalar, indeksli dosyalar gibi ayrı bir indeksin tutulmasını gerektirmez.

Dosyanın herhangi bir kaydına doğrudan doğruya erişebilmek için bir hesaplama algoritması kullanır.


4.İndeksli Dosyalar

Sıralı dosyalarda tüm kayıtların art arda gelmesi gerekiyordu. Bu soruna çözüm bulmak amacıyla doğrudan erişimli dosyalar kullanılır. Bu tür dosyalarda, her bir arama işlemi dosyanın başından itibaren yapılmaz. Belirlenen kayıtlara doğrudan erişilerek üzerinde işlem yapılır.
Doğrudan erişimli dosyaların en tanınmışı, indeksli dosyalar olarak bilinir. İndeksli dosyalar, veri dosyasından ayrı olarak bir indeks dosyasının oluşturulması ile birlikte hazırlanır.
Bir dosya için oluşturulan indeks; söz konusu dosyanın anahtarları ile bu anahtarların disk üzerinde bulunduğu adresi içerir.
Anahtar alan, erişimde kullanılmak üzere seçilen alan olarak değerlendirilir.
Örneğin; öğrenci dosyasında, öğrenci numarasını içeren alanının indeks alanı olarak tasarlandığını varsayalım. Herhangi bir öğrencinin bilgilerine ulaşmak söz konusu olduğunda; bu numara önce indeks üzerinde aranılarak bulunur ve söz konusu kayıta ilişkin adres bilgisi elde edilerek, bu adrese doğrudan erişilir.
Hatırlatma: İndeksli dosyalarda önce indeks dosyasından bir kayıt okunur. Bu kayıt veri dosyasının ilgili satırına ait adresi içerir. Bu adres ile ilgili kayıt satırına ulaşılır.


3.Sıralı Dosyalar


Klasik bilgisayar dosyaları birbirinden bağımsız; muhasebe, stok, pazarlama, üretim ve diğer uygulamalarda kullanılmak üzere hazırlanır. Bu dosyalar, sıralı ya da doğrudan erişim yöntemleri kullanılarak işlenir. Sıralı erişimde, dosyanın tüm kayıtları tek tek taranarak istenilen kayıtlara ulaşılır. Doğrudan erişim yönteminde ise, kayıtlar tek tek sırayla okutulmaz, istenilen kayıta doğrudan erişerek işlenir.
Sıralı dosyalar, bir başka deyişle ardışık dosyalar, içerdiği kayıtlara birinci kayıttan başlamak üzere sırayla erişim yapmak üzere tasarlanmış dosyalardır. Bu tür dosyaların kayıtlarına ardışık olarak erişilebilmesine karşılık, kayıtlar fiziksel olarak ardışık olmayabilir.
Sıralı dosyaların her bir kayıtına ardışık olarak erişilmesi bazı durumlarda yararlı olmasına rağmen, bazı uygulamalarda sorunlar yaratır.
Örneğin; okuldaki öğrencilerin tümü listelenecek ise, kayıtlara sırayla erişim söz konusudur. Bu durumda dosyanın sıralı olarak tasarlanmış olması sorun yaratmaz. Ancak sadece birkaç öğrencinin listelenmesi isteniliyorsa, tüm öğrencilerin okunarak böyle bir sonucun elde edilmesi uygun bir yöntem olmayacaktır. Söz konusu öğrencilere doğrudan erişilmesi en uygun yoldur.

2.Kayıt ve Alan

Dosyalar kendi içinde kayıtlara bölünmüştür. Örneğin bir sınıftaki öğrenci listesini göz önüne alalım. Bu liste çok sayıda veri içerebilir. O halde, listenin ana bellekte tutulması söz konusu olamaz. Ana bellekte tutulduğu takdirde, bilgisayarın kapatılması durumunda bu bilgiler yok olacaktır. O halde bu verilerin kalıcı bir ortamda, örneğin sabit disk üzerinde yer alması gerekecektir. Disk üzerinde tutulan bu bilgiler, yeni öğrenci eklendiğinde büyüyecek veya çıkarıldığında küçülecektir. Ayrıca zaman zaman içeriği değişecektir. Bu listedeki her bir öğrenci bilgisi bir mantıksal kayıt oluşturur. Her kayıt da farklı bilgiler içerebilir. Örneğin; öğrencinin adı, baba adı, doğduğu yer vb. gibi bilgileri içerebilir. Sayılan bu bilgilerin her birine alan (field) adını veriyoruz.

1.Klasik Dosya Yapıları

Bilgisayarların ilk ortaya çıktığından bu yana hem donanım hem de yazılım alanında pek çok değişim ortaya çıkmıştır. Doğal olarak, bu değişim, kuruluşların ve kişilerin gereksinimlerine daha iyi cevap verebilmek amacıyla ortaya çıkmaktadır.
Bilişim teknolojilerindeki gelişme ile birlikte çoğu kuruluşta eskiye oranla çok daha fazla veri üretilmeye başlanmıştır. Söz konusu veriler, kuruluşların normal günlük işlemlerinde kullanıldığı gibi üst düzey karar vericiler tarafından da yoğun biçimde talep edilmektedir. Özellikle üst düzey yöneticilerin, yönetimsel anlamda doğru kararlar alabilmeleri için ham verilerden türemiş iyi bilgilere ihtiyacı vardır.
Kuruluşlar kendi bünyesindeki tüm verileri bilgisayar ortamına aktarmaya başladıklarından, bunun sonucu olarak  geleneksel veri saklama ve işleme tekniklerinin artık yetersiz kaldığı gözlemlenmiştir. Bu noktada veritabanı kavramı devreye girmiştir. Veri, bir veritabanında depolandığında etkin bir biçimde yönetilmektedir. Veritabanları, bilgisayar dosya sistemlerinden geliştirilmiştir. Bu noktada dosya sistemi özelliklerinin anlaşılması önemlidir. En basit anlamda veri, işlenmemiş ham bilgilerdir. Bilgi, verinin belli bir anlam ifade edecek şekilde düzenlenmiş halidir.
Hem donanım hem de yazılım alanında pek çok değişim ortaya çıkmıştır. Bu değişim, kuruluşların ve kişilerin gereksinimlerine daha iyi cevap verebilmek amacıyla ortaya çıkmaktadır.
Pek çok kuruluşta eskiye oranla çok daha fazla veri üretildiğinden, geleneksel veri saklama ve işleme tekniklerinin yetersiz kaldığı gözlemlenmiştir.
Veri saklama birimlerinde depolanan veri topluluklarına “dosya” (file) denir.

Kuruluşların muhasebe, satış, üretim, stok ve diğer tüm faaliyetlerinde üretilen veri hem güncel işlerin yürütülmesi hem de yöneticilere alacağı kararlarda destek sağlamak üzere, belirli yapılarda ayrı dosyalar biçiminde depolanabilir. Bu söylediğimiz geleneksel, yani klasik dosya sistemlerini kullanan kuruluşlar için geçerlidir. Veritabanı sistemlerinde ise veriler daha farklı biçimde, tablolar biçiminde tanımlanır.
Aşağıda basit bir klasik dosya sistemi görülmektedir.




21 Kasım 2016 Pazartesi

Örnek-3: Komut Satırından Girilen 2 Sayının Toplamı



Ya da Windows işletim sistemi için DOS komutu satırına geçilir ve ilgili exe uygulaması bulunarak aşağıdaki gibi program çalıştırılabilir:









Örnek-2: n Tane Sayının En Küçüğünü Bulan Fonksiyon

Öyle bir fonksiyon yazalım ki istediğimiz kadar sayıyı fonksiyona girdi (argüman) olarak verebilelim ve geriye değer olarak bu sayılardan en küçüğünü dönsün.


main() Fonksiyonuna Parametre Aktarımı
Ana programa yani main() fonksiyonuna parametre aktarımı, derlenmiş (çalıştırılabilir) bir program komut satırından (işletim sistemi ortamından) çalıştırılacağı zaman yapılır.
Parametre aktarımı, programın adı yazılıp bir boşluk bırakıldıktan hemen sonra yapılır.
Parametreler, komut satırından sayısal olarak girilse bile program içinde karakter topluluğu (string) olarak gelir.
Bu durumda, bu ifadeleri sayısal değerlere çeviren (atoi(), atol(), atof() gibi) fonksiyonlar kullanılır.


          int main(arguman_sayısı, arguman_vektörü)
          int  arguman_sayısı;
          char *arguman_vektörü[];
          {
    …..
             if(arguman_sayısı < ...){
                printf("Eksik parametre !\n");
                exit(1);
             }
             if(arguman_sayısı > ...){
                printf("Cok fazla parametre !\n");
                exit(1);
             }
             .
             ... arguman_vektörü[0] ... /* 1. eleman program adı  */
             ... arguman_vektörü[1] ... /* 2. eleman 1. parametre */
           }

Örnek-1: n Tane Sayının Toplamı

Öyle bir fonksiyon yazalım ki istediğimiz kadar sayıyı fonksiyona girdi (argüman) olarak verebilelim ve sonucunda bu sayıları toplasın.
Kaç sayı olacak? – 3 sayı? – 5 sayı ?
Normalde bu bilgi önemli mi?
Cevap: Evet
Ancak Esnek argümanlı fonksiyon ile argüman sayısı önemsiz hale gelecek.



Esnek Argümanlı Fonksiyonlar ve main() Fonksiyonuna Parametre Aktarımı

Aşağıdaki gibi üçüncü dereceden bir polinomu ele alalım:

P(x) = a + bx + cx2 + dx3

a, b, c, d katsayıları gerçel sayı sabitleridir.

x ise gerçel sayı türündeki bir değişkendir.

Bu polinomu temsil eden basit bir fonksiyonu nasıl tanımlarız?


P(x) = a + bx + cx2 + dx3

float p(float x, float a, float b, float c, float d)
{
    float p = a + b*x + c*x*x + d*x*x*x;
    return p;
}



Buna göre, x = 1.7'de,
        P(x) = 1 - 2x
değerini hesaplamak için bu fonksiyon aşağıdaki gibi çağırılmalıdır:

    sonuc = p(1.7, 1.0, -2.0, 0.0, 0.0);

Burada, kullanılmayan katsayılar için 0.0 değeri mutlaka fonksiyona geçirilmelidir.


Kullanılmayan argümanlar geçirilmeden de fonksiyonu çağırmak mümkündür.

C Programlama dili, kullanıcılarına argümanları esnek olarak geçirme imkanı verir.

Bunun anlamı, belli kurallar sağlandığında, p() fonksiyonunun aşağıdaki gibi çağrılabilmesidir:

           /*  x    a     b */
    sonuc = p(1.7, 1.0, -2.0);



Esnek argümanlar için 2 temel kural vardır:
Esnek argüman kullanımı isteğe bağlıdır.
Esnek argümanları oluşturan küme ardışık olarak listeye eklenmelidir.
Bu türden argümanlar, aşağıdaki gibi, fonksiyonun parametre listesi kısmında ... (3 nokta) ile belirtilir.

      double p(double x, int n, ...)
      {

      }



Esnek argümanlı fonksiyon tanımlaması yapabilmek için stdarg.h kütüphanesinde üç tane makro fonksiyon tanımlanmıştır.

İki Kelimeyi Birleştiren C Programı

Soru-3: Kullanıcı tarafından klavyeden girilen iki kelimeyi birleştiren bir C programı yazınız. İki kelimeyi birleştirmek için aşağıdaki fonksiyon prototipini dikkate alınız.

void KelimeBirlestir (char c1[], char c2[])



Bir Sayının Üssünü Hesaplayan C Programı

Soru-2:Aşağıdaki fonksiyon prototipini kullanarak bir sayının üssünü hesaplayan C programını yazınız. Sayının kendisi ve üssü klavyeden girilecektir.

int us (int sayi, int ussu)



İç İçe Toplam Seri Hesaplama





Örnek-7: Dizinin Fonksiyonda Kullanılması


Örnek-6: Yinelemeli Fonksiyon Kullanarak Yapılan Faktöriyel Hesabı


Örnek-5: void Fonksiyon Örneği


Örnek-4: Fonksiyon geri değer dönüşü ve prototip kullanımı


Örnek-3: İç içe birden fazla fonksiyon çağırımı


Örnek-2: Fonksiyon Çağırımı ve Kod Akışı


Örnek-1: İki Sayının Toplamı

Fonksiyon tipi:         int
Fonksiyon adı:         topla
Parametreler:         x ve y
Geri dönüş değeri:        x+y



Tavsiyeler

Birden fazla fonksiyon kullanılan programlarda, main fonksiyonu programın esas görevini yerine getiren fonksiyonların çağırıcısı olarak kullanılmalıdır.
Her fonksiyon, iyi olarak tanımlanmış tek bir işi yapacak şekilde sınırlandırılmalıdır ve fonksiyon ismi, fonksiyonun görevini etkili bir biçimde açıklamalıdır. Bu, özetlemeyi ve yazılımın yeniden kullanılabilirliğini sağlatır.
Eğer fonksiyonun görevini açıklayacak etkili bir isim bulamıyorsanız muhtemelen yazdığınız fonksiyon birden fazla görevi yerine getirmeye çalışmaktadır. Bu tarzda fonksiyonları daha küçük fonksiyonlara bölmek en iyi yoldur.
Bir fonksiyon genellikle bir sayfadan daha uzun olmamalıdır. Küçük fonksiyonlar yazılımın yeniden kullanılabilmesini sağlatır.
Programlar, küçük fonksiyonların bir araya getirilmesiyle yazılmalıdır. Bu, programların daha kolay yazılması, değiştirilmesi ve hatalarının giderilmesini sağlar.
Çok fazla sayıda parametreye ihtiyaç duyan fonksiyonlar birden fazla görevi yerine getiriyor olabilir. Böyle fonksiyonları ayrı görevleri gerçekleştiren daha küçük fonksiyonlara bölmek gerekir. Fonksiyonun başlığı mümkünse bir satıra sığmalıdır.



Dizilerin Fonksiyonlarda Kullanılması

Diziler de sıradan değişkenler gibi bir fonksiyona parametre olarak aktarılabilirler.
Fakat, aktarma kuralı biraz farklıdır.

Her zaman dizinin yanında
boyutunun da bilinmesi gereklidir !!!

Yineleme mi Tekrar mı?

Tekrar ve yinelemenin ikisi de döngü içerir.
Tekrar özellikle döngü yapısını kullanırken, yineleme döngüyü fonksiyon çağrılarının tekrarında kullanır.
Tekrar ve yinelemenin ikisi de bir sonlandırma testi içerirler.
Yineleme temel bir durumla karşılaşıldığında, tekrar ise döngü devam koşulu yanlış hale geldiğinde sona erer.
Yineleme bir çok negatif özelliğe sahiptir.
Yineleme, mekanizmayı sürekli çağırarak fonksiyon çağrılarının artmasına sebep olur. Bu, işlemci zamanı ve hafızada fazladan yük demektir.
Her yineleme çağrısı, fonksiyonun başka bir kopyasının oluşmasına sebep olur, bu da hafızayı fazladan işgal etmek demektir.
Tekrar, fonksiyonların sürekli olarak çağrılması ve fazladan hafıza kullanılması engellenir.
Yinelemeli olarak çözülen her problem tekrarlı bir biçimde çözülebilir. Yineleme yaklaşımı genelde problemi daha iyi yansıttığı ve daha kolay anlaşılan ve hataları kolay ayıklanan programlar yazılmasını sağlattığı için, tekrar yaklaşımına göre tercih edilebilir.
Yinelemeli çözümleri seçmenin başka bir sebebi de tekrarlı çözümün kolaylıkla bulunamayışıdır.

Fonksiyonların Yinelemesi – Kendi Kendilerini Çağırması (Recursive Function)

Bazı problem tipleri için fonksiyonların kendi kendilerini çağırması kullanışlı olabilir.
Bir yineleme fonksiyonu (recursive function), kendi kendini doğrudan ya da bir başka fonksiyon içinden çağıran fonksiyondur.
Yineleme fonksiyonu, bir problemi çözmek için çağrılır.
Bu fonksiyon, yalnızca en basit durumu ya da temel durum olarak adlandırılan durumu nasıl çözeceğini bilmektedir.
Eğer fonksiyon temel bir durumla çağrılırsa,  fonksiyon bir sonuç geri döndürür.

Yinelemeyi mümkün kılmak için sonraki parça orijinal probleme benzemelidir, fakat orijinal problemin daha basit ya da daha küçük bir versiyonu olmalıdır.
Yineleme için verilebilecek en güzel örnek popüler bir matematik konusu olan Negatif olmayan bir n tamsayısının faktöriyelinin hesaplanmasıdır.
Örnek:
5!=5*4*3*2*1
5!=5*(4*3*2*1)
5!=5*(4!)

Fonksiyon Kullanım Hataları

Fonksiyon tanımlamalarında geri dönüş değerini unutmak.
Geri dönüş tipi void olarak bildirilmiş bir fonksiyonun bir değer geri döndürmesi bir yazım hatasıdır.
Aynı tipte fonksiyon parametrelerini double x, double y yerine double x, y olarak bildirmek. double x, y biçiminde parametre bildirmek, y parametresinin tipinin int olmasına sebep olur. Çünkü belirtilmeyen parametre tipi otomatik olarak int tipinde varsayılır.
Parametre listesini yazdığımız parantezlerin dışına noktalı virgül koymak yazım hatasıdır.
Bir fonksiyon parametresini daha sonradan fonksiyon içinde yerel bir değişken olarak kullanmak bir yazım hatasıdır.
Bir fonksiyon içinde başka bir fonksiyon tanımlamak yazım hatasıdır.
Fonksiyon prototipinin sonuna noktalı virgül koymamak bir yazım hatasıdır.

void Fonksiyonlar

Bir fonksiyonun her zaman geri dönüş değerinin olması gerekmez.
Bu durumda return deyimi kullanılmayabilir. Eğer bu anahtar kelime yoksa, fonksiyon ana bloğu bitince kendiliğinden sonlanır.
Böyle fonksiyonların tipi void (boş, hükümsüz) olarak belirtilmelidir.
Bu tip fonksiyonlar başka bir yerde kullanılırken, herhangi bir değişkene atanması söz konusu değildir, çünkü geri dönüş değeri yoktur. Ancak, void fonksiyonlara parametre aktarımı yapmak mümkündür.

Fonksiyon Prototip Kullanımı

Bir fonksiyon prototipi, derleyiciye fonksiyon tarafından döndürülen verinin tipini, fonksiyonun almayı beklediği parametre sayısını, parametrelerin tiplerini ve parametrelerin sırasını bildirir.
Derleyici, fonksiyonların ilk hallerini (prototiplerini) fonksiyon çağrılarını onaylamakta kullanır.
Fonksiyon prototipinin unutulması, fonksiyonun geri dönüş tipinin int olmadığı durumda ve fonksiyon tanımı fonksiyon çağrısından daha sonra bulunmuyorsa,  yazım hatalarına (syntax error) sebep olur.

Fonksiyon Geri Dönüş Değerleri

Fonksiyon geri dönüş değeri return anahtar sözcüğü kullanılarak gerçekleştirilir.
return anahtar sözcüğünün iki önemli işlevi vardır:
fonksiyonun geri dönüş değerini oluşturur.
fonksiyonu sonlandırır.
return deyiminden sonra bir değişken, işlem, sabit veya başka bir fonksiyon yazılabilir.


Örnekler:
return (a+b/c);       /* parantez kullanmak zorunlu değil */
return 10;             /* değişken kullanmak mecbur değil */
return topla(a, b)/2.0;  /* önce topla fonksiyonu çalışır */
Programın çözüm mantığına göre bir fonksiyon içerisinde birden çok geri dönüş değeri kullanılabilir.
Fakat, ilk karşılaşılan return deyiminden sonra fonksiyon sonlanır ve çağrılan yere bu değer gönderilir.

Parametre ve Argüman

Fonksiyon çağrılırken gönderilen değerlere Argüman denir.
Fonksiyon bildiriminde, fonksiyona girdi olarak, kullanılan değişkenlere Parametre denir.







14 Kasım 2016 Pazartesi

Soru-3: Girilen Bir Cümlenin Kelimelerinin Baş Harflerini Büyük Harf Yapma

100 elemanlı bir karakter dizisi tanımlayınız. Daha sonra bir cümle giriniz.
Cümledeki tüm kelimelerin baş harflerini büyük harfe çeviriniz. Büyük harfe çevirme için toupper() fonksiyonu kullanılacaktır.
Çeviride Türkçe karakterler desteklenmeyecektir.
Son olarak cümlenin çevrilmiş halini ekrana yazdırınız.


Soru-2: Girilen Cümlede Harf Arama ve Yerini Bulma

100 elemanlı bir karakter dizisi tanımlayınız. Daha sonra bir cümle giriniz.
Cümlede aranmak üzere bir harf giriniz.
Cümlede harfi bulursanız, bulduğunuz yerlerin pozisyonlarını farklı bir diziye aktarınız.
Toplam bulunan harf sayısını ve harflerin pozisyonlarını ekrana yazdırınız.


Soru-1: Girilen Cümleyi Tersten Yazdırma


100 elemanlı bir karakter dizisi tanımlayınız.
Daha sonra bir cümle giriniz.
Cümleyi ekrana ters olarak yazdırınız.
İsterseniz farklı bir diziye aktarabilirsiniz veya direk yazdırabilirsiniz.
strrev()  fonksiyonunu kullanmayınız.


Örnek-5: Karakter Dizilerini Karşılaştırmak


Örnek-4: Karakter Dizilerini Kopyalamak


Örnek-3: Girilen Karakter Dizilerini Birleştirmek


Örnek-2: Girilen Karakter Dizisinin Uzunluğunu Bulmak