Skip to content

Commit

Permalink
eklemeler
Browse files Browse the repository at this point in the history
  • Loading branch information
sulincix committed Sep 19, 2023
1 parent d980ba1 commit e479f34
Show file tree
Hide file tree
Showing 18 changed files with 220 additions and 0 deletions.
64 changes: 64 additions & 0 deletions html/c-dersi.html
Original file line number Diff line number Diff line change
Expand Up @@ -485,6 +485,70 @@ <h1>Dinamik bellek yönetimi</h1>
</span><span class="punctuation">}</span>
</pre>
</div>
<div class="section" id="struct">
<h1>Struct</h1>
<p><strong>Structure</strong> yapıları bellekte belli bir değişken topluluğu oluşturup kullanabilmek için kullanılır.
Bu yapılar sayesinde kendi veri türlerinizi tanımlayabilirsiniz.</p>
<pre class="code C literal-block">
<span class="keyword">struct</span><span class="whitespace"> </span><span class="name class">test</span><span class="whitespace"> </span><span class="punctuation">{</span><span class="whitespace">
</span><span class="keyword type">int</span><span class="whitespace"> </span><span class="name">num</span><span class="punctuation">;</span><span class="whitespace">
</span><span class="keyword type">char</span><span class="operator">*</span><span class="whitespace"> </span><span class="name">name</span><span class="punctuation">;</span><span class="whitespace">
</span><span class="punctuation">};</span><span class="whitespace">

</span><span class="keyword type">void</span><span class="whitespace"> </span><span class="name function">main</span><span class="punctuation">(){</span><span class="whitespace">
</span><span class="keyword">struct</span><span class="whitespace"> </span><span class="name class">test</span><span class="whitespace"> </span><span class="name">t1</span><span class="punctuation">;</span><span class="whitespace">
</span><span class="name">t1</span><span class="punctuation">.</span><span class="name">num</span><span class="whitespace"> </span><span class="operator">=</span><span class="whitespace"> </span><span class="literal number integer">12</span><span class="punctuation">;</span><span class="whitespace">
</span><span class="name">t1</span><span class="punctuation">.</span><span class="name">name</span><span class="whitespace"> </span><span class="operator">=</span><span class="whitespace"> </span><span class="literal string">&quot;hello&quot;</span><span class="punctuation">;</span><span class="whitespace">
</span><span class="punctuation">}</span>
</pre>
<p>Veri türü adına alias tanımlamak için <strong>typedef</strong> kullanılabilir.
Bu sayede değişken tanımlar gibi tanımlama yapmak mümkündür.</p>
<pre class="code C literal-block">
<span class="keyword">typedef</span><span class="whitespace"> </span><span class="keyword">struct</span><span class="whitespace"> </span><span class="name class">Test</span><span class="whitespace"> </span><span class="punctuation">{</span><span class="whitespace">
</span><span class="keyword type">int</span><span class="whitespace"> </span><span class="name">num</span><span class="punctuation">;</span><span class="whitespace">
</span><span class="keyword type">char</span><span class="operator">*</span><span class="whitespace"> </span><span class="name">name</span><span class="punctuation">;</span><span class="whitespace">
</span><span class="punctuation">}</span><span class="whitespace"> </span><span class="name">test</span><span class="punctuation">;</span><span class="whitespace">

</span><span class="keyword type">void</span><span class="whitespace"> </span><span class="name function">main</span><span class="punctuation">(){</span><span class="whitespace">
</span><span class="name">test</span><span class="whitespace"> </span><span class="name">t1</span><span class="punctuation">;</span><span class="whitespace">
</span><span class="name">t1</span><span class="punctuation">.</span><span class="name">num</span><span class="whitespace"> </span><span class="operator">=</span><span class="whitespace"> </span><span class="literal number integer">12</span><span class="punctuation">;</span><span class="whitespace">
</span><span class="name">t1</span><span class="punctuation">.</span><span class="name">name</span><span class="whitespace"> </span><span class="operator">=</span><span class="whitespace"> </span><span class="literal string">&quot;hello&quot;</span><span class="punctuation">;</span><span class="whitespace">
</span><span class="punctuation">}</span>
</pre>
<p>C programlama dili nesne yönelimli bir dil değildir.
Bu yüzden sınıf kavramı bulunmaz.
Fakat <strong>struct</strong> kullanarak benzer işler yapılabilir.
Bunun için fonksiyon pointeri tanımlayıp struct yapımıza ekleyelim. Bir init fonksiyonu kullanarak nesnemizi oluşturalım.</p>
<pre class="code C literal-block">
<span class="comment single">// nesne fonksiyonu türü tanımladık
</span><span class="keyword">typedef</span><span class="whitespace"> </span><span class="keyword type">void</span><span class="whitespace"> </span><span class="punctuation">(</span><span class="operator">*</span><span class="name">yazdir_func</span><span class="punctuation">)(</span><span class="keyword type">char</span><span class="operator">*</span><span class="punctuation">);</span><span class="whitespace">

