Merhaba ve Yeni Başlayanlar için C programlama sınıfına hoş geldiniz.
Benim adım Jason Fitton ve eğitmeniniz olacağım.
Bu kursa kaydolduğunuz için size teşekkür etmek istiyorum.
Çok eğlenceli olacak ve sizi motive etmek ve C programlama dili hakkında her şeyi öğrenmenize yardımcı olmak için
elimden geleni yapacağım.
Hadi başlayalım.
Öncelikle size biraz kendimden bahsetmek istiyorum.
Binghamton Üniversitesi'nden bilgisayar bilimleri alanında yüksek lisans derecem var ve SUNY Oswego'dan
da bilgisayar bilimleri alanında lisans derecem var.
Yüksek lisansımı 2001 yılında tamamladım.
Ben 16 yılı aşkın bir süredir yazılım geliştiricisiyim.
Ben 11 yılı aşkın bir süredir online eğitmenlik yapıyorum.
Nesne yönelimli programlamadan derleyici teorisine kadar 20'den fazla farklı
ders verdim.
Genel olarak bilgisayar bilimlerinde programlama konusunda geniş bir deneyime sahibim.
C programlama dili ile 16 yılı aşkın süredir çalışıyorum.
Temel olarak, ilk işimi alır almaz C kodu yazmaya başladım.
Ayrıca birçok üniversitede başlangıç C ve ileri C sınıfları oluşturdum, bu nedenle müfredat ve
öğrencilere C kavramlarını sunma konusunda iyi bir deneyime sahibim.
Yaklaşık 10-12 yıldır Xerox Corporation'da yazılım geliştiricisiyim.
Burada çalıştığım süre boyunca ağırlıklı olarak C kodu ve biraz da C plus plus kodu yazdım.
Tüm kaynak kodu havuzumuzu Linux platformunda çalıştırıyoruz ve gerçek zamanlı kod yazıyoruz.
Ağırlıklı olarak nesne yönelimli diller ve mobil programlama üzerine yoğunlaşıyorum.
Yapmayı sevdiğim şey bu.
Yani C plus Plus ve Java gibi şeyler, ama C dili gerçekten benim uzmanlık alanım.
Ayrıca yüksek kaliteli kod yazmaya da odaklanıyorum.
Bu, kurs boyunca vurgulayacağım hayati ve önemli bir kavramdır.
Sizlerden iyi kod yazmaya odaklanmanızı istiyorum, sadece çalışan kod yazmaya değil, programın
bakımının çok daha kolay olmasına yardımcı olacak iyi kod yazmaya.
Sınıfta ele alacağımız konulardan bazıları şunlardır.
Ve bu arada, bu konuları ele aldığımızda, şunları sağlayacağız.
Ders materyali sağlayacağım.
Uygulamalı alıştırmalar yapacağım.
Değerlendirmeler yapacağım.
Entegre bir geliştirme ortamında düzenlerken kod ve programlama kavramları üzerinden size yol göstereceğim.
Yani gerçekten uygulamalı olacak.
İlk olarak genel olarak C hakkında konuşacağız, size biraz genel bilgi vereceğiz.
Size C programlama dilinin nasıl çok verimli olduğunu anlatacağım.
Aynı zamanda taşınabilir.
Birden fazla platformda yazabilirsiniz.
Çok fazla güç ve esnekliğe sahiptir ve programcı odaklıdır.
Biraz bağlam sağlamak için size C'nin kısa bir tarihçesini de veriyorum.
Bunu C'nin bazı genel dil özelliklerini açıklayarak takip edeceğiz.
C zorunlu bir dildir.
Bu en modern dil türüdür.
İşlevler etrafında düzenlenmiştir.
Modül tasarımına sahiptir, yapılandırılmış bir programlama dilidir.
Kodunuzu yazarken de yukarıdan aşağıya planlama yapabilirsiniz.
C kullanmanın avantajları, C'nin küçük, hızlı programlar için harika olduğuna odaklanacaktır.
Çok güvenilir, öğrenmesi çok kolay ve anlaşılması çok kolay.
Eğer bir akranınızdan veya geliştirici arkadaşınızdan bir C programı alırsanız, bunu oldukça hızlı bir şekilde takip
edebilirsiniz.
Modern bir platformlar arası entegre geliştirme ortamı kullanacağız.
Kodu düzenleyeceğiz.
IDE'yi kodumuzda hata ayıklamak için de kullanacağız ki bu çok önemli.
Dolayısıyla bu da kavramlardan biri olarak sunulacaktır.
Size çevreyi gezdireceğim ve aracı nasıl kullanacağınızı göstereceğim.
İlk olarak temel kavramlarla başlayacağız.
Size bir C programının neye benzediğini tarif edeceğim ve bir örnek vereceğim.
Size temel bir C programının yapısını göstereceğim.
Kodunuzda nasıl yorum yapabileceğinizden ve printf fonksiyonunu kullanarak nasıl temel çıktı sağlayabileceğinizden bahsedeceğiz.
Bir Hello World örneği üzerinden gideceğiz ve ayrıca C'de ilk programınızı yazmanızı sağlayacağız.
Bunu makefiles hakkında konuşarak takip edeceğiz.
Makefiles hakkında çok fazla ayrıntıya girmeyeceğiz, ancak kodunuzu derlemek ve derlemek için bu aracı nasıl
kullanabileceğinizi anlamanıza yardımcı olmak için buna değinmek istiyorum.
En temel programlama kavramı olan değişken oluşturma ve kullanma hakkında konuşacağız.
Değişkenler, programınız için bellek, veri ve hafızayı bir isimle ilişkilendirme fikridir.
Ve kodunuzda birçok değişken ve birçok farklı ifade oluşturacaksınız.
Float double ve char veri türlerini içeren veri türleri hakkında konuşacağız.
Dersin ilerleyen bölümlerinde enum'lar gibi daha gelişmiş veri türlerinden ve typedef anahtar sözcüğünü
kullanarak kendi veri türlerinizi oluşturmaktan bahsedeceğiz.
Temel operatörler hakkında bilgi vereceğim.
Bunlar toplama veya çıkarma yapmak, matematik operatörleri gibi şeylerdir.
Ayrıca ve veya, veya gibi mantıksal operatörleri de içerir.
Bu bir nevi karar beyanları gibi olacaktır.
Bir atama operatörü kullanarak bir değişkene nasıl veri atayabileceğiniz hakkında konuşacağız.
Kodunuzda kararlar vermek.
Çok önemli bir programlama kavramı.
Bu konuya değineceğiz.
Bunlara koşullu ifadeler denir.
Bunlar if ve switch gibi anahtar kelimelerdir.
Örnekler vereceğiz ve bunun çeşitli yapılarını gözden geçireceğiz.
Bunu tekrar eden kodlar hakkında konuşarak takip edin.
Temel olarak C'deki büyük döngü yapıları for while ve do while'dır.
Hepsi aynı.
Sadece sözdizimleri biraz farklı.
Dizileri kullanarak verileri nasıl depolayabileceğiniz ve verileri iki farklı şekilde nasıl kategorize edebileceğiniz hakkında konuşacağız.
Bu nedenle, dizileri nasıl başlatabileceğinizi ve ardından matris elektronik tablo türü bir kavram olan
çok boyutlu dizileri nasıl tanımlayabileceğinizi tartışacağız.
Fonksiyonlar.
Fonksiyonlar, C programlama diliyle ilgili en büyük ve en önemli kavramlardan biridir.
Her şey bir işlev etrafında kullanılmamalı ve organize edilmemelidir.
Bu, modül tipi programlama olarak adlandırılır.
Bir fonksiyonu nasıl bildireceğinizi, nasıl kullanacağınızı, ona nasıl veri aktaracağınızı ve ondan nasıl veri döndüreceğinizi
öğreneceksiniz.
Ayrıca değere göre çağrı ve referansa göre çağrı gibi daha gelişmiş kavramlar hakkında da konuşacağız.
Hata ayıklama hayati bir kavramdır ve tüm programcılar için gereklidir.
Bu, hatalarınızı bulma ve düzeltme fikridir.
Programınızın nerede çöktüğünü size gösterebilecek olan çağrı yığınını tartışacağız.
Çok önemli bir kavram.
Size birçok c programcısının yaptığı yaygın hataları sunacağım, böylece bu hataları görürseniz nasıl düzelteceğinizi
anlayacaksınız.
Ve sonra derleyici, sözdizimsel olarak doğru olduğundan emin olmak için kodunuzu kontrol edecektir.
Ve eğer değilse, size hata mesajları veya uyarılar verecektir.
Derleyicinin size ne söylediğini anlamanız gerekir.
Bu yüzden derleyici mesajları ve bunların nasıl anlaşılacağı hakkında konuşacağız.
Yapıları tartışacağız.
Dizilere benzeyen ve veri depolayan struct'lar hakkında her şeyi öğreneceksiniz.
Bu bir veri yapısı.
Yapıları nasıl başlatabileceğinizi, iç içe geçmiş yapılar kavramının nasıl olduğunu tartışacağız.
Nesnelere aşina olanlarınız için, bununla bir şekilde ilişkilendirilebilir,
ancak karakter dizeleri kadar sağlam değildir, bu da esasen çift tırnak içindeki C alfanümerik karakterlerde bir dizedir.
Bu temel veri türlerinden biridir, ancak bir dizi olarak düşünülür ve biraz farklı bir kavram olduğunu
görürsünüz.
Bunun üzerinden geçeceğiz.
Dizeler üzerinde gerçekleştirebileceğiniz bazı işlemler hakkında konuşacağız.
İşaretçiler.
İşaretçiler muhtemelen tüm bu kurstaki en önemli kavramımız olacak.
Bu yüzden üzerinde çok zaman harcayacağız.
İşaretçiler bu kavramdır ve kendi belleğinizi nerede yönetmeniz gerektiğini görürsünüz.
Başka dillerde programlıyorsanız bu sizin için tanıdık olmayan bir kavram olabilir çünkü bu genellikle sizin
için yapılır.
Özellikle, Java veya C sharp programlıyorsanız, işaretçiler hakkında endişelenmenize gerek yoktur.
C'de, kendi belleğinizi yönetme konusunda endişelenmeniz gerekir.
Bu yüzden işaretçiler büyük önem taşıyor.
Size işaretçileri nasıl tanımlayabileceğinizi ve kullanabileceğinizi, bunları fonksiyonlar ve dizilerle
nasıl kullanabileceğinizi, bellek oluşturmak için farklı standart kütüphane çağrılarını nasıl çağırabileceğinizi ve ayrıca işaretçileri nasıl çıkarabileceğinizi anlatacağım.
Dediğim gibi bu önemli bir kavram ve bunun üzerinde çok zaman harcayacağız.
Size çok sayıda örnek ve gerçek dünya tipi senaryo sunacağım, böylece işaretçiler gerçekten
beyninize kazınacak çünkü işaretçileri tam olarak anlamadan C programlama dilini kullanamazsınız.
Bunun için çok zaman harcayacağız.
Bu konuda öğreneceğimiz önişlemci, derleyiciden önce gerçekleşen bir adımdır.
Özellikle, define ve include gibi anlamanız gereken direktiflerdir.
Bunun üzerinden geçeceğiz.
Girdi ve çıktı üzerinden gideceğiz, konsola nasıl veri okuyabilir ve yazabilirsiniz.
printf hakkında konuştuk.
getchar ve scanf formatını, belirticileri ve bunun gibi şeyleri kullanarak bu konuda biraz daha ayrıntıya
gireceğiz.
Ayrıca bir dosyaya nasıl veri okuyabileceğiniz ve yazabileceğiniz hakkında da konuşacağız.
Bu, kod yazarken bir başka önemli kavramdır, verileri depolamanın bir yoludur.
C'de birçok farklı dosya işlemi vardır ve bunlardan bazılarını tartışacağız.
C çok düşük seviyeli bir dildir ve birçok şeyi verimli ve hızlı bir şekilde yapabilir ve dosya
yazma ve okuma bu düşük seviyededir.
İşletim sistemiyle oldukça güzel bir şekilde etkileşime geçebilirsiniz.
C programlama diliyle birlikte gelen ve kullanabileceğiniz birçok farklı fonksiyonun bulunduğu
standart bir C kütüphanesi vardır.
Dize işlevleri, dize manipülasyon işlevleri, matematik işlevleri, yardımcı işlevler vardır.
Tıpkı farklı kütüphaneler ve diğer dillerde olduğu gibi, daha verimli kod yazmanıza yardımcı olmak
için kullanabileceğiniz tüm bu temel işlevleri inceleyeceğiz.
C, dizeleri manipüle eden dosyalara yazmak ve okumak için size yine bazı temel bilgiler sağlayacaktır.
Matematik fonksiyonları için kosinüs ve tanjant almak istiyorsanız, bunların hepsi dil tarafından sizin için sağlanır.
Bunu öğreneceğiz.
Ve bunlar ele alacağımız ana konular, başlangıç konuları.
Henüz ileri düzey konulara girmeyeceğiz, ancak temel esasları ele alacağız.
Yani bu kursun sonunda, başlangıç seviyesinde C programları yazabilmeli, C dilinin temel özelliklerini anlamalı,
nasıl girdi ve çıktı sağlayacağınızı bilmelisiniz.
İşaretçi vb. kavramları derinlemesine inceleyin.
Ayrıca, bu kursta ilerledikçe, yüksek kaliteli ve verimli kod yazmaya odaklanacaksınız.
Bu çok ama çok önemli.
Yine, yazılım yaşam döngüsünün bakım aşamalarını etkiler.
Dolayısıyla, hatalarınızı bulmak ve düzeltmek istiyorsanız, yüksek kaliteli kodunuz varsa bunu yapmak çok daha kolaydır.
Bu yüzden örnekler üzerinden ilerledikçe, bu kavramları öğrendikçe, bunu doğru şekilde nasıl yapacağımızı da
öğreneceğiz.
İşleri nasıl modüler hale getireceğimizi öğreneceğiz, böylece işler fonksiyonlar halinde gruplandırılacak.
Farklı dosyalarımızda düşük bağımlılıklara, düşük bağlantıya sahip olduğumuzdan emin olacağız, böylece birbirlerini
etkilemeyecekler.
Kodunuzda çok fazla bağımlılık olduğunda, şunları yapabilirsiniz.
Hatalarınızı bulmak ve düzeltmek çok daha kolay.
Ve eğer bir programa yeni fonksiyonlar ya da yeni kodlar eklemek isterseniz, eğer program modüler hale getirilmişse ve fonksiyonlar
organize edilmişse bunu yapmak çok daha kolaydır.
Bu yüzden yüksek kaliteli kod yazma kavramına odaklanacağız.
Sadece işleri yoluna koymakla kalmayacağız, bunu doğru şekilde yapacağız.
Kursun sonunda kendi hatalarınızı bulabilecek ve düzeltebileceksiniz.
İyi bir programcı olmanın önemli bir parçası da problem çözmektir.
Problem çözme tekniklerine ve kodunuzda nasıl hata ayıklayacağınıza ve nasıl etkili bir problem çözücü olacağınıza
odaklanacağız.
Bu, derleyici mesajlarını anlamayı da içerir.
Bir hata ayıklayıcının nasıl çalıştırılacağını, çağrı yığınının nasıl kullanılacağını ve tüm bu güzel şeyleri anlar.
Problem çözme konusu tüm derslerde işlenecektir.
Daha önce bahsettiğim C programlama dili konularının temel yönlerini anlayacaksınız.
Bu temel C şeyleri olacak.
Son olarak, eğleneceksiniz.
Sizi motive etmek için elimden geleni yapacağım.
Eğlenceli ve heyecan verici örnekler vereceğim.
Dersler veya alıştırmalar sırasında uyuya kalmanızı istemiyorum, bu yüzden onları canlı hale getireceğim ve
sizi motive etmek ve bu kurs boyunca size yardımcı olmak için elimden geleni yapacağım.
Bu yüzden dört gözle bekliyorum.
Gerçekten heyecanlıyım ve umarım herkes C programlama dili hakkında çok şey öğrenmeye hazırdır.
Teşekkür ederim.