Selam,
Bismillah diyerek ilk programlama dersime başlıyorum: C
Teşekkürler, sıkça karşılaştığım bir soru. Eehehe 😀
C ile başlamam için birçok önemli nedenim var. İlki, öğrendiğim ilk programla dili olması 🙂 Ama daha önemlisi C, programlama dillerinin temeli sayılıyor. Öğrendiğim ilk programlama dilinin C olması benim için güzel bir şanstı sanırım. Birçok sistemin temelinde C var ve günümüzdeki birçok popüler dile de ilham olmuş. Wikipedia sayfasında daha fazla bilgi bulunabilir. Ekstra olarak ekşi sözlükteki c başlığı. Özellikle şu entryde uzunca bir açıklama var.
Üniversitede kullandığım kitap bana yardımcı olabilir. Temel seviyede bilgiler sunuyor ve bolca pratik mevcut. Yeni başlayan kişiler için de faydalı olabilir. Kitap: C Dersi Programlamaya Giriş
Tabii ki internette sınırsız kaynak mevcut:
Fazla uzatmadan gerekli programı indirip kuruyorum: Eclipse.
Eclipse başka program kursam olmaz mı? Olur tabi. Verdiğim kaynaklara bakarsan C kodlarını yazman için gerekli programları ve kurulumlarını görebilirsin.
Eclipse’i açıp yeni bir “Hello World” C projesi oluşturarak işe başlayalım.
#include <stdio.h> #include <stdlib.h> int main(void) { puts("Hello World!"); /* prints Hello World! */ return EXIT_SUCCESS; }
İşte benim ilk programım! Tek amacı var, o da çalıştığı zaman ekrana “Hello World” yazmak. Harika değil mi?
Şimdilik tek bilmem gereken kodlarımı int main (void) {}
arasına yazmam gerektiği. Her programın bir main()
fonksiyonu olmalı ve program bu main()
fonksiyonundan başlar.
İyi, güzel. Buraya kadar her şey umduğumdan basit çıktı ama diğer kodlar ne işe yarıyor? #include
, puts();
ya da int
ya da main()
içindeki (void)
ne? Ne işe yarıyor? Neden buradalar?Babam böyle kek yapmayı nereden öğrendi!? Bunların cevabını bilmem gerekmez mi?
Yusuf, Yusuf… Öğrenmeyi çok istiyorsun anladım ama dediğim gibi şimdilik bunları bilmemize gerek yok. Ama çok merak ettiğin için kısa kısa değinelim.
C dilinde “header” dosyalarının diğer dillerde karşılığı kütüphane anladığım kadarıyla. Kütüphaneler fonksiyonların bir araya gelmesiyle oluşur. Daha açıklayıcı olmasını açısından şöyle bir örnek vereyim.
Trigonemetrik işlemler yapan bir matematik programı yazmamız gerek. Girilen değerlerin sin, cos, tan vb. değerlerini bulmamız lazım. Bunun için;
#include <stdio.h> #include <stdlib.h>
Bu kodlar programa kütüphane eklememize yarıyor.
include(bknz. google translate) <stdio.h>
yazarak
stdio.h kütüphanesini programımıza dahil etmiş olduk.
İyi ki kısa kısa değinelim dedik. Çok uzatmadan şu fonksiyonlara bakalım.
Sonunda fonksiyonlara geldik ama fazla durmayacağım. Çünkü bu iş sandığından daha derin. Bu işin arkasında Amerika ve İsrail var.
Daha fazla iğrenç espri yapmadan fonksiyonun ne olduğunu söylüyorum: “programınızdaki özel işlere bakan görevlilerdir.*”
int main(void)
ya da puts()
işte hep bunlar fonksiyonlar… Hepsinin kendine has görevi var. Daha sonra fonksiyonlara bakınca detaylarına ineriz ama çok meraklanırsan, şu wikibook sayfasına göz atabilirsin. Karışık gelirse üzelme, daha yolun başı.
puts("Hello World!"); /* prints Hello World! */
Mesela puts()
. Bunun görevi ekrana yazı yazdırmak. Ekrana yazı mı yazdırmak istiyorsun. puts()
fonksiyonunu kullan. Zaten adam yanına yorum olarak açıklamış, “Hello World yazdırır” demiş.Ekrana bir şeyler yazdırmak istediğinde printf()
fonksiyonunu da kullanabilirsin.
Ayrıca dikkat çekici bir nokta daha var. Yakaladığını biliyorum Sherlock. main
()
bir fonksiyon, puts()
bir fonksiyon. Fonksiyon içinde fonksiyon!
İzlemediysen Inception güzel filmdir bu arada.
puts("Hello World!"); /* prints Hello World! */
/*prints Hello World*/ işte dostum, bu bir yorum satırı. Ne işe yarar dersen, program için bir anlamı yok. Kodları çalıştırırken yorum satırları çalıştırılmaz. Çünkü yorum satırları insanlar içindir. Yazdığımız kodların ne işe yaradığını açıklamak, program hakkında bilgiler eklemek vb. gibi ihtiyaçlar için yorum satırlarını kullanmalısın. Yarın öbür gün, dönüp koduna baktığında “Bu ne ya? ufff salak şey .s” dememek için, ufak bir yorum ile o kodun ne işe yaradığını açıklayabilirsin. Hem böylece senden başkası da koduna baktığında ne işe yaradığını daha rahat anlasın, değil mi?
Programın son satırına kadar geldik. Buraya kadar iyi dayandın, tebrik ediyorum. Hemen return
hakkında özet geçeyim.
Fonksiyonların belirli görevleri yerine getirdiğini hatırlıyorsundur. Güzel, peki fonksiyon görevini yaptıktan sonra ne yapacak? “Oh görevim bitti hacı” deyip yatışa geçebilir ya da “Yaptığım görev sonucu elde ettiğim değerleri aktarmalıyım” da diyebilir. Hangisini diyeceğini biz belirleyeceğiz elbette ama, eğer geriye bir değer getirecekse bunun için return
() komutuna ihtiyacı olacaktır.
Bugün ekrana “Hello World” yazan bir program yazdım.
#include <stdio.h> #include <stdlib.h> int main(void) { puts("Hello World!"); /* prints Hello World! */ return EXIT_SUCCESS; }
#include
ile kütüphane ekleyebilirim. Kütüphanelerin içinde fonksiyonlar var.main()
fonksiyonuna ihtiyaç duyar ve program buradan başlar.puts()
ya da printf()
ekrana bir şeyler yazdırmak için kullanılan fonksiyonlardır.Gitmeden önce son bir şey söylemek istiyorum. Öyle Eclipse’i açıp kafana göre kod yazacağını sanıyorsan yanılıyorsun dostum. Henüz hiç kod yazmadın ama bu işin belirli kuralları var. Adı üstünde, C programlama dili. Bu da bir dil, bununda dil bilgisi kuralları var. Şimdi bunlardan bahsetmek istemiyorum. Zaten ilerledikçe bu kuralları otomatik olarak öğrenmiş olurum. Şimdi öğrenirim diyorsan, buradaki sayfanın alt kısmına göz atabilirsin.
Şimdilik bu kadar yeter. Haydi görüşürüz…
Celery ile alakalı "best practice"leri ve faydalı araçları bir araya getiren güzel bir checklist'e denk…
Diziler en temel ve sık kullandığımız araçlardan... Kod yazarken işimizi kolaylaştıracak, daha temiz kod yazmamızı…
listve tuple bilginizi test etmek ister misiniz? realpython.com da keşfettiğim ve Türkçe'ye çevirdiğim mini teste…
Rehberlik sağlaması ve bilgi tazelemesi açısından faydalı olduğunu düşündüğüm bir Toptal blog paylaşımınıTürkçe'ye çevirdim.Devamını okuyunBilmeniz…
Angular componentlerine console üzerinden hızlıca erişmek için kullanılan bir teknik. Unutmamak için kendime not düşüyorum.Devamını…
Geçtiğimiz günlerde keşfettiğim ve oldukça da hoşuma giden repoyu paylaşmak istiyorum: lydiahallie/javascript-questions Genel olarak temel…