</span><span class="comment single">// nesne struct yapısı tanımladık
</span><span class="keyword">typedef</span><span class="whitespace"> </span><span class="keyword">struct</span><span class="whitespace"> </span><span class="name class">Test</span><span class="whitespace"> </span><span class="punctuation">{</span><span class="whitespace">
</span><span class="comment single">// nesne fonksiyonunu tanımladık.
</span><span class="whitespace"> </span><span class="name">yazdir_func</span><span class="whitespace"> </span><span class="name">yazdir</span><span class="punctuation">;</span><span class="whitespace">
</span><span class="keyword type">int</span><span class="whitespace"> </span><span class="name">num</span><span class="punctuation">;</span><span class="whitespace">
</span><span class="punctuation">}</span><span class="whitespace"> </span><span class="name">test</span><span class="punctuation">;</span><span class="whitespace">

</span><span class="comment single">// nesne fonksiyon işlevin tanımladık
</span><span class="keyword type">void</span><span class="whitespace"> </span><span class="name function">test_yazdir</span><span class="punctuation">(</span><span class="keyword type">char</span><span class="operator">*</span><span class="whitespace"> </span><span class="name">msg</span><span class="punctuation">){</span><span class="whitespace">
</span><span class="name">printf</span><span class="punctuation">(</span><span class="literal string">&quot;%s</span><span class="literal string escape">\n</span><span class="literal string">&quot;</span><span class="punctuation">,</span><span class="name">msg</span><span class="punctuation">);</span><span class="whitespace">
</span><span class="punctuation">}</span><span class="whitespace">

</span><span class="comment single">// nesneyi oluşturan fonsiyonu tanımladık.
</span><span class="name">test</span><span class="whitespace"> </span><span class="name function">test_init</span><span class="punctuation">(){</span><span class="whitespace">
</span><span class="name">test</span><span class="whitespace"> </span><span class="name">t1</span><span class="punctuation">;</span><span class="whitespace">
</span><span class="name">t1</span><span class="punctuation">.</span><span class="name">num</span><span class="whitespace"> </span><span class="operator">=</span><span class="whitespace"> </span><span class="literal number integer">12</span><span class="punctuation">;</span><span class="whitespace">
</span><span class="name">t1</span><span class="punctuation">.</span><span class="name">yazdir</span><span class="whitespace"> </span><span class="operator">=</span><span class="whitespace"> </span><span class="name">test_yazdir</span><span class="punctuation">;</span><span class="whitespace">
</span><span class="keyword">return</span><span class="whitespace"> </span><span class="name">t1</span><span class="punctuation">;</span><span class="whitespace">
</span><span class="punctuation">}</span><span class="whitespace">

