Evet gençler kaldığımız yerden devam edelim o zaman. DFC++'ı açalım. DFC++ Sizler de sisteminizi indirmişsiniz. Dolayısıyla ilk projemize başlayacağız. Ben de şimdi DFC++'ı sizinle şurada ekran paylaşımı yaparak ben de paylaşayım.
Şu an DFC++'ı herkes görüyor mu? Evet hocam. Tamam peki. Şimdi gençler ilk projemizi oluşturacağız. Dolayısıyla dosya yeni dedik.
Oradan projeyi seçtik. Dosya yeni proje dedikten sonra biz burada konsol uygulamasını seçeceğiz. Bir dönem boyunca hep konsol projesi yapacağız.
Ama burada tabi başka seçenekler de var. İşte Windows uygulaması, statik kütüphane, dinamik kütüphane veya boş proje gibi. Ben boş gelmesini istemiyorum. Böyle birkaç ne bileyim kodun yerleştirilmiş olduğu bir proje dosyasının hamalinin değil de birkaç satırın yazılmış olduğu kodun gelmesini istiyorum. Dolayısıyla konsol uygulamasını seçtim ve C projesi olduğu için C projesini seçtim.
Eğer siz bunun her zaman C projesi gelmesini istiyorsanız şuradaki işte varsayılan dil olarak ayarla seçeneğini de seçebilirsiniz. Dedim ki proje 01. Projemizin ismi proje 01 oldu. Burayı şimdi kaydedeceğiz.
Bunu sizin için ayırmış olduğum alana şurada kaydedeceğim. Bilgisayar programıma kodlar 2B buraya proje 01 diye bir klasör açtım ve buraya kaydettim. Tamam görmüş olduğunuz gibi burada gençler hazır bazı satırlar geldi. Hemen burada yorum satırımız var.
Bunu size açıklayayım. Koment satırları gençler programınızda neleri yaptınız, neleri yapacaksınız, aslında ne olması gerekiyordu, siz ne yaptınız gibi yorumları daha sonra yani programı şu an ara verip de işte yarın açtığınız zaman, iki gün sonra açtığınız zaman, ne bileyim bir ay sonra açtığınız zaman tekrardan neyi, niçin yaptığınızı kaldığınız yerden hatırlayıp kaldığınız yerden devam edebilmek için yorum satırları yazıyoruz. Veya illa siz için değil. Mesela bir takım içerisinde çalışıyorsunuzdur. Efendim, kodu bir takım şeklinde geliştiriyorsunuzdur.
O takımdaki herkes için bu programda kullanmış olduğunuz mantığı anlatabilmek için, yapacağınız daha eksik kalan işleri için veya tamamladığınız işleri işleri karşı tarafı da yansıtmak amacıyla comment satırlarını kullanıyoruz. Comment satırlarında gençler tek satırlık yorum satırları yazabileceğiniz gibi daha fazla satıra yazılmış yorum satırları da oluşturabilirsiniz. Tek bir satırlık comment yazacağımız zaman iki tane bölü deyip işte bu tek satırlık bir yorum bilgisidir.
Diyelim mesela. Eğer bunu birden fazla satıra yayacaksak arkadaşlar bölü yıldızla başlayıp yıldız bölüyle bitireceğiz ve bu iki etiket arasında arzu ettiğiniz satırda yorum yazabileceksiniz. Diyelim ki burası da birden fazla satıra yerleşmiş yorum alanıdır diyebiliriz.
Tamam. Komentleri genellikle bunun için kullanıyoruz arkadaşlar. Hem kendimize hem de belki de başkalarına.
programla ilgili bilgi vermek için kullanıyoruz şimdi burada stdaio kütüphanesi var bir önceki dersinde söylediğim gibi printf kullanacağız birazdan Dolayısıyla stdaio kütüphanesi kutup dursun ama stdlib siliyorum ben stdlib kütüphanesini sildim ama birazdan başka bir kod yerleştireceğim ve stdlib'i o zaman kullanmamız gerekecek Şimdilik sildim yorumlarda siliyorum kalabalık yapmasın herhalde yorumlar anlaşıldı Gençler buradaki main fonksiyonu şu an parametreli bir fonksiyon. Bu parametreleri de bildiğiniz gibi işletim sisteminden bekliyoruz ama şu an öyle olmasına gerek yok. Dolayısıyla ben main fonksiyonumu argüman listesine void yazarak parametresi sahile getirdim. Peki şimdi artık ekrana çıktı vermek istediğimiz için printf komutunu kullanacağız.
Diyeceğiz ki printf işte ne yazalım RGS Üniversitesi. Peki RGS Üniversitesi dedik noktalı virgülümüzü de koyduk. Her bir komut bittikten sonra noktalı virgülü unutmuyoruz arkadaşlar. Pardon.
Ve şu an programımız hazır. Bunu derleyeceğiz. Bunu derlerken peki ne yapacağız? Bakın şimdi gençler.
Mouse pointer'ın olduğu yeri görüyor musunuz arkadaşlar? Mouse pointer'ın olduğu yer şu an yukarıda compile yazıyor. F9.
Herkes görüyor değil mi? Evet hocam. Tamam.
Bu yazmış olduğumuz kodu derlemek için kullanacağımız uygulama. Hemen onun sağındaki. Yazmış olduğumuz kodu derlemek için.
Yazmış olduğumuz kodu, derlediğimiz kodu... çalıştırmak için kullanacağımız komut run komutu. Hemen onun sağındaki arkadaşlar az önce iki parça da yapmıştık bu işi. Önce derlemiştik.
Sonra çalıştırmıştık. Bu ise compile and run. Bu da aynı anda derleyip hemen ardından çalıştırmak için kullanacağımız komut. Bunlara fonksiyon tuşlarıyla da ulaşabiliyorsunuz. İşte buna F9, buna F10, buna F11 ile ulaşabiliyorsunuz.
Bir de bunların en sağında rebuild all var. Bu da arkadaşlar eğer birden fazla proje üzerinde çalışıyorsanız bunların hepsinin birden derlenmesini sağlayan komut bu F9 F10 F11 F12 tuşları devsi Plus basın başka versiyonlarında ve başka uygulamalarda Örneğin burada F9 F10 F11 dir ama örneğin kol blokta farklı olabilir arkadaşlar Dolayısıyla bundan emin olmak için şurada Mesela devsi Plus bu iş yapacağınız gibi ekseküt menüsü ekseküt menüsünde de işte kompilen Run'ın, Compile'in Run'ın burada kısa yol tuşları yazıyor, neler olduğu yazıyor. Veya kendilerini de buradan ne yapabilirsiniz?
Çalıştırabilirsiniz. Bu komutları buradan da yürütebilirsiniz. Ama dediğim gibi başka bir DevSplas Plus versiyonunda, örneğin F9 olmayabilir, F10 olmayabilir de, efendim, F8 olabilir.
Örnek vererek söylüyorum. Buna dikkat etmekte fayda var. Veya CodeBlocks'ta bunlar yine farklı ikonlarda ve farklı fonksiyon tuşlarıyla, farklı tuş takımlarla erişilebiliyor olabilir. Peki, gelelim derlemeye.
Şimdi compile edeceğiz. Compile etmek için bu tuşu kullanıyorum şu an. İkonu kullanıyorum. Compile ettim ve nereye kaydedeceğimi, kaynak dosyasını nereye kaydedeceğimi soruyor. Az önce oluşturduğum klasöre kaydediyorum.
Şu an derledi arkadaşlar. Bakın eğer hata olmuş olsaydı bana söyleyecekti. Ki hata olsaydı zaten compile log değil de compiler segmesi açılacaktı.
Birazdan göreceğiz. Compile log değil de compiler segmesi açılacaktı. Ama şu an...
derlediğimizde herhangi bir hatanın olmadığını, herhangi bir uyarının olmadığını, derlediğimiz dosyanın isminin hangi klasörde ve nerede olduğunu bize gösteriyor. Daha sonra dosyamızın boyutunu ve ne kadar sürede derlendiğini bize ifade etti. Ama eğer diyelim ki hata etmiş olsaydık, örneğin şurada noktalı virgül olması gerekiyordu ama unuttuk, gözümüzden kaçtı. Derlediğimiz zaman bakın hemen diyor ki bu sefer compile log sekmesi açılmadı da, Compiler sekmesi açıldı. Burada diyor ki return'den önce noktalı virgül bekleniyor diyor.
Dolayısıyla bakıyoruz. Demek ki bir noktalı virgül hatamız var. Ha şurası hemen düzelttik. Peki başka bir hatamız da mesela parantezi unutmuşum ben.
Bakın bu sefer de diyor ki parantez bekleniyor ama yok. Dolayısıyla şuraya hemen parantezimizi yerleştiriyoruz. Dolayısıyla gençler eğer siz de yazmış olduğunuz kodlarda hatayla karşılaşacak olursanız hemen loglara veya compiler'ın size vermiş olduğu hata mesajlarına bakıyorsunuz. Neyin ne olduğunu anlayarak hatanızı düzeltiyorsunuz. Bu ilk başta tabii böyle hemen pat diye olabilecek bir şey değil.
Ama arkadaşlar tecrübe kazandıkça hangi hatanın neden kaynaklandığını siz de rahatlıkla görebileceksiniz. Peki şu an ben compile ettim ama kodumu çalıştırmak istiyorum. Compile ettiğim kodu çalıştırmak için run dedik.
İşte Erciyes Üniversitesi yazısı karşımıza çıktı arkadaşlar. Dolayısıyla programımızda herhangi bir yazım hatası olmadığı için programımız çalıştı. Ama dediğim gibi bu mantıksal bir hata olup olmadığı manasına gelmez gençler.
Mantıksal hatanın kontrolü tamamen bizde. Bizim yapmamız gerekiyor. Peki şimdi gelelim stdlib meselesine. Şimdi dikkat edecek olursanız ki ben gelinlikle compile and run'ı kullanıyorum arkadaşlar.
Yani f11'i kullanıyorum. Yani hem her seferinde değerliyor hem de çalıştırıyor. Şimdi diyelim ki şu az önce ekrana gelen pencere. Arkadaşlar bazı geliştirme ortamlarında idelerde veya Dev C++'ın farklı versiyonlarında hemen yazı çıkıyor kapanıyor. Çünkü normalde de öyle olması lazım aslında.
Çünkü biz burada hani çıkan pencereyi beklet falan gibi herhangi bir kullanım yapmadık. Dolayısıyla gençler aslında şu an buradaki bekletmeyi Dev C++ 5.11'in kendisi yapıyor arkadaşlar. Başka editörlerde eğer... Böyle bir durumla karşılaşırsanız yani pencere birdenbire gelir ve giderse yapacağınız şey şu.
Şuraya std.lib kütüphanesini ekleyeceksiniz. std.lib.h Ve şuraya da diyeceksiniz ki system komutunun pause özelliğini kullanacaksınız. Bu arkadaşlar şurada bir de satır başı ekleyeyim ben.
Bu arada bölü n imleci bir sonraki satırın başına götürür. Bakın önce yazmadığım zaman da göstereyim size. Şimdi system pause dediğimiz zaman. Presenikade continue diye bir mesaj gelecek Presenikade continue diye bir mesaj gelip bekleyecek bizim bir tuşa basmamızı bekleyecek Dolayısıyla derleyip çalıştırıyorum derleyip çalıştırdım Bakın Erciyes Üniversitesi yazdı ardından press any key de continue dedi ve bekliyor. Neyi?
Benim bir tuşa basmamı bekliyor. Dolayısıyla eğer pencere gidecek olsaydı gitmiyor. Tamam mı gençler? Şuradaki yazılar birbirinden ayırmak için imleci satır başına beslemek için bölü n dedim arkadaşlar. Slash n dedim.
Slash n dediğim zaman imleç otomatikman bir sonraki satırın başına gelir arkadaşlar. Dolayısıyla çalıştırdığım zaman bakın çıktığının şöyle olduğunu göreceksiniz. Bu sefer artık Erciyes Üniversitesi yazısı Presenikade Continuum'dan ayrıldı. Neden? Çünkü Erciyes Üniversitesi'nin sonundaki imleç slash n ile birlikte nereye taşınmış oldu?
Presenikade Continuum'un başına daha sonra da yazdığı zaman imleç ilerledi, ilerledi, ilerledi ve Presenikade Continuum'un sonuna geldi. Tuşladığımız zaman programımız sonlandı. İşte dediğim gibi eğer yazmış olduğunuz kod ekrana böyle birdenbire yazı, birdenbire... Geliyor ve daha sonra kapanıyorsa yapacağınız şey stdlib kütüphanesini kullanmak ve stdlib kütüphanesinde system.pause fonksiyonunu kullanmak arkadaşlar. Sistem komutunu kullanmak istiyorsanız stdlib kütüphanesini yüklemelisiniz.
Tamam gençler. Anlaşıldı mı? Hocam geç komutunu kullanabilir miyiz yine burada?
Geç cihaz kullanabilirsiniz. Geç cihaz içinde con.io kütüphanesini kullanmanız gerekir. Tamam. Tamamdır hocam. Peki.
Dolayısıyla system.pause. Satırını ben sildim. Çünkü burada gerekmiyor. STD'li bir de sildim. Peki.
O zaman şimdi gençler sizden rica ediyorum. Hadi bakalım. Herkes yazsın. İlk kodunuzu yazın bakalım. Ekrana Erciyes Üniversitesi yazan programımızı oluşturalım.
Evet şu an herkesin yazması için bekliyorum ben. Hocam bir şey sorabilir miyim? Buyurun.
Hocam sizin şu an yazdığınız bu projeyi hangi uzantıyla kaydettiniz? C. Hocam aynı işlemleri ben de yaptım. Şu an.dev,.c,.exe olarak 3 noktaya karşılaştım. Öyle olması gerekiyor zaten.
Tamam hocam. Bakın ben de şu an size klasörün içerisini göstereyim. Görüyorsunuz değil mi şu an? Aynen hocam.
Şu proje dev dosyası konfigürasyon bilgilerini içeriyor. Main o obje dosyası. C kaynak dosyası. Az önce sizin yazmış olduğunuz.
Bu da değerlenmiş hali. Tamam. Tamam hocam.
Gençler tamam mı? Şu an hata alan arkadaşımız var mı? Hata alan arkadaşımız yok. Var mı?
Durun bakalım bir chat penceresinde. Hocam slash n'de bir sorun yaşadım. Slash n'e bastığımda boşluk atmadı. Garip bir şekilde.
Bölü n mi yaptın? Slash n mi yaptın acaba? Doğru.
Tamam hocam tamam. Peki. Peki şimdi arkadaşlar mesela diyelim ki ben şu şekilde yazdım. Bakın bakalım artık herkes bıraksın. Evet.
Ne tür bir çıktı görmek göreceğimizi düşünüyorsunuz? İki satıra yayılmış Erciyes Üniversitesi göreceğiz herhalde. Doğru mu?
İki tane plant yapıyoruz. Öyle mi? Peş peşe olmaz mı? Peş peşe mi olur yoksa iki ayrı satırda mı olur?
Aynı satırda olacak. Aynı satırda olacak. Peki aynı satırda olacak. Arkadaşlarımız doğru söylüyor. Arkadaşlar burada birden fazla printf olsa da farklı farklı satırlarda olsa da arkadaşlar bu tek bir Erciyes Üniversitesi şeklinde tek bir satıra çıkacaktır.
Çıktığımız. Neden? Çünkü siz satır başı beslemediğiniz müddetçe yani imleci bir sonraki satırın başına almadığınız müddetçe Eee Ne kadar printf olursa olsun bunlar hep birbirlerinin sonuna eklenecektir. Dolayısıyla bunu da böylelikle size hatırlatmış olalım. Demek ki çıktıların başka satırlarda gelebilmesi için arkadaşlar ne yapacağız?
Slash n kullanıyoruz dedik. Tamam. Tamam mı gençler?
Tamam hocam. Tamamdır hocam. Peki. Dolayısıyla ilk programımızı yapmış olduk. Şimdi başka bir program daha yapalım.
Basit bir şey yapalım. Diyelim ki artık değişken tanımlamaya başlıyoruz. int a b c Şimdi kullanıcıya diyelim ki a sayısının değerine giriniz.
Peki. A sayısı tam sayı olduğu için şuradaki int diyor ki A, B, C değişkenleri tam sayılardır. Dolayısıyla tam sayı olduğu için %D ile okuyacağım.
Bunun detaylarını size bir sonraki haftada anlatacağım için veya sonraki haftalarda anlatacağım için şu an üzerinde durmuyorum gençler. Şimdi diyelim ki B sayısının değerini giriniz. Sıkan F. Diyelim ki yine %D.
Amper sant B. B değişkeninin değerini öğrendik. Şimdi diyelim ki C eşittir. A artı B. Dolayısıyla A artı B'yi topla.
Bunu C'ye eşitle dedik. Ve şimdi şunu yazalım. Yüzde D artı. Yüzde D eşittir.
Yüzde D'dir. Diyelim ve imleci iki satır sona götürelim şöyle. Tamam.
Şimdi ilk yüzde D cevabını A değişkeninden alsın. İkinci yüzde D cevabını B'den alsın. Üçüncü yüzde D cevabını C'den alsın.
Ekrana tam sayılar yazdırmak istediğimiz için yüzde D yani desimal. Şu %D cevabını A'dan alacak. Şu %D ekrana yazarken cevabını B'den alacak.
Şu %D cevabını C'den alacak gençler. Bakalım herhangi bir hatamız yoksa programımızın denilip çalışması lazım. Peki programımız çalıştı. Diyor ki A sayısının değerini giriniz. İşte 4. B sayısının değerini giriniz.
1, 4 artı 1 eşittir 5'tir diyor programımız. Dolayısıyla ne yaptı? Kullanıcıdan A değişkeninin cevabını istedi. Daha sonra B değişkeninin cevabını.
istedi. Daha doğrusu değerini istedi. Bunları topladı ve c'ye eşitledi. Ve ekrana yazdı. Peki gençler.
Burada scanner şunu yapıyor. İmlecin olduğu yerden hani a sayısının değerini giriniz dedi. Şimdi imleç şurada yanıp yanıp sönüyor.
Olduğu yerde siz kaç değerini girerseniz onu okuyacak. Yani ben 23 değerini girdim. 23 değerini enter'ı tuşladığım zaman a sayısını atayacak. Peki daha sonra işte B sayısının değerini girinizdir. İmlecin yine yanıp yanıp söndüğü yerde yani konsoldan okuma yapıyor.
23 ve eksi 23'ü de B sayısına atadı. Daha sonra ikisini topladığı toplam sonucunda C'ye atadı ve ekrana yazdı. Tamam.
Evet şimdi size zahmet herkes bu kodu girsin gençler. Bekliyorum ben sizi şimdi. Evet başladınız mı kodlamaya?
Başladık hocam. Evet hadi bakalım. Hocam üstten iki türe var ya şu an. Scan F'te.
Neresi? Scan F'te üçüncü satır. Üçüncü satır peki? Pardon altıncı satır.
Yüzde D olan. Evet. Orada nasıl kapatıyoruz tırnak işaretini? Tekrar tırnağa tıklıyorsunuz. Ben iki kez tırnağa tıklayınca direkt en baştan ve en sağdan alıyor.
Kapatmıyor. Şimdi şöyle yaptığın zaman otomatikman kapanmasını da kendisi yapıyor. Bendeki.
Sizdeki nasıl bilmiyorum. Bir tane yaptığım zaman kendisi kapatacağını da yazıyor. Sizde öyle değil mi?
Kendi kendine kapatmıyor bende. Direkt şu yukarıdaki asayiş. Bende kapatıyor hocam. Orada bir eksiklik vardır. Dolayısıyla kapatacağını algılayamadığı için yapmıyordur.
Kodunuza dikkat edin. Tamam teşekkürler. İzlediğiniz Evet tamamlayan var mı gençler? Var hocam.
Tamamladım hocam oldu. Hata var mı? Hata alıyor muyuz?
Hata yok mu? Bakalım. Daha yazan arkadaşlarımız var mı? Bekleyelim mi? Devam edelim mi?
Hocam bir saniye. Tamam. Okan sen çalıştıramadın mı yazmış olduğun kodu?
Nedir empty karakter? İstersen yazmış olduğun kodu sohbet penceresine yapıştır bakayım orada ne tür bir hatam var. Okan sen copy paste yap dosyayı boş ver. Herkes görsün şurada yazmış olduğun kodları al yapıştır buraya.
Bu arada dosya gönderemiyordum ben. Siz nasıl gönderdiniz dosya? Evet artık dosya gönderebiliyorum. Güzel.
Dolayısıyla size şuradan ben şunları da göndermiş olayım bugün. Gençler size 4 tane dosya gönderdim. Say sistemleri 2, 3, 4. Şimdi... Oktay'ın yazmış olduğu koda bakalım.
int abc a sayısının değerini giriniz. Güzel. Herhangi bir şey yok. scanf ampersand a print b sayısının değerini giriniz.
O da tamam. Şu an yazmış olduğum kodda ben bir hata göremedim. Okan.
Ha şey. C'den sonra noktalı virgül yok. İnt A, B, C'de noktalı virgül yok.
Bak ilk satırda. Başka var mı bakayım? Şu B sayısının değerini girinizde acaba yukarıya mı çıkartmak lazım? Ya da chat penceresinin büyüklüğünü.
Ha evet ondanmış. Okan tamam mı? C'den sonra noktalı virgül. Arkadan söyle de çek.
Tamam peki. Başka hata alan arkadaşımız var mı? Hata değil de bir şey sorabilir miyim? Buyurun.
Return'ın üstündeki printf'de hani %d eşittir dir dedik ya. Tamam. Onu yaptığımız sonuca göre dir ya da dür olacak şekilde yapabiliyor muyuz? Onu ileriki inşallah haftalarda neden olmasın değil mi?
Türkçe ses uyumu muydu? Ses uyumuna göre dir, dur, dar falan neden olmasın? Teşekkürler.
Peki başka? Peki gençler şimdi o zaman devam edelim. Arkadaşlar ilk programımızı yazdınız.
Ekrana çıktı verdiniz. Printf'i kullandınız. Include tamam anladık.
Çıktığı aldık. Sonra her komuttan sonra noktalı virgül. Arkadaşlar kullanacağımızı söyledik. Ayraçlarımızın tabii ki başka yerlerde kullanılıyor ama şu an için fonksiyonlarımızın gövdesini oluşturmak için kullanılacağının bilgisini verdik.
Yorum satırlarımızdan bahsettik. Yorumlarımızı yerleştirdik. Bir diğer husus şöyle ben tekrar devs plus plus'a döneyim.
Mesela bu kodu şu şekilde de yazabilirdik. Şimdi bu kodu mu okumayı tercih edersiniz yoksa az önceki bilgisayar kodunu mu okumayı tercih edersiniz arkadaşlar? Hangisi size daha düzenli tertipli geliyor? Bir önceki. Tabii ki bir önceki.
Dolayısıyla kodunuzu yazarken gençler girintilere çıkıntılara dikkat edeceksiniz. Yani hele hele gelecek haftalarda if else gibi for döngüsü gibi veya başka while döngüsü gibi blokları gördüğünüz zaman arkadaşlar bunlara Bunları girintilerle arkadaşlar birbirinden ayırt etmeniz gerekecek. Bu kodun okunabilirliğini de artıracak.
Dolayısıyla girintilere çıkıntılara dikkat edeceğiz. Boşluklara dikkat edeceğiz arkadaşlar. Bu kodların birbirinden ayrılıp daha rahat okunmasını sağlayacak.
Şimdi kütüphaneye geldiğimiz zaman zaten std.io'yu kullandınız. Ama bunun gibi başka kütüphanelerimiz de var. Mesela az önce std.lib'in de örneğini verdik size.
Dedik ki system.pause komutunu kullanabilmeniz için. STD lib kütüphanesini kullanmanız lazım. Veya arkadaşınız dedi ki işte hocam getch functionunu kullanabilir miyiz?
Evet kullanabilirsiniz. Getch functionunu ama kullanabilmek için işte con.io kütüphanesine ihtiyacınız var. Dizgi işlemleri için string kütüphanesine ihtiyacınız var.
Kütüphaneler şöyle gençler. Geliştiriciler belirli amaca yönelik olan işlevleri farklı farklı farklı kütüphanelerde topluyorlar. İşte konsol giriş çıkış kütüphanesi mesela arkadaşlar. STD Ayu. Standart giriş çıkış kütüphanesi.
Matematiksel fonksiyonların trigonometrik fonksiyonların eksponansiyel üst alma gibi karekök alma gibi fonksiyonların bulunduğu kütüphane örneğin MET Kütüphanesi. Bunların görevleri farklı olduğu için farklı farklı dosyalarda topladılar. Kütüphaneye mesela ben size şöyle bir örnek vereyim. Mesela gençler eğer ben size demiş olsaydım ki bir araştırma ödevi vermiş olsaydım, deseydim ki gençler Kayseri'nin tarihiyle ilgili bir araştırma yapın, gelecek haftaya da bana bu yapmış olduğunuz çözümü getirin deseydim, ödevi getirin deseydim ve internetten yararlanmayacaksınız deseydim, ne yapardınız? Evet cevaplarınızı bekliyorum.
Hocam soruyu bir daha alabilir miyim? Kayseri'nin tarihiyle ilgili bir araştırma yapın ve gelecek hafta bana getirin deseydim. İnternetten de yararlanmayacaksınız deseydim.
Ne yapardınız? Ansiklopediyede başvurdum. Nereye?
Ansiklopediyede. Ansiklopedimiz evde yok. Kütüphaneye giderdiniz. Kütüphane o zaman hocam. Peki kütüphaneye giderdiniz.
Peki kütüphaneye gittiğiniz zaman Kayseri'yi anlatan bir kitabı mı veya ansiklopediyi mi tercih ederdiniz? Yoksa başka bir şehri anlatan bir kitabı mı tercih ederdiniz? Kayseri.
Evet. İşte kütüphaneler de böyle gençler. Bizim kütüphanelerimizin fonksiyonları özelleşmiştir. Dolayısıyla matematik fonksiyonlarının bulunduğu kütüphane dosyamız mat.h.
Standart giriş çıkış fonksiyonlarının olduğu kütüphane std.h. Efendim işte dizgilerle işlemler için string.h'ı kullanıyoruz. Şimdi mesela matematik kütüphanesini kullanımına bir örnek vereceğim. Programı değiştiriyorum şimdi. Artık int değil.
Mesela float. Tek hassasiyetli real sayı kullanacağım. Diyeceğim ki float derece.
Derece tek hassasiyetli bir real sayıdır dedim. Şimdi kullanıcıdan bunun değerini soralım. Diyelim ki hangi açının sinüsü hesaplanacak. Sonra scanf ile.
soralım artık real sayı olduğu için tek hassasiyetli bunu yüzde feyli soracağız amper sant derece şimdi Evet biz derece cinsinden açılar kullanıyor olabiliriz 30 derece 60 derece 45-90 neyse ama bilgisayarımızdaki fonksiyonlar bunlar üzerinde işlem yaparken radyan cinsinden hallerini kullanıyorlar Dolayısıyla bunu şimdi radyana çevirmemiz lazım yeni bir değişken tanımladım Dedim ki derece çarpı 22 bölü 7.0 yani pi bölü 180. Evet şu an kullanıcının girmiş olduğu derece cinsinden açıyı ben radyana çevirdim. Şimdi ekrana yazdıracağız. Printf diyeceğiz ki %f açısının sinüsü %f'dir. Peki ilk %f'nin değeri dereceden gelecek.
İkinci %f'nin değeri de sinüs radyandan gelecek. Peki. Şimdi ben yalnız sim fonksiyonu kullandığım için sim fonksiyonunun tanımlı olduğu kütüphaneyi include etmem lazım. Dedim ki işte include mat.h Peki.
Şu an eğer yanlışımız yoksa programımızın çalışıyor olması lazım. Peki. Hangi açının sinüsü hesaplanacak?
İşte dedik ki 60 derecenin sinüsünü hesapla. 60 açısının sinüsü köküç bölü 2 yani miydi? diye bulmuş oldu.
Tamam. Evet ne yaptık bunu yapmak için? Dedik ki derece real sayıdır.
Sonra hangi açının sinüsü hesaplanacak diye yazdık ekrana ve sorduk. %f amper sant derece kullanımcının girmiş olduğu değer derece değişkenine yüklendi. Ama sinüs fonksiyonu radyan cinsinden...
hesaplama yaptığı için kullanıcının girmiş olduğu derece cinsinden açıyı radyana çevirdik. Bunu yaparken de derece çarpı pi bölü 180 dönüşümünü kullandık. Dolayısıyla radyan artık radyanın sinüsünü almamız gerekiyor.
Sinüs radyan dedik ve ekrana şu açının sinüsü sinüs radyandır dedik ve yazdırdık. Peki. Şimdi bunu biraz daha teknik hale getirelim. Diyelim ki define. Artık sabit tanımlayacağım.
Define pi. 22 bölü 7 neden yazmadım? Çünkü C'de 22 bölü 7 işleminin sonucu tam sayıdır. Yani siz 22 bölü 7 yazdığınız zaman bunun sonucu 3 çıkar. Küsuratlı çıkmaz.
Gelecek hafta bunun detaylarını size anlatacağım. Dolayısıyla bunun sonucunun küsuratlı çıkabilmesi için ya 22 bölü 7.0 diyeceksiniz. Yani bir tanesi real olacak.
Ya 22.0 bölü 7 diyeceksiniz ya da 22.0 bölü 7.0 diyeceksiniz. Bir tanesini söylemeniz kâfi. Dolayısıyla 22 bölü 7.0 dediğimiz zaman işlemin sonucu real. Daha doğrusu kayan noktalı çıkar. Onun için şurayı da artık pi diye değiştirdim.
Tamam mı? Dolayısıyla derece çarpı pi bölü 180 oldu. Artık pi sabit. Değer hiçbir yerde değişmez programımızda. Demek ki sabitleri de define ile tanımlıyormuşuz.
Programımızı tekrar çalıştırdığımız zaman hangi açının sınıfı hesaplanacak? İşte 30. Dolayısıyla yarım olduğunu göstermiş olduk. Tamam gençler.
İsterseniz bu kodu da biraz şimdi yazmaya çalışın. Hadi bakalım. Bu da kütüphane kullanımına örnek bir kod olmuş olsun.
Yazlık mı gençler bitti mi? Az kaldı hocam. Evet Okan noktalı virgül unutmuşsun. Noktalı virgülü unuttuğum bir yer var. Komutlar arasında o noktalı virgülü yerleştirmen gerekiyor.
Evet sanırım tamam herhalde devam edelim isterseniz. Tamam değil mi gençler devam ediyoruz. Edelim hocam. Tamam peki.
Şimdi kütüphaneleri de anlattık. Artık bir program karşımıza çıktığı zaman az çok biliyoruz arkadaşlar. Int ne manaya geliyor, void ne manaya geliyor, double.
Efendim değişken nedir? İşte define'de sabit tanımladık dedik. Return deyimine ne manaya geliyor?
Printf kullandığımız zaman st'de i'ye yükleyeceğiz gibi. Bunları biliyoruz. Gelelim özel amaçlı sözcükleri.
Arkadaşlar bunlar ve daha da başka da var. C'de özel amaçlı sözcükler. Bunları kullanamazsınız değişken veya sabit isimlendirmesinde.
Ama C hani büyük küçük harf duyarlı olduğu için harflerin büyük veya küçüklüklerini değiştirerek arkadaşlar ne yapabilirsiniz? Farklı değişkenler oluşturabilirsiniz bu manada. Mesela short.
Şimdi short... Küçük harflerle yazıldığı zaman C'ye ait bir ifade. Ama mesela bunların hepsini büyük yazdığınız zaman farklı olmuş olur.
Ya da şuradaki S'yi büyük yaptığınız zaman, herhangi bir tanesini T'yi büyük yaptığınız zaman artık küçük harflerle yazılan short'tan farklı bir ifade ortaya çıkmış olacak. Fakat biz bunu tavsiye etmiyoruz. Kod temizliği açısından, kod okunabilirliği açısından C'ye özel sözcükleri gençler değişken isimlendirmesinde, sabit isimlendirmesinde kullanmayın.
Andırsa da andırmasa da. Tamam mı gençler? Peki. Şimdi peki değişken isimlendirmelerini nasıl yapıyoruz? Hemen ona bakalım.
Değişkenlerimizi isimlendirirken arkadaşlar büyük veya küçük harfleri kullanıyoruz. Yalnız latin alfabesinin karakterlerini kullanabilirsiniz. Büyük veya küçük harfleri.
Türkçedeki ç, ş, yumuşak g, ö, büyük ı gibi arkadaşlar karakterleri kullanamıyorsunuz ve sayılar da kullanabilirsiniz. Ancak sayıları kullanabiliriz fakat değişken isimleri sayıyla başlayamaz. Alt tireyi kullanabilirsiniz.
Tire dediğimiz şey eksi işareti değil. Eksi işareti matematiksel bir notasyon olduğu için gençler eksi değişken isimlendirmesini kullanamazsınız. Lakin alt tireyi kullanabilirsiniz.
Özel karakterleri yine kullanamıyoruz. İşte ünlem gibi et, diyes, dolar, yüzde gibi özel sembolleri değişken isimlendirmesini de kullanamazsınız. Az önce de söylemiş olduğumuz gibi özel amaçlı sözcükleri de yani int.
if, double, void, short, return gibi deyimleri değişken ismi olarak kullanamazsınız. Büyük küçük harf duyarlılığı olduğu için bu özel amaçlı sözcüklerdeki harfleri büyük hale getirerek kullanabilirsiniz. Mesela şurada sağ altta gördüğünüz gibi short ifadesinde s büyük hale getirilmiş.
Böyle bir değişken isminiz olabilir. Çünkü küçük harflerle yazılmış shorttan farklı fakat tavsiye etmediğimizi söyledik. Gelelim arkadaşlar. değer sabitlerimizi buradaki değer sabitlerimiz tam sayılar real sayılar karakterler dizgileri olabilirler tam sayılar kayan noktalı kısmı olmayan değerlerdir yani hiçbir şekilde bunların real kısmı yoktur sadece tam sayı tam sayı kısımları vardır real sayılarda ise her halükarda bir kayan noktalı kısım vardır örneğin 3 eğer bir real sayıysa o 3 değil 3.0'dır C açısından arkadaşlar yani her halükarda real sayılarda bir kayan noktalı kısı olacaktır.
Karakterleri ise tek tırnak içerisinde gösteriyoruz. Yani 8 bitlik 1 byte'lık büyüklüklerdir bunlar. Dizgiler ise çift tırnaklar arasında ifade edilirler.
Mesela şuradaki ilk iki kendisi tek başına bir karakter olmasına rağmen çift tırnak içerisinde yazıldığı için arkadaşlar artık bu bir karakter değil. Bu bir dizgi ifadesidir. Burada mesela 7 karakterden oluşan bir dizgi görüyorsunuz merhabada. Burada ise hem sayılardan hem de alfabenin sembollerinin A'dan mesela oluşan bir dizgi görüyorsunuz.
Ama buradaki 1 ve 2'nin artık saysal bir karşılığı yoktur. A alfanümerik ise 1 ve 2 de burada yine alfanümeriktir. Herhangi bir matematiksel karşılığı yoktur gençler. Demek ki karakterleri tek tırnak içerisine yazıyoruz.
Dizgileri ise çift tırnak arasına alıyoruz. Gelelim veri tiplerimize. C programlama dilinde belleği optimum kullanabilmek için değişken ürünlerimizin veri tiplerini söylüyoruz.
Tam sayı ise tam sayı, real sayı ise real sayı, işte tek hassasiyetli real sayı, çift hassasiyetli real sayı gibi bunları söylememiz gerekiyor. Integer 32 bitlik bir veri büyüklüğüdür. Tam sayıları göstermek için kullanılır.
Double, çift hassasiyetli real sayıları tanımlamak için kullanılır. Noktadan sonra 12 haneye yakın duyarlılığı vardır. Float da real sayıdır ama float Tek hassasiyetlidir.
Yani float'da hassasiyet 6 hane iken double'da çift hassasiyet olduğu için 12 hanelik bir hassasiyete sahip olabiliyor real sayılarımız. Karakter yani char 1 byte'lık büyüklük 8 bit'tir. 0 ile 255 arasında değer alır.
Short integer'da 8 bit'lik yani 1 byte'lık bir büyüklüktür ama integer olduğu için eksi 128'den artı 127'ye kadar değer alır. İkisinde de eksi 128'den artı 120'ye kadar 256 farklı değer vardır. Veya 0 ile 255 arasında da yine 256 tane farklı değer vardır. Ama karakter işaretsiz olduğu için 0 ile 255 arasındadır. Short integer ise işaretli olduğu için eksi 128 ile artı 127 arasında değişir.
Bir işaretsiz büyüklükte mesela unsigned integer. Unsigned integer da işaretsiz. Dolayısıyla şuradaki mesela 16 bitlik olduğunda integer. eksi ile artı şurası bakın 7 olacak gençler. Eksi ile artı arasında değişen 16 bitlik integer unsigned integer olduğunda ikisinde de tane değer var.
Ama biri eksi 32.768'den artı 32.767'ye kadar. Diğeri ise işaretli olduğu için. Diğeri ise işaretsiz olduğu için sıfırla arasında değer alacaktır arkadaşlar. Bunlar farklı veri tiplerimiz.
Peki değişkenleri nasıl oluşturuyoruz? Değişkenlerimizi oluştururken diyoruz ki benim değişkenimim ismi şu bunun da veri tipi şudur diyoruz. Dolayısıyla burada mesela şu an sunumda yapılan şey nedir? Toplam adında bir değişkenimiz var ve bu toplam değişkenimizin veri tipinin tam sayı olduğu söylenmiş.
Biz bunu söylediğimiz zaman hemen bilgisayarımız ne yapıyor? Bizim için 32 bitlik bir yer rezerve ediyor. Buraya biz toplam diyerek ulaşabiliyoruz.
Bu 32 bitlik yerde biz okurken de yazarken de arkadaşlar toplam değişkenine ulaşmış olacağız. Ve bunun toplam tam sayı olduğu için kayan noktalı kısmı yok. Sadece tam sayı burada saklayabileceğiz. Mesela başka tanımlamalar işte char cinsiyet. Cinsiyet için bir byte'lık bir karakter veri tipinde veri tipi tanımlamışız.
Sizce neden gençler cinsiyet için neden sadece tek bir karakteri yeterli görmüş olabiliriz? E veya K yazmak için. Evet E veya K yazabileceğiz değil mi? Onun için daha büyük bellek alanlarına ihtiyacımız olmadığı için 8 bitlik tek bir sembol bizim işimizi göreceği için karakter cinsiyet demişiz. Double maaş maaşlarımızın arkadaşlar kayan noktalı kısmı olacağı için real sayılar olacağı için bunun veri tipinin double olacağını söylemişiz.
Tek bir satırda birden fazla değişken tanımlayabilirsiniz. İşte ne yapmışız burada hem X'in hem Y'nin tam sayılar olduğunu ifade etmişiz. Peki arkadaşlar böylelikle, gençler böylelikle bugünkü dersimizi tamamlamış oluyoruz.
Şimdi ben size ödevleri ileteceğim. Çok büyük bir ihtimalle yine hafta sonu ödevleriniz gelmiş olacak. Ödevleri size aksaklık olmaması için Obisist'ten ulaştıracağım. Dolayısıyla siz de Obisist'ten kişisel duyurular bölümünden benim size vermiş olduğum ödevlere erişeceksiniz. Ödevlerle ilgili sizden istirhamım şu.
Muhakkak suretle ödev kurallarına uyun gençler. Kendi kendimize lütfen kural uydurmayalım. Bizim size vermiş olduğumuz bir format var.
O formata uymanızı istiyoruz. Gerek isimlendirme, gerek ödevin gönderme süresi. Gerek yardımlaşmama, aksi belirtilmediği sürece yardımlaşmayacaksınız arkadaşlar. Sonra ödevlerinizi Erciyes Üniversitesi'nin size tahsis etmiş olduğu e-posta adreslerini kullanarak bize ulaştıracaksınız.
Ben size kayıtları da arkadaşlar yine depodan ulaştıracağım. Depoda kayıtları görebileceksiniz. Ve kayıtları görebilmek için arkadaşlar bir şifreye ihtiyacınız olacak. Siz de paylaştığım dosyayı açabilmeniz için, video dosyasını açabilmeniz için. ilgili dosyanın kayıt anahtarını da size yine ulaştıracağım.
Bu kayıt anahtarını kullanarak ders kayıtlarımızı seyredebileceksiniz. Bana yönlendirmek istediğiniz başka soru var mı? Hocam ben bir soru sormak istiyorum. Buyurun.
Pardon şunu söyleyeyim. Şu an kaydı tamamlayayım mı tamamlamayayım mı? Yani dersle mi ilgili soracaksınız ders dışı bir şey mi soracaksınız?
Ders dışı hocam. O zaman kaydı bitiriyorum tamam mı gençler? Dersle ilgili bir şey soracak var mı aranızda? Eğer dersle ilgili bir şey soracaksanız kaydı bitirmeyeceğim. Hocam ben dersle ilgili bir şey soracağım.
Tamam önce dersle ilgili soruyu alalım. Hocam şimdi Fallout sonundaki 6. Sesiniz çok az geliyor. Hocam, kloat sondaki 6 değeri hesaplıyordu. 6 değeri hesaplamıyor.
Hassasiyeti 6 hane. Noktadan sonra 6 hane. Double'da 12'yi hesaplıyordu.
Evet, yaklaşık 12. Hangisini? Hepsini de double kullanmak. Şimdi hepsini de double kullanırsanız eğer gerekmediği halde tüm değişkenleriniz için 64 bit yer açmış olursunuz.
Yani örneğin 10 tane değişkeniniz var. Her birini 64 bit olacağı için 640 bitlik yer ayırmanız gerekir. Halbuki eğer gerektiği yerde 32 bitlik değişkenler tamamlamış olsaydınız 640 bitten daha düşük bellek alanları yanında yeterli olduğunu görecektik.