Skip to content

Commit cb1e947

Browse files
committed
Added chapter 01 codes.
1 parent 754b2ef commit cb1e947

File tree

7 files changed

+210
-0
lines changed

7 files changed

+210
-0
lines changed

Chapter01/Chapter01.csproj

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<OutputType>Exe</OutputType>
5+
<TargetFramework>net8.0</TargetFramework>
6+
<ImplicitUsings>enable</ImplicitUsings>
7+
<Nullable>enable</Nullable>
8+
</PropertyGroup>
9+
10+
</Project>

Chapter01/Model/Car.cs

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/*
2+
Bütün tip tanımları(class, struct, interface, delegate, enum vs) bir namespace içerisinde yer alır.
3+
Namespace, aynı amaca hizmet eden enstrümanların toplandığı yerdir(Farklı dillerde package, module gibi görebiliriz)
4+
Namespace, kavramsal bir anlam bütünlüğü sağlar.
5+
*/
6+
namespace Chapter01.Model
7+
{
8+
internal class Car
9+
{
10+
public string Name;
11+
// Color field'ının string yerine kendi tasarladığımı ProductColor enum sabiti ile de kullanabiliriz
12+
// public string Color;
13+
public ProductColor Color; // Color alanı(field) sadece ProductColor enum sabiti türünden bir değer alabilir
14+
public string Model;
15+
public short Year;
16+
}
17+
}

Chapter01/Model/IpInfo.cs

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
namespace Chapter01.Model
2+
{
3+
/*
4+
struct ve class arasındaki en temel fark bellekte tutulma biçimidir.
5+
Struct'lar değer türü(Value Type) formatında, kaplayacakları alanlar belli olan türlerdir ve bellekte Stack bölgesinde dururlar.
6+
Class'lar ise referans türü(Reference Type) formatında olup kaplayacakları alan genelde runtime'de belli olan, değişebilen
7+
ve bu sebeplerden belleğin Heap bölgesinde duran enstrümanlardır.
8+
Buna göre birbirleri arasındaki atamalar farklılık gösterebilir.
9+
10+
Kendi tasarlayacağımız türler class olmak zorunda değildir. Veri içeriğine bunları struct olarak da ele alabiliriz.
11+
12+
Örneğin IpInfo veri modelinde içerikteki tüm türler byte cinsindendir. Yani herbiri birer Struct'tır. Bellekte kaplayacağı yer bellidir.
13+
Değer türü gibi kullanılabilir bir modeldir.
14+
*/
15+
internal struct IpInfo
16+
{
17+
public byte Part1;
18+
public byte Part2;
19+
public byte Part3;
20+
public byte Part4;
21+
}
22+
}

Chapter01/Model/ProductColor.cs

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
namespace Chapter01.Model
2+
{
3+
/*
4+
Kendi tasarlayabileceğimi türlerden birisi de Enum sabitleridir.
5+
Genellikle sayısal ifadeleri daha okunabilir anlamlı ifadelere eşleştirmek için kullanılır.
6+
enum türleri struct veya class gibi iş yapan fonksiyonlar veya metotlar içermez.
7+
8+
Sorular :
9+
10+
- ProductColor enum sabitinde renkler için sayısal değerler kullanılabilir mi?
11+
*/
12+
internal enum ProductColor
13+
{
14+
Black,
15+
White,
16+
Green,
17+
Blue,
18+
Yellow
19+
}
20+
/*
21+
Renk gibi bir kavram dahi kullanılacağı yere göre farklı veri türleri şeklinde inşa edilebilir.
22+
Bir grafik programda RGB ayarında kullanılması gerekirken, belki bir e-ticaret sisteminde business anlamda
23+
kullanılan sabit renkleri ifade eden bir enum da olabilir.
24+
25+
ObjectColor struct'ı da ProductColor.cs gibi ayrı bir dosyaya alınsa iyi olur.
26+
27+
Sorular :
28+
29+
- Metinsel bir ifadeden(örneğin hexadecimal bir string değerden, #FFFF00 gibi RGB struct nesnesi elde edilebilir mi?
30+
- Bir ObjectColor nesnesini örneklerken constructor gibi metotlar kullanılabilir mi?
31+
*/
32+
internal struct ObjectColor
33+
{
34+
public byte Red;
35+
public byte Green;
36+
public byte Blue;
37+
public byte TransperencyRate;
38+
}
39+
}

Chapter01/Program.cs