</span><span class="keyword type">void</span><span class="whitespace"> </span><span class="name function">main</span><span class="punctuation">(){</span><span class="whitespace">
</span><span class="name">test</span><span class="whitespace"> </span><span class="name">obj</span><span class="whitespace"> </span><span class="operator">=</span><span class="whitespace"> </span><span class="name">test_init</span><span class="punctuation">();</span><span class="whitespace">
</span><span class="name">obj</span><span class="punctuation">.</span><span class="name">yazdir</span><span class="punctuation">(</span><span class="literal string">&quot;Hello World&quot;</span><span class="punctuation">);</span><span class="whitespace">
</span><span class="punctuation">}</span>
</pre>
</div>
</div>
</body>
</html>
86 changes: 86 additions & 0 deletions man/c-dersi.man
Original file line number Diff line number Diff line change
Expand Up @@ -848,5 +848,91 @@ void main(){
.fi
.UNINDENT
.UNINDENT
.SH STRUCT
.sp
\fBStructure\fP yapıları bellekte belli bir değişken topluluğu oluşturup kullanabilmek için kullanılır.
Bu yapılar sayesinde kendi veri türlerinizi tanımlayabilirsiniz.
.INDENT 0.0
.INDENT 3.5
.sp
.nf
.ft C
struct test {
int num;
char* name;
};

void main(){
struct test t1;
t1\&.num = 12;
t1\&.name = \(dqhello\(dq;
}
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
Veri türü adına alias tanımlamak için \fBtypedef\fP kullanılabilir.
Bu sayede değişken tanımlar gibi tanımlama yapmak mümkündür.
.INDENT 0.0
.INDENT 3.5
.sp
.nf
.ft C
typedef struct Test {
int num;
char* name;
} test;

void main(){
test t1;
t1\&.num = 12;
t1\&.name = \(dqhello\(dq;
}
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
C programlama dili nesne yönelimli bir dil değildir.
Bu yüzden sınıf kavramı bulunmaz.
Fakat \fBstruct\fP kullanarak benzer işler yapılabilir.
Bunun için fonksiyon pointeri tanımlayıp struct yapımıza ekleyelim. Bir init fonksiyonu kullanarak nesnemizi oluşturalım.
.INDENT 0.0
.INDENT 3.5
.sp
.nf
.ft C
// nesne fonksiyonu türü tanımladık
typedef void (*yazdir_func)(char*);

// nesne struct yapısı tanımladık
typedef struct Test {
// nesne fonksiyonunu tanımladık.
yazdir_func yazdir;
int num;
} test;

// nesne fonksiyon işlevin tanımladık
void test_yazdir(char* msg){
printf(\(dq%s\en\(dq,msg);
}

// nesneyi oluşturan fonsiyonu tanımladık.
test test_init(){
test t1;
t1\&.num = 12;
t1\&.yazdir = test_yazdir;
return t1;
}

void main(){
test obj = test_init();
obj\&.yazdir(\(dqHello World\(dq);
}
.ft P
.fi
.UNINDENT
.UNINDENT
.\" Generated by docutils manpage writer.
.
Binary file modified odt/appimage-yapimi.odt
Binary file not shown.
Binary file modified odt/bash-dersi.odt
Binary file not shown.
Binary file modified odt/c-dersi.odt
Binary file not shown.
Binary file modified odt/debian-depo-olusturma.odt
Binary file not shown.
Binary file modified odt/debian-iso-yapimi.odt
Binary file not shown.
Binary file modified odt/debian-kurulumu.odt
Binary file not shown.
Binary file modified odt/debian-paket-yapimi.odt
Binary file not shown.
Binary file modified odt/docker-kullanimi.odt
Binary file not shown.
Binary file modified odt/firefox-eklentisi-yapimi.odt
Binary file not shown.
Binary file modified odt/git-kullanimi.odt
Binary file not shown.
Binary file modified odt/inary-paket-yapimi.odt
Binary file not shown.
Binary file modified odt/makefile-dersi.odt
Binary file not shown.
Binary file modified odt/python-dersi.odt
Binary file not shown.
Binary file modified odt/qemu-kullanimi.odt
Binary file not shown.
Binary file modified odt/vala-dersi.odt
Binary file not shown.
70 changes: 70 additions & 0 deletions rst/c-dersi.rst
Original file line number Diff line number Diff line change
Expand Up @@ -548,3 +548,73 @@ Konunun daha iyi anlaşılması için 2 stringi toplayan fonksiyon yazalım.
char *new_str = add( "hello", "world");
printf("%s\n", new_str);
}
Struct
^^^^^^
**Structure** yapıları bellekte belli bir değişken topluluğu oluşturup kullanabilmek için kullanılır.
Bu yapılar sayesinde kendi veri türlerinizi tanımlayabilirsiniz.

.. code-block:: C
struct test {
int num;
char* name;
};
void main(){
struct test t1;
t1.num = 12;
t1.name = "hello";
}
Veri türü adına alias tanımlamak için **typedef** kullanılabilir.
Bu sayede değişken tanımlar gibi tanımlama yapmak mümkündür.

.. code-block:: C
typedef struct Test {
int num;
char* name;
} test;
void main(){
test t1;
t1.num = 12;
t1.name = "hello";
}
C programlama dili nesne yönelimli bir dil değildir.
Bu yüzden sınıf kavramı bulunmaz.
Fakat **struct** kullanarak benzer işler yapılabilir.
Bunun için fonksiyon pointeri tanımlayıp struct yapımıza ekleyelim. Bir init fonksiyonu kullanarak nesnemizi oluşturalım.

.. code-block:: C
// nesne fonksiyonu türü tanımladık
typedef void (*yazdir_func)(char*);
// nesne struct yapısı tanımladık
typedef struct Test {
// nesne fonksiyonunu tanımladık.
yazdir_func yazdir;
int num;
} test;
// nesne fonksiyon işlevin tanımladık
void test_yazdir(char* msg){
printf("%s\n",msg);
}
// nesneyi oluşturan fonsiyonu tanımladık.
test test_init(){
test t1;
t1.num = 12;
t1.yazdir = test_yazdir;
return t1;
}
void main(){
test obj = test_init();
obj.yazdir("Hello World");
}

0 comments on commit e479f34

Please sign in to comment.