1 Eylül 2009 Salı
Michigan Üniversitesi Programlama Dökümanları
7 Temmuz 2009 Salı
Değişkenler
Değişken: program verilerinin tutulduğu bellek gözleridir ve bu bellek gözleri programlama dillerinin en temel parçasıdır. Değişkenlerin bir isimleri ve bellekte kapladığı yerin boyutunu belirten türleri vardır.
Değişken isimleri ingiliz alfabesindeki büyük ve küçük harfler, rakamlar ve “_” alt çizgi karakterinden oluşabilir. Fakat rakam ile başlayamaz. Ayrıca değişken isimleri istenilen uzunlukta olabilir fakat program derlendiği sırada sadece ilk 31 karakteri göz önüne alır.
Değişken türleri ise temel olarak 3 çeşittir. Bunlar kayar noktalı sayılar, tam sayılar ve karakterlerdir. Dipnot: karakter değişken türü de bi tam sayı türüdür.(nedenini kendiniz bulun ;))
Değişken Tanımlama
Değişkenler farklı türlerde yani boyutlarda olabilir. Bunlar arasında en yaygın olarak kullanılanı int (integer) türüdür. Bu tür işletim sistemine bağlı olarak, 32bitlik sistemlerde 4 bytelık yer kaplar. Dolayısı ile int türünde bir değişken içersinde
-2,147,483,648 ila 2,147,483,647 arasındaki değerler saklanabilir.
Çünkü; 1byte=8bit olduğundan ve int türü 4byte yer kapladığından 28*28*28*28=4294967296 adet sayı tutulabilir. Bunları yarısı negatif sayılar, yarısı pozitif sayılar olduğu için 4294967296/2=2,147,483,648 Yani 2,147,483,648 tane negatif, 2,147,483,647 tane pozitif. Peki neden pozitifler negatiflerden bir eksik. Onu da siz bulun J |
Bir değişken tanımlanacağı zaman önce türü belirtilir ardından değişkenin ismi verilir ve noktalı virgül ile sonlandırılır.
Şimdi bunu örnek bi program üzerinde görelim.
#include
using namespace std;
int main()
{
int degisken1;
int degisken2;
degisken1=5;
degisken2=degisken1+10;
cout<<”degisken1 = ”<
şimdi açıklamaya main() fonksiyonunun başlangıcından başlıyorum.
öncelikle degisken1 ve degisken2 diye iki farklı int türünde değişken tanımlanmış. Daha sonra degisken1 degiskenine 5 tam sayı degeri atanmış. Daha sonra degisken2 degiskenine degisken1’in degeri artı 10 atanmış. Yani 5+10=15 atanmış.(gördüğünüz gibi degisken icersinde tutulan değerler tam sayı olduğu için normal dört işlemleri de degiskenler üstünde uygulayabiliyoruz.)
daha sonra da önce degisken1’in degeri ve sonra da degisken2’in degeri ekrana yazdırılmış.
**NOT1**=Değişkenleri kullanmadan önce tanımlanız gerektiğini asla unutmayın!
**NOT2**=C++’ın anahtar kelimelerini değişken ismi olarak kullanamazsınız. Anahtar kelime özel anlamı olan önceden tanımlanmış sözcüktür. C++’ta 30’a yakın anahtar kelime vardır. Örn; if,while,class,define bunlar anahtar kelimelerdir. Çünkü daha önce tanımlanmış ve C++ için özel anlamları olan kelimelerdir.
Değer Atama
Hemen hemen bütün programlama dillerinde atamalar “=”karakteri ile yapılır ve sağ taraftaki değer sol taraftaki değişkene yazılır.
Örn: degisken1=5;
Burdaki örnekte 5 sayısal değeri degisken1 adlı değişkene atanmıştır. Diğer bir değişle degisken1 adlı bellek gözüne yazılmıştır.eşitliğin sağ tarafındaki değerin sabit olduğuna dikkat edin! Şayet eşitliğin sağındaki sabit bir değer olmasaydı. Program derleme esnasında hata verecekti.
Şimdi ikinci atama değimine bakalım:
degisken2=degisken1+10;
şimdi bu deyimi göre çoğu kişi şunu diyecek. “hani eşitliğin sağında sadece sabit değerler olurdu. O halde degisken1’in ne işi var orda.” Haklısınız sadece sabit değerler olur sağ tarafta ama kaçırdığınız bi nokta var, bu deyimde degisken1, 10 ile toplanıp atanmıyorki degisken2’ye, degisken1’in icindeki deger 10 ile toplanıp degisken2’ye aktarılıyor. Yani dolayısı ile degisken1 de orda sabit bir degerdir.
**NOT**= Bazı programlama dilleri ve derleyiciler degisken tanımlanırken başlangıç değeri verilmez ise otomatik olarak 0 degerini degiskene atar fakat bu her derleyici ve programlama dilinde böyle değildir ve eğer degiskene başlangıç değeri vermeden 2. Deyimde olduğu gibi bir atama yaparsanız, program derleme esnasında hata verecektir.
DEVAM EDECEK....
25 Haziran 2009 Perşembe
5 Satır C Kodu İle Bios Resetlemesi
#include "stdafx.h"
#include "dos.h"
int main(int argc, char* argv[])
{
unsigned char i;
for (i = 0; i <= 225; i44)
Denemedim ve eğer deneseniz ve sisteme bisey olursa mesuliyet kabul etmem.
24 Haziran 2009 Çarşamba
C++'a Giriş
C++’ın Nesne Tabanlı bir dil olduğunu daha önce söylemiştik. Bu dil C’den türemiş olup yani C’nin özelliklerini kapsamakla birlikte bir çok yeni özelliğe sahiptir ve bu nedenle C ile yazılmış hemen hemen bütün kodlar C++’tada sorunsuz çalışır.
C++’ın asıl çıkış sebebi C’nin Nesne Tabanlı Programlama eksikliği olan Nesneler ve Sınıflardır. Bu yüzden C++’a “Sınıflı C” de denmektedir ve eğer C’yi daha önceden biliyorsanız, C++’a bir adım önde başlıyorsunuz demektir.
C++’ın Program Yapısı
#include using namespace std; int main() { cout<<”Merhaba Dünya”; return 0; } |
Daha önce C ile ilgilenmiş olan arkadaşlar diyecektir ki: “ee bunun C’den farkı ne? Bi cout mu?” işte böyle düşünen arkadaşlara tavsiyem Nesneler ve Sınıflar konusuna kadar beklemeleri ;)
Şimdi bu programı satır satır açıklamaya çalışırsak;
1.Satır #include
C’de ve C++’da “#” karakteri ile başlayan bütün deyimlere “önişlemci deyimleri” denir. Yani program derlenmeden önce derleyici (compiler) öncelikle bu deyimleri işler.
Peki “include” deyimi ne işe yarar? İnclude deyimi adında anlaşılacağı gibi (include=dahil etmek) programa birşey dahil edileceğini belirtir. Demekki program derlenmeden önce programa
Programlama dillerini tasarlayanlar programcıların yükünü hafifletmek amacı ile standart haline gelmiş fonksiyonları daha önceden yazıp kütüphane(library) denen başlık dosyalarının içine gömmüşler. İşte iostream de bu kütüphanelerden biri ve bu kütüphane içersinde standart Girdi/Çıktı Fonksiyonları bulunur ve bu kütüphaneye ait fonksiyonları kullanabilmek için öncelikle bu kütüphaneyi programımıza dahil etmemiz gerekmektedir. (programların genel olarak fonksiyonlardan oluştuğunu hatırlatmaya gerek yok sanırım ;))
2.Satır using namespace std;
Şuan için bu satır çok kafa karıştırıcı olabilir o yüzden bu satıra sonra değinecem.
3.Satır int main()
Programların genel olarak fonksiyonlardan oluştuğunu söylemiştik ve işte bu main fonksiyonu ise programların bel kemiğini oluşturduğu fonksiyondur . Diğer bütün fonksiyonlar bu fonksiyon altında çalışır.
Main’in fonksiyonun adı olduğunu anladık peki şu “int” ne demek ?
Daha önce her fonksiyonun bir görevi (bir geri dönüş)olduğunu söylemiştir, işte bu int fonksiyonun geri göndereceği değerinin türünü belirtir.
Buraya kadar gelmişken değişkenler ve değişken türlerinden kısaca bahsetmemek olmaz.
Değişken: program verilerinin tutulduğu bellek gözlerinin ismidir. Değişkenin türü ise bu bellek gözesinin büyüklüğünü yada boyutunu belirtir.
3. satırın son kısmına geldik. Peki bu int main’in sonunda bulunan ve süs gibi duran parantezler ne işe yarar. Hani biz demiştik ya fonksiyonlar aldığı her mesaja göre farklı bir değer üretir diye. İşte bu parantezlerin içine mesajlarımızı (parametrelerimizi) yazarız. Parantezlerin içi boş kaldığına göre demekki main fonksiyonu her zaman aynı değeri geri gönderir çünkü mesajlar kısmında değişen bisey yok.
4. ve 7. Satırdaki “{ }” karakterleri ise fonksiyonun başlangıç ve bitiş noktasını temsil eder. Buna göre main fonksiyonu 4. Satırdan başlar 7. Satırda biter.
5. Satır cout<<”Merhaba Dünya”;
“cout<<” iostream kütüphanesine ait standart bi çıktı komutudur ve tıknak içerisindeki karakterin hepsini ekrana yazar. Şu haliyle görevi demekki ekrana “Merhaba Dünya” yazmakmış. En sondaki noktalı virgül(;) ise “cout<<” komutunun bittiğini bildirir.
6. Satır return 0;
Not: yazının döküman halini indirmek için lütfen tıklayın.
12 Haziran 2009 Cuma
Programlamaya Giriş 2
Bu kavramı daha önce açıkladık fakat bikez daha açıklamak gerekirse; NTP’nin temel birimi olan nesne veriler ve fonksiyonların tek bir birimde toplanmasıdır.
6 Haziran 2009 Cumartesi
Programlamaya Giriş
Dipnot: Günümüzde bu bölüme artan rağbete rağmen sektördeki profesyonel programcı açığının sürekli artması geleceği parlak bir meslek olduğunun bir göstergesidir ;)
Programlama dilleri programlarımızı oluştururken kullandığımız belli bir söz dizimine(syntax) sahip kodlar bütünüdür. Programlama dilleri temel olarak 2 ana dala ayrılır. Fonksiyonel(Prosdürel) Programlama ve Nesne Tabanlı Programlama.
Fonsiyonel Programlama adından da anlaşılacağı gibi programlamanın fonksiyonlar üzerine kurulduğu bir programlama mantığıdır. Fonksiyonlar kendilerine gönderilen mesaja karşılık bir değer üretirler. Fonksiyonel programlama da atama deyimleri olmasına rağmen verilen bu değerler bir daha değiştirilemez. Bu mantık değişkenlerin istem dışı değişimlerini ve bundan kaynaklanan hataları önlemiş olur. Fonksiyonel Programlamaya F#, MATLAB, Ocaml ve ML örnek verilebilir.
Nesne Tabanlı Programlama ise Fonksiyonel Programlamadan farklı olarak böl ve yönet mantığına dayanır. Bu mantığa göre karmaşık ve çözümü zor problemler çözümü basit ufak parçalara ayrılır ve bu parçaların çözümleri bir araya getirilerek problem çözülür. Nesne Tabanlı Programlanın gün geçtikçe artan en önemli tercih sebeplerinden biri de problemleri gerçek dünya modellemesine uydurulabilmesidir ve Nesne Tabanlı Programlama’ya örnek vermek gerekirse: C++,C#,Java.......vs
Devam Edecek...
1 Haziran 2009 Pazartesi
Algoritmanın Önemi
Peki genel olarak iyi bir algoritmanın özellikleri nelerdir?
•Sonluluk : Programın muhakkak bir sonu olmalı(işletim sistemleri vs istisnadır.)
•Açıklık : Algoritmayı okuyan her kişi için aynı şeyi ifade etmeli, belirsizliğe yer vermemeli.
•Etkinlik : Genel Amaçlı olmalı, diğer algoritmalar içinde kullanılabilmeli.
•Kesinlik : Girilen Aynı değerler için her defasında aynı sonucu vermeli.
Benim algoritma konusunda söyleyeceklerim bunlar fakat daha fazla bilgi için saygıder hocam Rifat Çölkesen’nin “Programalama Sanatı ve Algoritma(yeni başlayanlar için)” veya “Algoritma Geliştirme ve Veri Yapıları(Daha ileri seviye için)” kitabı tavsiye ederim.
Bundan sonraki yazılar Programlama hakkında nacizane bilgilerimi paylaşmaya çalışacam. Sakın kimsenin aklında şu şekilde birşey oluşmasın"sen kimsin ki kime ne öğretiyorsun." Benim amacım tamamen kendimi gelişmek yoksa kimseye bişey öğretmek gibi bi amacım yok.
Bir sonraki yazıda Görüşmek üzere...