+72
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
/*
2+
Uygulama sınıfımızın adı Program.
3+
Bir tipi başka bir tür içinde(Program sınıfı gibi) kullanırken dahil olduğu namespace bilgisini eklemek gerekebilir.
4+
*/
5+
using Chapter01.Model;
6+
// using System.Net;
7+
8+
internal class Program
9+
{
10+
/*
11+
Executable binary'lerin (Console App, Windows App) ilk giriş noktası Main metodudur
12+
İsterse Main fonksiyonu terminalden ya da başka bir input kaynağında parametre alabilir (args değişkeni)
13+
args değişkeni n adet parametre alabilen bir string dizidir (Array)
14+
15+
Main metodu genelde bir sonuç döndürmez(istisnai durumlar vardır. Eğer program çıktısı başka bir program veya OS için önemlisi)
16+
17+
Bir metot geriye birşey döndürmeyecekse void olarak tanımlanır.
18+
19+
Main metodu varsayılan olarak private erişim belirleyicisine sahiptir. Yani sadee Program sınıfı içinde kullanılabilir.
20+
ve aynı zamanda statik bir metoddur(statik metotlar tanımlandıkları nesnenin örneğine ihtiyaç olmadan kullanılabilirler)
21+
Örneğin Console sınıfının WriteLine metodu statik bir fonksiyondur.
22+
23+
Sınıflar(Program sınıfı gibi) metotlar(static, constructor, destructor vs), alanlar(fields), özellikler(properties) veya başka türleri de içerebilir.
24+
*/
25+
private static void Main(string[] args)
26+
{
27+
Console.Beep();
28+
Console.WriteLine("Hello, World!");
29+
30+
string fullName = "Burak Selim Şenyurt";
31+
string repoAddress = "https://github.com/buraksenyurt/ProgrammingWithCSharp";
32+
// var keyword ile tanımlanan değişkenler, eşitliğin sağ tarafına bakıp uygun veri türünü alırlar.
33+
// var, eşitliğin sağ tarafı farklı türlere denk geliyorsa varsayılan olanı kullanır
34+
var blogAddress = "buraksenyurt.com";
35+
// Aynı scope içerisinde { } aynı isimde değişkenler tanımlanamaz.
36+
var age = 47;
37+
short level = 101;
38+
byte redValue = 210;
39+
bool isOnline = true;
40+
char flag = 'A';
41+
42+
double pi = 3.14;
43+
decimal productPrice = 999.45M;
44+
float e = 2.22F;
45+
46+
/*
47+
.Net platformunda CTS(Common Type System) üzerinden gelen built-in türler dışında,
48+
kendi türlerimizi de tasarlayabiliriz. Bunun için class, struct, enum gibi blokları kullanırız.
49+
*/
50+
Car duldul = new Car();
51+
duldul.Name = "Dül Dülüm";
52+
duldul.Year = 1976;
53+
duldul.Model = "Murat 124 AC SLX";
54+
// duldul.Color = "Pamuk helva şekeri rengi";
55+
duldul.Color = ProductColor.Black;
56+
// #FFCC00 (Hexadecimal renk kodu)
57+
58+
// Aşağıdaki IP adresini string olarak değil de daha kullanışlı olması için bir struct olarak tasarlayalım.
59+
// string localIpAddress = "127.0.0.1";
60+
61+
// IPAddress (Built-In gelen bu sınıfın içeriğini inceleyelim)
62+
63+
var printerAddress = new IpInfo
64+
{
65+
Part1 = 192,
66+
Part2 = 168,
67+
Part3 = 1,
68+
Part4 = 1
69+
};
70+
Console.WriteLine("{0}.{1}.{2}.{3}", printerAddress.Part1, printerAddress.Part2, printerAddress.Part3, printerAddress.Part4);
71+
}
72+
}

ProgrammingWithCSharp.sln

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
2+
Microsoft Visual Studio Solution File, Format Version 12.00
3+
# Visual Studio Version 17
4+
VisualStudioVersion = 17.0.31903.59
5+
MinimumVisualStudioVersion = 10.0.40219.1
6+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{BCB45FAB-34F3-4E43-BCA2-790F4C362611}"
7+
ProjectSection(SolutionItems) = preProject
8+
README.md = README.md
9+
EndProjectSection
10+
EndProject
11+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Chapter01", "Chapter01\Chapter01.csproj", "{2EB417F4-E20F-40F0-B186-41CB8A126788}"
12+
EndProject
13+
Global
14+
GlobalSection(SolutionConfigurationPlatforms) = preSolution
15+
Debug|Any CPU = Debug|Any CPU
16+
Release|Any CPU = Release|Any CPU
17+
EndGlobalSection
18+
GlobalSection(ProjectConfigurationPlatforms) = postSolution
19+
{2EB417F4-E20F-40F0-B186-41CB8A126788}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
20+
{2EB417F4-E20F-40F0-B186-41CB8A126788}.Debug|Any CPU.Build.0 = Debug|Any CPU
21+
{2EB417F4-E20F-40F0-B186-41CB8A126788}.Release|Any CPU.ActiveCfg = Release|Any CPU
22+
{2EB417F4-E20F-40F0-B186-41CB8A126788}.Release|Any CPU.Build.0 = Release|Any CPU
23+
EndGlobalSection
24+
GlobalSection(SolutionProperties) = preSolution
25+
HideSolutionNode = FALSE
26+
EndGlobalSection
27+
GlobalSection(ExtensibilityGlobals) = postSolution
28+
SolutionGuid = {A2622B61-B5A7-4CAD-9CC3-84B635B74D60}
29+
EndGlobalSection
30+
EndGlobal

README.md

+20
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,22 @@
11
# ProgrammingWithCSharp
2+
23
C# programalama dersi için açılmış olan ve örnek kodları içeren repodur.
4+
5+
## Ders 00
6+
7+
## Ders 01
8+
9+
Sorular / Araştırma Konuları
10+
11+
- Solution (sln) ne işe yarar?
12+
- Main metodu hakkında neler söyleyebiliriz?
13+
14+
Bugün kullandığımız komutlar.
15+
16+
```shell
17+
# Github reposundan proje klonlamak için
18+
git clone https://github.com/buraksenyurt/ProgrammingWithCSharp.git
19+
20+
# Yeni bir solution açmak için
21+
dotnet new sln
22+
```

0 commit comments

Comments
 (0)