Önce anla
Teknik kavramlar, yeni başlayanların da anlayabileceği sade ve doğru açıklamalarla ele alınır.
En az 2 karakter yaz. Türkçe harf kullanmadan da arayabilirsin. Tab ile sonuçlara geç, Enter ile aç, Esc ile kapat.
8 ders, 1 mini proje, eğitim alanları ve proje sayfaları. Bölüm sonuçları ilgili başlığa gider; planlanan eğitimler ayrıca belirtilir.
Önerilen içerikler
Bir konuyu yalnızca okumakla kalma. Nedenini anla, örnekleri incele, kodu dene ve kendi hızında ilerle. PixcellCoder Akademi'de öğrenme yolculuğunu C# ve .NET ile başlatıyoruz.
Tek bir öğrenme yolu, üç seviye. Konuları sırayla takip edebilir veya bildiğin başlıklara doğrudan geçebilirsin.
Temel kavramlardan gerçek uygulamalara uzanan anlaşılır bir yol haritası.
İlk kez kod yazan biri için temel kavramları sade bir dille açıklıyoruz. Her adım bir sonraki konuya hazırlanmanı sağlayacak.
Konu açıklaması, satır satır incelenen kod, küçük uygulamalar ve kısa bilgi testleriyle öğrenmeyi pekiştireceğiz.
İlk Derse BaşlaDört başlangıç dersi, mini proje ve dört orta seviye ders hazır. Diğer içerikler hazırlanıyor.
Birden fazla kavramı bir araya getirerek daha planlı, okunabilir ve sürdürülebilir C# uygulamaları oluşturmayı hedefliyoruz.
Konu anlatımlarını gerçek hayattan örnekler ve daha kapsamlı uygulamalarla tamamlamayı hedefliyoruz.
Sınıflar ve Nesneler dersine başla →İleri seviyede kod yazmanın yanında mimari kararlar, testler, güvenlik ve sürdürülebilirliği ele alacağız.
Kodun neden böyle tasarlandığını açıklayan, kararları gerekçelendiren ve farklı seçenekleri karşılaştıran içerikler hazırlayacağız.
İçerikler planlanıyorDersleri yalnızca bilgi aktarmak için değil, bilgiyi gerçekten kullanabilmeyi desteklemek için tasarlıyoruz. Her adımın açık bir amacı olacak.
Teknik kavramlar, yeni başlayanların da anlayabileceği sade ve doğru açıklamalarla ele alınır.
Kodun yalnızca sonucu değil, satırların ne yaptığı ve neden kullanıldığı gösterilir.
Küçük uygulamalar, anlamayı pekiştiren alıştırmalar ve indirilebilir C# kod örnekleri.
Kısa sorular, açıklamalı geri bildirimler ve seviyene uygun uygulama görevleri.
Örneği seç, kodu düzenle ve Program.cs dosyası olarak indir.
Çalıştırma altyapısı hazırlanıyor. Kodları bu sayfada düzenleyebilir, kopyalayabilir ve bilgisayarındaki .NET projesinde çalıştırmak için indirebilirsin.
Örneği seçip düzenleyebilirsin.
Önceliğimiz C# ve .NET eğitimlerini yüksek kalitede hazırlamak. Diğer alanları zamanla kütüphanemize eklemeyi planlıyoruz.
HTML, CSS, JavaScript ve modern web teknolojileri.
Çok YakındaMobil uygulamaların geliştirilme temelleri.
Çok YakındaPython ile programlama ve uygulamalar.
Çok YakındaYapay zekâ ve makine öğrenmesi temelleri.
Çok YakındaSQLite ile tablo ve sorgular. Giriş dersi hazır.
SQL’e giriş dersini aç →Giriş dersi hazırGüvenli yazılım geliştirmeye giriş.
Çok YakındaProblem çözme ve veri yapıları.
Çok YakındaGit, GitHub ve geliştirme ortamları.
Çok YakındaKitap kalitesinde anlatımlar ve uygulamalı C# ve .NET eğitimleri için hazırlıklarımız sürüyor.
Kod yazmaya başlamadan önce kullandığın dili tanı. Bu derste C#'ın ne işe yaradığını, .NET ile ilişkisini ve ilk kod örneğinin anlamını öğreneceksin.
Bir program, bilgisayarın uygulayacağı komutlardan oluşur. Örneğin bir alışveriş uygulamasında ürün fiyatlarını toplamak, sonucu göstermek ve siparişi kaydetmek için komutlar yazarsın.
C# (okunuşu “si şarp”), bu komutları yazmak için kullanabileceğin bir programlama dilidir. Dilin sözcükleri ve kuralları vardır; bu kurallara uygun yazarak uygulamanın ne yapacağını tarif edersin.
Bir sitenin verileri işlemesini sağlayan servisler ve web uygulamaları.
Müşteri kayıtlarını veya stokları yöneten programlar.
Uygun araçlarla telefon ve tablet uygulamaları.
C# destekleyen oyun motorlarında oyun davranışları.
Bu alanların her biri farklı araçlar gerektirir. Biz önce ortak temeli öğreneceğiz: verileri saklamak, karar vermek ve işlemleri sırayla yürütmek.
C#, kodu yazdığın dildir. .NET ise uygulama geliştirmek ve çalıştırmak için kullanılan platformdur. .NET; çalıştırma ortamını, hazır kütüphaneleri ve geliştirme araçlarını kapsar.
C# ile ne yapılacağını tarif edersin. .NET'in sunduğu araçlardan ve hazır özelliklerden yararlanarak bu tarifi çalışan bir uygulamaya dönüştürürsün.
Örneğin bir metni konsola yazdırmak için tüm çıktı işlemlerini sıfırdan kurmazsın. .NET'in hazır Console.WriteLine metodunu kullanırsın. “Metot” sözcüğünü şimdilik belirli bir işi yapan hazır işlem olarak düşünebilirsin.
Aşağıdaki iki satır, bir konsol uygulamasında mesaj gösterir. Şimdilik kurulum yapmana gerek yok; amacı kod ile çıktı arasındaki ilişkiyi görmek.
Console.WriteLine("Merhaba PixcellCoder!");
Console.WriteLine("Bugün C# öğreniyorum.");C# büyük ve küçük harfe duyarlıdır. WriteLine ile writeline aynı ad değildir. Örnekteki yazımı koru.
İlk satırdaki mesajı Merhaba Dünya! yaparsan, ikinci satırı değiştirmeden bırakınca çıktı nasıl olur?
Önce tahmin et, sonra aşağıdaki çözümle karşılaştır.
Merhaba Dünya! Bugün C# öğreniyorum.
Yalnızca ilk satırdaki metin değiştiği için ikinci satırın çıktısı aynı kalır. Komutlar bu örnekte yukarıdan aşağıya yürütülür.
Üç soruyu yanıtla. Cevaplarını kontrol ettiğinde her sorunun açıklamasını göreceksin.
Üç soruyu doğru yanıtladığında dersi tamamlandı işaretleyebilirsin. İlerleme kaydının durumunu eğitim içeriği panelinde görebilirsin.
Geliştirme ortamını tanıyıp ilk uygulamamızı oluşturacağız.
Sonraki derse geç →Bu kez kodu kendi bilgisayarında çalıştıracağız. Geliştirme araçlarını tanıyıp bir proje oluşturacak, mesajını değiştirecek ve sonucu terminalde göreceksin.
Bir önceki derste C#'ın dil, .NET'in platform olduğunu öğrendik. Şimdi geliştirme için gerekli paketi kullanacağız: .NET SDK. SDK; projeyi oluşturma ve derleme araçlarını içerir. Runtime ise uygulamayı çalıştırmak için gereken ortamdır; SDK paketinde bu ortam da bulunur.
Bir bilgisayar, .NET SDK ve Program.cs dosyasını düzenleyebileceğin bir metin düzenleyici. Komutlar bilgisayarının terminalinde çalıştırılır; bu sayfanın içinde çalıştırılmaz.
SDK'nin görülebildiğini kontrol etmek için şu komutu yaz:
dotnet --list-sdksSürüm numarası ve kurulum yolunu içeren en az bir satır görmelisin. Numara, kurduğun sürüme göre değişir. Hiç SDK listelenmiyorsa aşağıdaki hata çözümlerine bak.
macOS ve Linux'ta da dersin terminal komutları aynıdır. SDK kurulum adımları işletim sistemine göre değişir; Microsoft indirme sayfasındaki ilgili yönergeleri izle.
Bilgisayarında çalışmalarına ayırdığın bir klasör aç. Windows'ta bu klasörün Dosya Gezgini adres çubuğuna powershell yazıp Enter'a basarak terminali o klasörde açabilirsin.
Aşağıdaki komutları birer birer uygula. Her komuttan sonra Enter'a bas ve işlemin bitmesini bekle. Yeni proje için IlkUygulamam adında henüz kullanmadığın bir klasör adı seçiyoruz.
dotnet new console --name IlkUygulamam --output IlkUygulamamnew console bir konsol projesi oluşturur. --name proje adını, --output dosyaların yazılacağı klasörü belirtir.
cd IlkUygulamamcd, terminalin çalıştığı klasörü değiştirir. Artık projenin içindesin.
dotnet runBu çıktı varsayılan C# konsol şablonundaki mesajdır. Terminalde ek bilgilendirme satırları da görebilirsin. dotnet run, projeyi derleyip çalıştırır; gerektiğinde bağımlılıkları geri yükler.
Aynı adda bir proje zaten varsa yeni bir klasör adı seç ve komutlarda bu adı tutarlı kullan. Şablon dosyaların üzerine yazmak için --force kullanmana gerek yok.
IlkUygulamam klasöründeki Program.cs dosyasını bir metin düzenleyicide aç. Var olan kodu aşağıdakiyle değiştir ve dosyayı aynı adla kaydet. Yeni bir Program.cs.txt dosyası oluşturmamaya dikkat et.
Console.WriteLine("Merhaba PixcellCoder!");
Console.WriteLine("İlk uygulamamı çalıştırdım.");
Console.WriteLine(2 + 3);Dosyayı kaydettikten sonra proje klasöründeki terminale dön ve yeniden dotnet run yaz. İlk iki satır metin gösterir. Üçüncü satırda ise 2 + 3 çift tırnak içinde olmadığı için toplama işlemi yapılır.
Console.WriteLine(2 + 3); çıktısı 5 olur. Console.WriteLine("2 + 3"); ise 2 + 3 metnini yazdırır. Tırnaklar yazdığın şeyin anlamını değiştirir.
Programının sonuna adını gösteren yeni bir satır ekle. Ardından Console.WriteLine(10 + 5); satırını ekle. Kaydet, tekrar çalıştır ve çıktıyı kontrol et.
Console.WriteLine("Benim adım Deniz.");
Console.WriteLine(10 + 5);Bu iki yeni satır, önce isim mesajını, sonra 15 değerini gösterir. Deniz yerine kendi adını yazabilirsin.
Hata mesajını okumak, kod yazmanın doğal bir parçasıdır. Mesajın hangi aşamaya ait olduğuna bakarak başla.
Terminal .NET komutunu bulamıyor. SDK kurulumunun tamamlandığını kontrol et; terminali kapatıp yeniden aç. Sorun sürerse işletim sistemine uygun resmî kurulum yönergelerini incele.
Yalnızca Runtime kurulmuş olabilir. SDK paketini kurduğundan emin ol ve dotnet --list-sdks komutunu yeniden dene.
Terminal proje klasörünün dışında olabilir. cd IlkUygulamam ile projeye geç. Bulunduğun klasörde IlkUygulamam.csproj dosyası olmalı.
Doğru Program.cs dosyasını kaydettiğini kontrol et. Koddaki büyük-küçük harfleri, düz çift tırnakları ve noktalı virgülleri örnekle karşılaştır. Terminaldeki ilk derleme hatasını oku.
İnternet bağlantını ve terminalde belirtilen hata mesajını kontrol et. Kurumsal ağ kullanıyorsan proxy ayarları etkili olabilir. Hata mesajını paylaşarak yardım isteyebilirsin.
Üç soruyu da yanıtla. Ardından cevapları kontrol ederek dersi tamamlayabilirsin.
Üç soruyu doğru yanıtladığında dersi tamamlandı işaretleyebilirsin. İlerleme kaydının durumunu eğitim içeriği panelinde görebilirsin.
Bilgileri kod içinde saklamayı ve yeniden kullanmayı öğreneceğiz.
Sonraki derse geç →Bir adı, puanı veya uygulamanın açık olup olmadığını kod içinde nasıl saklarsın? Bu derste bilgilere ad verecek, uygun türü seçecek ve sakladığın değeri değiştireceksin.
Bir oyundaki puanı düşün. Oyuncu ilerledikçe puan değişir ve uygulamanın bu sayıyı saklaması gerekir. Değişken, program içinde bir değeri adıyla kullanmanı sağlar.
int puan = 10;= işareti değer atamak için kullanılır.Ad seçerken ne sakladığını anlatan sözcükler kullan: puan, kullaniciAdi ve dersAcik gibi. Bu derste adları küçük harfle başlatıp birden fazla sözcükte sonraki sözcüğün ilk harfini büyüteceğiz.
Metin ile sayının anlamı farklıdır. Tür, hangi değeri saklayabileceğini ve bu değerle hangi işlemleri yapabileceğini belirler. İlk adımda bu dört türü tanıyalım:
| Tür | Sakladığı bilgi | Tanımlama örneği | Kullanım |
|---|---|---|---|
| string | Metin | string ad = "Deniz"; | Bir ad veya mesaj |
| int | Tam sayı | int puan = 10; | Puan veya adet |
| double | Ondalıklı sayı | double sicaklik = 21.5; | Sıcaklık gibi ölçümler |
| bool | Doğru / yanlış | bool dersAcik = true; | Bir durum bilgisi |
string örneğindeki metni çift tırnak içine alırız. int tam sayıdır. Ondalıklı bir double değeri kodda nokta ile yazarız: 21.5. bool için tırnaksız true veya false kullanırız.
double, ondalıklı sayıları yaklaşık temsil edebilir. Sayısal hassasiyet gerektiren konuları ilerleyen derslerde ayrıca ele alacağız.
Önceki derste oluşturduğun konsol projesinin Program.cs dosyasında aşağıdaki örneği deneyebilirsin. Dosyayı kaydettikten sonra proje klasöründe dotnet run komutunu kullan.
string kullaniciAdi = "Deniz";
int puan = 10;
double sicaklik = 21.5;
bool dersAcik = true;
Console.WriteLine(kullaniciAdi);
Console.WriteLine(puan);
Console.WriteLine(sicaklik);
Console.WriteLine(dersAcik);Üstteki satırlarda değerleri sakladık. Alttaki satırlarda değişken adlarını kullanarak bu değerleri konsola yazdırdık.
Bilgisayarının bölge ayarına göre ondalıklı çıktı 21,5 olarak da görünebilir. C# kodundaki sayı yine 21.5 biçiminde yazılır. true değeri de bu çıktı örneğinde True olarak gösterilir.
Aşağıdaki ayrı örnekte puan zaten tanımlı olduğu için ikinci satırda yeniden int yazmayız. Sağ taraftaki işlem yapılır, çıkan değer değişkene atanır.
int puan = 10;
puan = puan + 5;
Console.WriteLine(puan);Console.WriteLine(5 + 3);
Console.WriteLine("5" + "3");İlk satır sayıları toplar. İkinci satır iki metni birleştirir. Tırnak içindeki "5", bu örnekte sayı değil metindir.
int puan = 10; tanımından sonra puan = "yirmi"; yazamazsın; metin doğrudan int değişkene atanamaz ve derleme hatası oluşur. Değeri güncelleyebilirsin, değişkenin türünü sonradan değiştiremezsin.
var puan = 10; yazımında derleyici başlangıç değerinden türün int olduğunu çıkarır. Bu, değişkenin türünün sonradan serbestçe değişebileceği anlamına gelmez. Şimdilik türleri açık yazarak ilerleyelim.
Her satır için bu derste kullandığımız uygun türü seç. Bu eşleştirme alıştırması sayfanın içinde çalışır; C# kodu derlemez.
Adını bir string, tamamladığın ders sayısını bir int ve öğrenmeye devam edip etmediğini bir bool değişkende sakla. Üçünü konsola yazdır.
string ad = "Deniz"; int tamamlananDers = 3; bool devamEdiyorum = true; Console.WriteLine(ad); Console.WriteLine(tamamlananDers); Console.WriteLine(devamEdiyorum);
Örnek çıktı: Deniz, 3 ve True; her biri ayrı satırda görünür. Değerleri kendi bilgilerine göre değiştirebilirsin.
Üç soruyu yanıtla; cevaplarını kontrol ederek dersi tamamlayabilirsin.
Üç soruyu doğru yanıtladığında dersi tamamlandı işaretleyebilirsin. İlerleme kaydının durumunu eğitim içeriği panelinde görebilirsin.
Karar vermeyi, tekrar etmeyi ve kodu yeniden kullanmayı öğren.
Sonraki derse geç →Verileri saklamayı öğrendin. Şimdi bu verilere göre karar verecek, aynı işi tekrar edecek ve bir işlemi adıyla yeniden kullanacaksın.
Bir alıştırmada geçme puanının 50 olduğunu düşün. Puan 50 veya üzerindeyse “Geçtin”, daha düşükse “Tekrar dene” mesajını göstermek istiyoruz.
int puan = 70;
if (puan >= 50)
{
Console.WriteLine("Geçtin");
}
else
{
Console.WriteLine("Tekrar dene");
}puan >= 50 bir karşılaştırmadır. Puan 70 olduğu için sonuç true olur ve if bloğu çalışır. Koşul false olsaydı else bloğu çalışırdı. Bu if/else yapısında iki bloktan yalnızca biri seçilir.
>= “büyük veya eşit” demektir. Bu yüzden puan tam 50 olduğunda da koşul doğrudur. > kullansaydık 50 bu koşulu sağlamazdı.
Puanı değiştirerek aynı kuralın sonucunu incele. Bu alan, yukarıdaki karar kuralının etkileşimli gösterimidir; serbest C# kodu çalıştırmaz.
Sonucu görmeden önce hangi bloğun çalışacağını tahmin et. Sonra örnekteki puanı değiştirerek aynı denemeyi kendi konsol uygulamanda yapabilirsin.
Birden üçe kadar sayıları alt alta yazdırmak istiyoruz. Her sayı için ayrı komut yazmak yerine bir döngü kullanabiliriz.
for (int i = 1; i <= 3; i++)
{
Console.WriteLine(i);
}Sayaç sırasıyla 1, 2 ve 3 olduğunda sayı yazdırılır. Ardından sayaç 4 olur; 4 <= 3 yanlış olduğu için döngü biter. Bu örnekte gövde üç kez çalışır.
Koşulu i < 3 yaparsan 3 yazdırılmaz. Başlangıç i = 4 olup koşul i <= 3 kalırsa gövde hiç çalışmaz. Koşulun sonunda yanlış olmasını sağlayan ilerlemeyi koru.
İki sayıyı toplama işlemine bir ad verelim: Topla. Metot, aldığı değerlerle bir işi yapan kod bloğudur. Aynı işlemi farklı sayılarla çağırabiliriz.
Aşağıdaki örnekte Program.cs dosyasının tam içeriğini değiştiriyoruz. Önceki kısa örneklerin aksine, başlangıç noktası olan Main metodunu ve onu içeren Program sınıfını da açıkça gösteriyoruz. Eski komutları bu yapının yanına ekleme.
using System;
class Program
{
static void Main()
{
int sonuc = Topla(2, 3);
Console.WriteLine(sonuc);
}
static int Topla(int ilkSayi, int ikinciSayi)
{
return ilkSayi + ikinciSayi;
}
}Console.WriteLine(sonuc) döndürülen değeri ekrana yazar. return tek başına ekrana yazdırmaz. Topla(4, 6) çağrısı aynı gövdeyi bu kez farklı değerlerle kullanıp 10 döndürür.
Önceki konsol örnekleri üst düzey deyimler kullanıyordu; derleyici başlangıç metodunu oluşturuyordu. Burada metotların yerini göstermek için sınıfı ve Main'i açıkça yazdık.
i <= 5 yap. Kaç satır yazdırılır?Topla(4, 6) yap. Sonuç ne olur?Her değişikliği ilgili örnekte ayrı ayrı dene; dosyayı kaydedip proje klasöründe dotnet run komutuyla çalıştır.
1. 49, 50'den küçük olduğu için “Tekrar dene” görünür.
2. 1, 2, 3, 4 ve 5 yazdırılır: toplam beş satır.
3. Metot 4 + 6 işlemini yapıp 10 döndürür; Main bu sonucu yazdırır.
Her soruda ilgili örneğin sonucunu düşün. Üç soruyu yanıtladıktan sonra açıklamaları inceleyebilirsin.
Üç soruyu doğru yanıtladığında dersi tamamlandı işaretleyebilirsin. İlerleme kaydının durumunu eğitim içeriği panelinde görebilirsin.
Dört konuyu tek bir konsol programında birleştir.
Mini projeye geç →Dört dersteki parçaları çalışan bir konsol programında birleştir. Kullanıcıdan üç not al, ortalamayı hesapla ve geçme durumunu ayrı bir metotla belirle.
Bu alıştırmada tam olarak üç not kullanılacak. Her not 0 ile 100 arasında bir tam sayı olmalı. Üçünün ortalaması 50 veya üzerindeyse “Geçtin”, altındaysa “Tekrar dene” gösterilecek. Bunlar bu eğitim örneğinin kurallarıdır.
Geçersiz girişte uygulama aynı notu yeniden ister. Daha önce kabul edilen notlar korunur; üç geçerli not tamamlanınca ortalama hesaplanır.
int ile toplamı, double ile ortalamayı saklıyoruz. for üç girişi yönetiyor. if uygun olmayan girişleri ayırıyor. DurumMesaji metodu sonucu belirliyor.
Bir not girip kaydet. Hatalı giriş yaparsan aynı sıra numarasında kalırsın; kabul edilen notlar korunur. Bu alan projenin kurallarını tarayıcıda gösterir, C# kodunu derlemez.
Üç geçerli not tamamlandığında ortalama en fazla iki ondalıkla gösterilir. Geçme kararı, yuvarlatılmış görüntüye göre değil, hesaplanan ortalamaya göre verilir. Konsolunda bölge ayarına göre nokta veya virgül görebilirsin.
İkinci dersteki gibi .NET SDK kurulu olmalı. Çalışma klasöründeki terminalde şu komutları sırayla kullan. Aynı adlı bir klasörün varsa yeni bir ad seç.
dotnet new console --name NotOrtalamasi --output NotOrtalamasi
cd NotOrtalamasiAşağıdaki kod, Program.cs dosyasının tamamıdır. Dosyayı indirip proje klasöründeki şablon Program.cs yerine koyabilir veya kodu kopyalayıp dosyanın içeriğini değiştirebilirsin. İndirme başlamazsa kod kartındaki Kopyala düğmesini kullan.
using System;
class Program
{
static void Main()
{
int toplam = 0;
for (int i = 1; i <= 3; i++)
{
if (!TryNotOku(i, out int notDegeri))
{
Console.WriteLine("Giriş sonlandı. Ortalama hesaplanmadı.");
return;
}
toplam = toplam + notDegeri;
}
double ortalama = toplam / 3.0;
Console.WriteLine("Ortalama: " + ortalama.ToString("0.##"));
Console.WriteLine(DurumMesaji(ortalama));
}
static bool TryNotOku(int sira, out int notDegeri)
{
notDegeri = 0;
while (true)
{
Console.Write(sira + ". notu gir (0-100): ");
string? giris = Console.ReadLine();
if (giris == null)
{
return false;
}
if (int.TryParse(giris, out notDegeri)
&& notDegeri >= 0 && notDegeri <= 100)
{
return true;
}
Console.WriteLine("Geçersiz not. Aynı notu 0-100 arasında tam sayı olarak tekrar gir.");
}
}
static string DurumMesaji(double ortalama)
{
if (ortalama >= 50)
{
return "Sonuç: Geçtin";
}
return "Sonuç: Tekrar dene";
}
}
Dosyayı kaydettikten sonra NotOrtalamasi klasöründe dotnet run yaz. Program her notu istediğinde sayıyı yazıp Enter'a bas.
for kaç geçerli not gerektiğini takip eder. while ise tek bir not doğru girilene kadar tekrar eder. Hatalı giriş toplamı veya not sırasını ilerletmez.
| Girişler | Beklenen davranış |
|---|---|
| 40, 50, 60 | Ortalama 50; Geçtin |
| 49, 50, 50 | Ortalama yaklaşık 49,67; Tekrar dene |
| 0, 0, 0 | Ortalama 0; Tekrar dene |
| 100, 100, 100 | Ortalama 100; Geçtin |
| İlk giriş abc, boş veya 50.5 | Uyarı gösterilir; aynı not yeniden istenir |
| Herhangi bir giriş -1 veya 101 | Uyarı gösterilir; önceki geçerli notlar korunur |
Geçme sınırını 60 yapmak isteseydin hangi bölümü değiştirirdin?
DurumMesaji içindeki ortalama >= 50 koşulunu ortalama >= 60 yap. Sonra ortalaması 59 ve 60 olan iki senaryoyu dene. Bu değişiklik konsol projen içindir; buradaki önizleme örneği 50 sınırını kullanır.
Projeyi tamamlamadan önce üç kararın nedenini açıklayabildiğinden emin ol.
Üç soruyu doğru yanıtladıktan sonra projeyi tamamlandı işaretleyebilirsin. İlerleme kaydının durumunu eğitim içeriği panelinde görebilirsin.
Boş, harfli ve aralık dışındaki girişleri dene. Sonra geçerli bir not yazarak aynı sıradan devam edildiğini kontrol et.
Eğitim yoluna dön →Bir öğrencinin adını ve notlarını tek bir yapıda topla. Aynı sınıftan iki ayrı nesne oluştur ve her öğrencinin ortalamasını kendi verileriyle hesapla.
Önceki projede üç notu ayrı değişkenlerle tuttuk. Öğrenci sayısı arttığında adların ve notların kime ait olduğunu düzenli tutmak gerekir. Ogrenci sınıfı, bir öğrencide bulunacak bilgileri ve yapılabilecek işlemi tanımlar.
Ad ve üç not için özellikler; ortalama için bir metot tanımlar. Sınıf tanımı tek başına Deniz veya Ece adında bir öğrenci oluşturmaz.
Her new Ogrenci çağrısı bu örnekte yeni bir öğrenci nesnesi oluşturur. Deniz ve Ece aynı türden gelir; kendi özellik değerlerini taşır.
Bu ders nesne yönelimli programlamanın ilk adımıdır. Kalıtım ve çok biçimlilik sonraki konulardır; burada sınıf, özellik ve nesne üzerinden metot çağırmaya odaklanıyoruz.
Aşağıdaki örnek Program.cs dosyasının tamamıdır. İki öğrenciyi ayrı ayrı oluşturur; ortalamaları 50 ve 90 olur.
using System;
class Ogrenci
{
public string Ad { get; set; } = "";
public int Not1 { get; set; }
public int Not2 { get; set; }
public int Not3 { get; set; }
public double OrtalamaHesapla()
{
return (Not1 + Not2 + Not3) / 3.0;
}
}
class Program
{
static void Main()
{
Ogrenci deniz = new Ogrenci
{
Ad = "Deniz", Not1 = 40, Not2 = 50, Not3 = 60
};
Ogrenci ece = new Ogrenci
{
Ad = "Ece", Not1 = 80, Not2 = 90, Not3 = 100
};
Console.WriteLine(deniz.Ad + ": " + deniz.OrtalamaHesapla());
Console.WriteLine(ece.Ad + ": " + ece.OrtalamaHesapla());
}
}Ad metin türünde bir özelliktir. get değeri okumaya, set değiştirmeye izin verir. Başlangıç değeri boş metindir. public sayesinde Program sınıfından erişebiliriz.deniz değişkeni oluşturulan nesneye başvurur.ece üzerinden çağrıldığında Ece'nin notlarını kullanır. Bu nedenle metot static değildir.İki ayrı new ifadesi burada iki nesne oluşturur. Buna karşılık Ogrenci diger = deniz; yazarsan iki değişken aynı nesneye başvurur. diger.Ad değiştiğinde aynı nesnenin adı değişmiş olur.
Örneği laboratuvarda düzenle, Program.cs dosyasını indir ve kendi .NET projen içinde dotnet run ile çalıştır. Bir noktalı virgülü silerek derleyici hatasını da gözlemleyebilirsin.
1. (70 + 50 + 60) / 3.0 = 60 olur.
2. Deniz'in adı değişmez; bu örnekte iki ayrı nesne vardır.
3. Yeni bir Ogrenci oluştur, özelliklerini doldur; sonra o değişken üzerinden OrtalamaHesapla() çağır.
Üç soruyu doğru yanıtlayarak dersi tamamlayabilirsin.
Hazır olduğunda öğrencileri bir listeye alıp sınıf ortalamasını hesaplayabilirsin.
Sonraki ders: Koleksiyonlar ve LINQ →← Not ortalaması projesine dönÖğrencileri tek tek değişkenlerde tutmak yerine bir listede birleştir. Her öğrenciyi dolaş, sınıf ortalamasını hesapla ve geçen öğrencileri seç.
Önceki dersteki Ogrenci sınıfını kullanmaya devam ediyoruz. List<Ogrenci>, öğrenci nesnelerine başvurular tutan bir koleksiyondur. Açılı parantez içindeki tür, listeye hangi türde eleman ekleyeceğimizi belirtir. Bu örnekte yalnızca Ogrenci nesneleri ekliyoruz.
Ogrenci, bir kişinin bilgilerini tanımlar. List<Ogrenci> ise birden çok öğrenciye birlikte erişmemizi sağlar. Listeyi dolaşırken yeni eleman ekleme veya silme; bu örnekte eklemeleri döngüden önce yapıyoruz.
Bu, Program.cs dosyasının tamamıdır. Önceki sınıf tanımı da içindedir; önceki dosyanın altına eklemek yerine ayrı bir konsol projesinde veya Kod Laboratuvarında çalıştır.
using System;
using System.Collections.Generic;
using System.Linq;
class Ogrenci
{
public string Ad { get; set; } = "";
public int Not1 { get; set; }
public int Not2 { get; set; }
public int Not3 { get; set; }
public double OrtalamaHesapla()
{
return (Not1 + Not2 + Not3) / 3.0;
}
}
class Program
{
static void Main()
{
List<Ogrenci> ogrenciler = new List<Ogrenci>();
ogrenciler.Add(new Ogrenci { Ad = "Deniz", Not1 = 40, Not2 = 50, Not3 = 60 });
ogrenciler.Add(new Ogrenci { Ad = "Ece", Not1 = 80, Not2 = 90, Not3 = 100 });
ogrenciler.Add(new Ogrenci { Ad = "Can", Not1 = 30, Not2 = 40, Not3 = 50 });
Console.WriteLine("Öğrenci sayısı: " + ogrenciler.Count);
if (ogrenciler.Count == 0)
{
Console.WriteLine("Henüz öğrenci yok.");
return;
}
foreach (Ogrenci ogrenci in ogrenciler)
{
Console.WriteLine(ogrenci.Ad + ": " + ogrenci.OrtalamaHesapla());
}
double sinifOrtalamasi = ogrenciler.Average(o => o.OrtalamaHesapla());
Console.WriteLine("Sınıf ortalaması: " + sinifOrtalamasi.ToString("0.##"));
var gecenler = ogrenciler.Where(o => o.OrtalamaHesapla() >= 50).ToList();
Console.WriteLine("Geçen sayısı: " + gecenler.Count);
foreach (Ogrenci ogrenci in gecenler)
{
Console.WriteLine("Geçti: " + ogrenci.Ad);
}
}
}using System.Collections.Generic; List türünü; using System.Linq; ise bu dersteki LINQ metotlarını kullanabilmemizi sağlar.
Bu örnekte kullandığımız, double değer üreten Average çağrısı boş listede hata verir. Önce Count sıfır mı diye bakıp açıklayıcı mesajla çıkıyoruz. Hiç kimse geçmezse ise gecenler boş bir liste olur; geçen sayısı 0 gösterilir.
ToList, öğrencilerin kendilerini kopyalamaz; aynı öğrenci nesnelerine başvuran yeni bir liste oluşturur. Kaynak liste üç kişilik kalır. Örnekte notlara 0–100 kontrolü eklemiyoruz; kullanıcı girdisi alınırsa önceki projenin doğrulama kuralları yine uygulanmalıdır.
ogrenciler.Clear(); ekle. Ne olur?1. Yalnızca Ece geçer. Sınıf ortalaması tüm öğrencilerden hesaplandığı için 60 kalır.
2. Öğrenci sayısı 0 ve “Henüz öğrenci yok.” yazılır. return sayesinde Average çağrılmaz.
3. Geçen sayısı 0 olur; kaynak listede 3 öğrenci kalır.
4. Yeni öğrencinin ortalaması 70'tir. (50 + 90 + 40 + 70) / 4 = 62,5 olur.
Üç soruyu doğru yanıtlayarak dersi tamamlayabilirsin.
Şimdi öğrenci adlarını bir dosyaya kaydedip geri okumayı ve dosya hatalarını karşılamayı öğrenebilirsin.
Sonraki ders: Hata Yönetimi ve Dosya İşlemleri →← Sınıflar ve NesnelerEğitim yoluna dön →Öğrenci adlarını satır satır bir metin dosyasına kaydet, dosyayı geri oku ve beklenen dosya hatalarını try/catch ile karşıla.
Önceki derste listeyi program çalışırken kullandık. Bu kez List<string> içinde öğrenci adları tutuyoruz. Her ad, metin dosyasında bir satır olacak. System.IO ad alanındaki File sınıfı okuma ve yazma işlemlerini sağlar.
Bu örneği bilgisayarındaki .NET projesinde çalıştırdığında dosya programın çalışma klasörüne yazılır. Terminali proje klasöründe açıp dotnet run komutunu kullanırsan örnek dosyayı o klasörde bulabilirsin.
Aşağıdaki kod, Program.cs dosyasının tamamıdır. İlk işlem örnek dosyanın içeriğini üç adla yazar; ikinci işlem bu dosyayı okuyup adları konsola çıkarır.
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
class Program
{
static void Main()
{
string dosyaYolu = "pixcellcoder-adlar-ornek.txt";
List<string> ogrenciAdlari = new List<string>
{
"Deniz", "Ece", "Can"
};
try
{
File.WriteAllLines(dosyaYolu, ogrenciAdlari);
Console.WriteLine("Adlar dosyaya yazıldı.");
List<string> okunanAdlar = File.ReadAllLines(dosyaYolu).ToList();
Console.WriteLine("Okunan öğrenci sayısı: " + okunanAdlar.Count);
foreach (string ad in okunanAdlar)
{
Console.WriteLine("Öğrenci: " + ad);
}
}
catch (FileNotFoundException)
{
Console.WriteLine("Dosya bulunamadı. Adını ve konumunu kontrol et.");
}
catch (UnauthorizedAccessException)
{
Console.WriteLine("Bu dosya konumuna erişim izni yok.");
}
catch (IOException)
{
Console.WriteLine("Dosya işlemi tamamlanamadı. Konumu kontrol et.");
}
Console.WriteLine("Dosya örneği sona erdi.");
}
}Bir dosya silinmiş olabilir veya yazmak istediğin konuma erişim izni bulunmayabilir. try içine dosya işlemlerini, catch bloklarına bu sorunlara verilecek yanıtları koyuyoruz.
Bir hata için ilk eşleşen catch bloğu çalışır. Bu örnekte yakalanan bir dosya hatasından sonra ortak son satıra geçilir ve “Dosya örneği sona erdi.” yazılır. Bu mesaj, işlemin mutlaka başarılı olduğu anlamına gelmez; üstteki mesajlar sonucu açıklar.
Harfli bir not girişini TryParse ile kontrol etmeye devam edebilirsin. Buradaki catch blokları çalışma sırasındaki dosya sorunlarını ele alır. Eksik noktalı virgül gibi bir derleme hatası ise program başlamadan derleyicide gösterilir.
"pixcellcoder-bulunamayan-ornek.txt" yaz. Hangi mesaj gelir?File.WriteAllLines(dosyaYolu, new List<string> { "Selin" }); ekle. Eski üç ad da dosyada kalır mı?Her denemeyi ayrı ayrı, başlangıç örneği üzerinden yap. Laboratuvardaki “Seçili örneğin başına dön” düğmesiyle kodu sıfırlayabilirsin. Düzenlediğin kodu indirip kendi .NET projen içinde çalıştır.
1. Dört ad okunur; Selin son satırda görünür.
2. Önce yazma tamamlanır, ardından okuma aşamasında bulunamayan dosya mesajı gelir. Ortak son mesaj da yazılır; okunan öğrenci sayısı yazdırılmaz.
3. İkinci yazma dosyanın içeriğini değiştirir. Yalnızca Selin okunur ve sayı 1 olur.
Üç soruyu doğru yanıtlayarak dersi tamamlayabilirsin.
Bir sonraki derste öğrencileri bir tabloda tutup SQL ile sorgulayabilirsin.
Sonraki ders: Veritabanları ve SQL’e Giriş →← Koleksiyonlar ve LINQEğitim yoluna dön →Öğrencileri satır ve sütunlardan oluşan bir tabloda tut. SQL ile geçen öğrencileri seç, ortalamaya göre sırala ve sınıfın özetini hesapla.
Önceki derslerde öğrencileri C# nesnelerinde, listelerde ve metin satırlarında tuttuk. Bu derste bir öğrenci tablosu oluşturuyoruz. Her satır bir öğrenciyi, sütunlar da o öğrencinin kimliğini, adını ve ortalamasını temsil eder.
| Id | Ad | Ortalama |
|---|---|---|
| 1 | Deniz | 50 |
| 2 | Ece | 90 |
| 3 | Can | 40 |
Id INTEGER PRIMARY KEY her öğrenciyi benzersiz bir tam sayı kimliğiyle tanımlar. Aynı Id değerini iki farklı satıra veremeyiz. Ad TEXT NOT NULL ad alanında NULL bulunmasını engeller. CHECK kuralı ortalamayı 0–100 aralığında tutar.
SQL, veri üzerinde yapacağımız işlemleri yazdığımız dildir. SQLite bu dersteki komutları çalıştıran veritabanı motorudur. Örnekteki TEMP tablo, mevcut SQLite bağlantısı boyunca yaşar; bağlantı kapandığında kaldırılır. Bu, sorgu denemeleri için hazırlanmış bir öğrenci tablosudur.
Aşağıdaki düzenlenebilir alanda tam SQL örneği var. Birinci SELECT geçenleri listeler; ikinci SELECT tüm sınıfın özetini verir. Düzenlediğin SQL dosyasını indirip bilgisayarındaki SQLite ile çalıştırabilirsin.
Bu sayfa SQL düzenlemelerini kaydetmez. SQL dosyasını bilgisayarında çalıştırmak için indirebilirsin. Başlangıç örneğine dönmek için aşağıdaki düğmeyi kullanabilirsin.
| Id | Ad | Ortalama |
|---|---|---|
| 2 | Ece | 90 |
| 1 | Deniz | 50 |
Başlangıç örneğinin ikinci sorgusu: OgrenciSayisi = 3, SinifOrtalamasi = 60. SQLite çıktısında sayıların ondalıklı gösterimini görebilirsin.
SQL kodunu yukarıda düzenleyebilir, kopyalayabilir ve dosya olarak indirebilirsin. Bu sürümde sorgular harici bir çalıştırma servisine gönderilmez.
sqlite3 komutunu başlat. SQLite isteminde .read ders9.sql yaz..quit yaz.Örnek TEMP tabloyu mevcut SQLite bağlantısında oluşturur. Yeniden baştan denemek için SQLite'tan çıkıp yeni bir oturum başlatabilir, dosyayı tekrar okuyabilirsin.
Öğrenci eklemeden sorgularsan ilk SELECT satır döndürmez. İkinci sorguda COUNT(*) 0, AVG sonucu NULL olur. NULL, burada hesaplanacak ortalama bulunmadığını ifade eder; sayısal 0 ile aynı değildir. Kullandığın SQLite aracı NULL alanını boş gösterebilir.
INSERT INTO Ders9_Ogrenciler (Id, Ad, Ortalama) VALUES (4, 'Selin', 70); ekle. Öğrenci sayısı ve ortalama kaç olur?Her denemeyi başlangıç örneği üzerinden yap. Düzenlediğin SQL dosyasını indirip bilgisayarındaki SQLite ile çalıştır.
1. Yalnızca Ece görünür. İkinci sorgu tüm tabloyu kullandığı için sınıf ortalaması 60 kalır.
2. Deniz, ardından Ece görünür. Tabloya eklenme sırası yerine sorgudaki sıralama kullanılır.
3. Sayı 4, sınıf ortalaması (50 + 90 + 40 + 70) / 4 = 62,5 olur.
4. İlk sonuç boş olur; özet satırında sayı 0 ve ortalama NULL olur.
Üç soruyu doğru yanıtlayarak dersi tamamlayabilirsin.
Önce SQL sorgularını farklı geçme sınırları ve boş tabloyla dene. Sonraki aşamada bu temel üzerine C# uygulamasından veri okuma ve yazmayı kurabiliriz.
← Hata Yönetimi ve Dosya İşlemleriEğitim yoluna dön →Yazılımı adım adım öğrenmeyi, mantığını anlamayı ve öğrendiklerini uygulamayı önemseyen bir geliştiriciyim.
Mobil uygulama geliştirmeyle ilgileniyorum. PixcellCoder Akademi'yi, yazılım öğrenirken konuların nedenini ve nasılını birlikte ele alan Türkçe bir kaynak oluşturmak için geliştiriyorum.
İlk odağımız C# ve .NET. Temel kavramlardan küçük projelere ilerleyen bir öğrenme yolu hazırlıyor; her konuyu açıklamalar, kod örnekleri, alıştırmalar ve kısa testlerle destekliyorum.
Kavramları sade bir dille açıklamak ve kodun ne yaptığını görünür kılmak.
Örnekleri değiştirerek ve sonuçları inceleyerek öğrenmeye alan açmak.
Eksikleri ve düzeltme ihtiyaçlarını değerlendirerek dersleri iyileştirmek.
Bu önizlemede sekiz ders, bir mini proje ve bilgi testleri bulunuyor. C# ve SQL örnekleri düzenlenebilir, kopyalanabilir ve indirilebilir. Kodları çalıştırmak için bilgisayarındaki geliştirme ortamını kullanabilirsin.
Tarayıcıda kod çalıştırma ve öğrenci üyeliği şu anda kullanıma açık değil. Diğer eğitim alanları aşamalı olarak hazırlanacak.
İçerik önerileri, ders düzeltmeleri ve siteyle ilgili teknik sorunlar için iletişim bilgilerini bu sayfada paylaşacağım.
Bu önizlemede açık bir mesaj gönderme kanalı bulunmuyor. İletişim adresi belirlendiğinde bu bölümde yer alacak.
Bu sayfada iletişim formu üzerinden kişisel bilgi veya mesaj toplanmaz. Bu sürümün gizlilik bilgilerini incele →
Bir anlatımda, kod örneğinde veya testte fark ettiğin hata ve açıklama ihtiyaçları.
Açılmayan bir bölüm, çalışmayan düğme veya farklı cihazlarda karşılaştığın görüntüleme sorunu.
Öğrenmek istediğin bir konu, yeni bir alıştırma veya projeye ilişkin önerilerin.
Paylaşacağın örnek kod veya ekran görüntüsünden şifreleri, erişim anahtarlarını ve kişisel bilgileri kaldır.
Bu tek dosyalık önizlemede hangi bilgilerin kullanıldığını, nelerin tarayıcında tutulduğunu ve yayın öncesinde tamamlanacak noktaları açıklıyoruz.
Bu teknik açıklama, çevrim içi yayın için tamamlanmış bir KVKK aydınlatma metni değildir. Yayıncının tam kimliği, başvuru kanalı ve hosting koşulları kesinleştiğinde ilgili veri işleme faaliyetleri için metin tamamlanacaktır.
Bu sayfa, PixcellCoder Akademi'nin indirilebilir HTML önizlemesinin uygulama kodunu açıklar. Üyelik, iletişim formu, ödeme, reklam, analitik ve harici kod çalıştırma entegrasyonu bu dosyada bulunmuyor.
Bir web sunucusundan açıldığında sayfanın sunulması için ağ iletişimi gerçekleşir. Seçilen hosting sağlayıcısı Veridyen'dir. Hizmet paketinin erişim kayıtları, çerezleri, saklama süreleri ve olası aktarımları bu dosyanın incelenmesiyle belirlenemez; yayın hazırlığında ayrıca değerlendirilecektir.
| İşlev | Kullanılan bilgi | Kayıt ve aktarım |
|---|---|---|
| Ders ilerlemesi | Tamamlanan derslerin kimlikleri ve son açılan ders. | Aynı tarayıcıdaki yerel kayıtta tutulur. Bu dosya kaydı bir sunucuya göndermez. |
| Bilgi testleri ve alıştırmalar | Seçilen yanıtlar ve girilen deneme değerleri. | Sayfa içinde değerlendirilir. Uygulama tarafından kalıcı kayda yazılmaz veya sunucuya gönderilmez. |
| Site içi arama | Yazılan arama metni. | Dosyanın içindeki içerik listesinde aranır; uygulama kodu arama metnini sunucuya göndermez. |
| C# ve SQL alanları | Düzenlediğin örnek kod. | Uygulama tarafından kalıcı kayda yazılmaz. İndirme işlemi dosya oluşturur; kopyalama işlemi cihazının panosuna yazar. Harici derleyiciye gönderim kapalıdır. |
Tarayıcının form geri yükleme, pano eşitleme veya dosya yedekleme gibi kendi özellikleri ayrıca çalışabilir. Bu özelliklerin ayarları kullandığın tarayıcı ve cihaza bağlıdır.
Ders ilerlemesi için localStorage kullanılır. Kayıt adı pixcellcoder.learning.v1 olup tamamlanan dersleri ve son açılan dersi içerir. Test yanıtları bu kayda eklenmez.
Uygulama kodu reklam, analiz veya izleme çerezi oluşturmaz. Yerel depolama ve çerezler farklı tarayıcı mekanizmalarıdır; çevrim içi yayının tüm veri kullanımı hosting ve eklentilerle birlikte değerlendirilecektir.
Derslerde Microsoft ve SQLite gibi resmî kaynaklara bağlantılar bulunur. Bağlantıyı açtığında ilgili sağlayıcının sitesine geçersin; o sitenin veri kullanımı kendi açıklamalarına tabidir. Kaynak sayfaları bu önizlemenin içinde gömülü olarak yüklenmez.
Çevrim içi yayın öncesinde veri sorumlusunun tam kimliği ve başvuru kanalı; her veri işleme faaliyeti için amaç, toplama yöntemi, hukuki sebep, alıcı grupları, saklama ve aktarım koşulları ile ilgili kişi haklarının nasıl kullanılacağı netleştirilecektir.
Bu taslakta başvuru e-postası veya adresi yayımlanmış değildir. İletişim kanalı ve Veridyen hizmet paketinin veri işleme koşulları netleştiğinde açıklamalar gerçek kullanıma göre güncellenecektir. Yayın öncesinde metin ve süreçlerin hukukçu tarafından incelenmesi gerekir.
KVKK · Aydınlatma yükümlülüğü ↗
İletişim sayfasını aç →Derslerin kaynaklarını, bu dosyada yer alan bileşenleri ve yayın öncesinde kararlaştırılacak kullanım koşullarını bir arada görebilirsin.
Bu HTML önizlemesinde site kodu ve ders içerikleri için bir açık kaynak veya açık içerik lisansı beyanı bulunmuyor. Genel yeniden dağıtım ve ticari kullanım koşulları yayın öncesinde belirlenecektir.
| Bileşen | Dosyadaki kullanım | Durum |
|---|---|---|
| Arayüz ve etkileşimler | HTML, CSS ve JavaScript dosyanın içinde bulunur. Harici bir arayüz kütüphanesi yüklenmez. | Proje için genel kullanım lisansı henüz seçilmedi. |
| Dersler ve kod örnekleri | Türkçe anlatımlar, C# ve SQL örnekleri; inceleme, düzenleme ve bilgisayarda deneme akışı. | Ders metinleri ve örnek kodların yayın/yeniden dağıtım koşulları netleştirilecek. |
| Simgeler ve yazı tipleri | Dosya içi SVG simgeler ve cihazın sistem yazı tipleri. | Bu dosyada harici simge, fotoğraf veya web yazı tipi yüklemesi bulunmuyor. |
| .NET ve SQLite araçları | Kurulum veya dokümantasyon bağlantıları verilir. | Bu HTML dosyasına .NET SDK veya SQLite çalıştırma dosyaları dahil edilmemiştir. |
Derslerin ilgili bölümlerinde resmî dokümantasyon bağlantıları bulunur. Aşağıdaki liste bu sürümün derslerinde yer alan kaynak bağlantılarını bir araya getirir. Bir kaynağa bağlantı vermek, kaynağın kendi kullanım koşullarını değiştirmez.
Microsoft Learn içeriği ve hizmetleri için sağlayıcının koşullarını inceleyebilirsin.
SQLite kodu ve belgelerine ilişkin proje açıklamasını resmî kaynağından inceleyebilirsin.
İleride bir çalıştırma motoru, paket veya görsel dosyaya eklendiğinde, dahil edilen sürümün lisans koşulları ve gerekli bildirimler ayrıca kaydedilecektir.
Site kodunun, ders metinlerinin ve örnek kodların kullanım kapsamı ayrı ayrı belirlenecek. Yayından önce içeriklerin kökeni ve varsa üçüncü taraf izinleri gözden geçirilecek; seçilen lisansların tam metinlerine ve gerekli atıflara yer verilecektir.
Bu sayfa mevcut incelemenin kapsamını gösterir; bütün içeriklerin hak durumunun hukuken onaylandığı anlamına gelmez. Açık kalan hususlar yayın öncesinde tamamlanacaktır.