Bilgisayar Temelleri ve Programlamaya Giriş Yard.Doç.Dr. Metin HASDEMİR İstanbul-2008 PROGRAMLAMAYA GİRİŞ

Benzer belgeler
ÖLÜM 1- GİRİŞ Visual Basic

Algoritmalar. 3. Açıklık: Her işlem (komut) açık olmalı ve farklı anlamlar içermemeli.

Algoritmanın Hazırlanması

PROGRAMLAMAYA GİRİŞ ve BASIC

TEMEL BİLGİSAYAR BİLİMLERİ. Programcılık, problem çözme ve algoritma oluşturma

AKIŞ ŞEMASI AKIŞ ŞEMASI AKIŞ ŞEMASI ŞEKİLLERİ GİRİŞ

Algoritmalar ve Programlama. Algoritma

Bilgisayar Programı Nedir?

BİL1002 Bilgisayar Programlama PROF.DR.TOLGA ELBİR

Bilgisayar programlaması sırasında izlenebilecek bir çok yol ve yöntem vardır. Programcının probleme ilişkin çözümü ortaya çıkarabilmesi için problem

Dr. Musa KILIÇ Öğretim Görevlisi

BÖLÜM 1: PROGRAMLAMAYA GİRİŞ

ALGORİTMA NEDİR? (Adım adım işlem basamaklarının yazılmasıdır.)

C PROGRAMLAMA YRD.DOÇ.DR. BUKET DOĞAN PROGRAM - ALGORİTMA AKIŞ ŞEMASI

Bilgisayar Programlama. Giriş

Algoritma ve Akış Diyagramları

SİNOP ÜNİVERSİTESİ MESLEK YÜKSEK OKULU

Algoritmik Program Tasarımı, Akış Şemaları ve Programlama. Bilgisayar Mühendisliğine Giriş 1

Programlamanın Temelleri

BMT 101 Algoritma ve Programlama I 3. Hafta. Yük. Müh. Köksal GÜNDOĞDU 1

EM205 26/9/2014. Programlamaya giriş Algoritmalar. Amaçlar

ALGORİTMALAR. Turbo C Bilgisayarda Problem Çözme Adımları. Bilgisayarda Problem Çözme Adımları.

FBEB-512 C++ ile Nesne Tabanlı Programlama Güz 2009 (1. Hafta) (Yrd. Doç. Dr. Deniz Dal)

Yazılım Çeşitleri. Uygulama Yazılımları. İşletim Sistemleri. Donanım

BMT 101 Algoritma ve Programlama I 2. Hafta. Yük. Müh. Köksal GÜNDOĞDU 1

Bilgisayarda Programlama. Temel Kavramlar

Örnek bir Algoritma. Örneğimiz bir insanın evden çıkıp işe giderken izleyeceği yolu ve işyerine girişinde ilk yapacaklarını tanımlamaktadır.

PROGRAMLAMAYA GİRİŞ DERS NOTLARI

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay.

EĞİTİM ÖĞRETİM MÜNEVVER ÖZTÜRK ORTAOKULU II. DÖNEM BİLİŞİM TEKNOLOJİLERİ VE YAZILIM DERSİ DERS NOTLARI

TEMEL BİLGİSAYAR BİLİMLERİ

BÖLÜM 2: ALGORİTMALAR

HÜPP PYTHON I.HAFTA ALGORİTMA MANTIĞI, AKIŞ DİYAGRAMLARI VE PYTHON'A GİRİŞ

Genel Programlama I

Bilgisayar Programlama Dilleri

Algoritma ve Programlamaya Giriş. Mustafa Kemal Üniversitesi Kırıkhan Meslek Yüksekokulu Bilgisayar Teknolojileri Bölümü

PROGRAMLAMA TEMELLERİ

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 10. LINUX OS (Programlama) BİLGİ & İLETİŞİM TEKNOLOJİLERİ GENEL BAKIŞ

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

Algoritma ve Akış Diyagramları

Algoritma ve Programlamaya Giriş. Mustafa Kemal Üniversitesi Kırıkhan Meslek Yüksekokulu Bilgisayar Teknolojileri Bölümü

BİLGİSAYAR PROGRAMLAMA MATLAB

BLG 1306 Temel Bilgisayar Programlama

BILGISAYAR PROGRAMLAMAYA GIRIS

Fen ve Mühendislik Uygulamalarında MATLAB

Programlama Dilinin Özellikleri

Program Nedir?(1) Programlamaya Giriş

BİLGİSAYAR ORGANİZASYONU

Programlama Giriş. 17 Ekim 2015 Cumartesi Yrd. Doç. Dr. Mustafa YANARTAŞ 1

MAK 1005 Bilgisayar Programlamaya Giriş. BİLGİSAYARA GİRİŞ ve ALGORİTMA KAVRAMI

10.DERS Yazılım Gerçekleştirme

PROGRAMLAMAYA GİRİŞ VE ALGORİTMA «YTÜROK» EĞİTMEN:REHA ÖZGÜR ŞİMŞEK


Okut. Yüksel YURTAY. İletişim : (264) Sayısal Analiz. Algoritma & Matlab.

Dr. Fatih AY Tel: fatihay@fatihay.net

ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

Yazılım Mühendisliğine Giriş 4. Hafta 2016 GÜZ

5. PROGRAMLA DİLLERİ. 5.1 Giriş

BİLGİSAYAR PROGRAMLAMA. Algoritma ve Akış Şemaları

1.1. Yazılım Geliştirme Süreci

Yrd. Doç. Dr. Fatih YÜCALAR YZM Celal Bayar Üniversitesi Teknoloji Fakültesi

C++ Dersi: Nesne Tabanlı Programlama

Algoritma Hazırlama. Programlama. nereden başlamalı? ALGORİTMA VE PROGRAMLAMA Öğr.Gör.Günay TEMUR

ALGORİTMA KAVRAMI. Bir sorunu / problemi çözmek veya belirli bir amaca ulaşmak için gerekli olan sıralı mantıksal adımların tümüne algoritma denir.

Algoritma ve Programlama I

Bilgisayar Programlama. 1.Hafta

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-1 Temel Kavramlar ve Algoritma

Ana Bellek (RAM) İşlemci (CPU) Depolama

İÇERİK PROGRAMLAMAYA GİRİŞ ALGORİTMA AKIŞ DİYAGRAMLARI PROGRAMLAMA DİLLERİ JAVA DİLİNİN YAPISI JAVA DA KULLANILAN VERİ TİPLERİ JAVA DA PROGRAM YAZMA

4- Turbo Pascal Bilgisayar Programlamada Kullanılan Şart Yapıları

PROBLEM ÇÖZME PROGRAMLAMA ve ÖZGÜN ÜRÜN GELİŞTİRME

BİLGİSAYAR PROGRAMLAMAYA GİRİŞ

Günümüz bilgi toplumunda bilgisayar, her alanda kendine yer edinmiş ve insana, bir çok işlemde yardımcı olarak büyük kolaylık sağlamaktadır.

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ (Algoritma Geliştirmek, Satır Kod)

VERİ YAPILARI VE PROGRAMLAMA (BTP104)

PROGRAMLAMAYA GİRİŞ VE ALGORİTMA. Yazılım Nedir Algoritma Akış Seması Örnekler

ALGORİTMA VE AKIŞ ŞEMALARI

GÜMÜŞHANE ÜNĐVERSĐTESĐ MÜHENDĐSLĐK VE DOĞA BĐLĐMLERĐ FAKÜLTESĐ ELEKTRĐK-ELEKTRONĐK MÜHENDĐSLĐĞĐ EEM 114 ALGORĐTMA TASARIMI VE PROGRAMLAMA DĐLLERĐ

ALGORİTMA VE PROGRAMLAMA (Bölüm 1) Prof. Dr. Hakan Ündil - Elektronik Teknolojisi Güz Bölüm 1-2

Üst düzey dillerden biri ile yazılmış olan bir programı, makine diline çeviren programa derleyici denir. C++ da böyle bir derleyicidir.

ÜNİT E ÜNİTE GİRİŞ. Algoritma Mantığı. Algoritma Özellikleri PROGRAMLAMA TEMELLERİ ÜNİTE 3 ALGORİTMA

Programlama Temelleri. Ders notları. Öğr.Gör. Hüseyin Bilal MACİT 2017

Algoritma ve Programlamaya Giriş

İÇERİK PROGRAMLAMAYA GİRİŞ ALGORİTMA AKIŞ DİYAGRAMLARI PROGRAMLAMA DİLLERİ JAVA DİLİNİN YAPISI JAVA DA KULLANILAN VERİ TİPLERİ JAVA DA PROGRAM YAZMA

BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ. Yrd.Doç.Dr. Emel ARSLAN

ALP OĞUZ ANADOLU LİSESİ EĞİTİM ÖĞRETİM YILI BİLGİSAYAR BİLİMİ DERSİ 2.DÖNEM 2.SINAV ÖNCESİ ÇALIŞMA SORULARI VE YANITLARI

ALGORİTMA TASARIMI VE SCRATCH UYGULAMASI

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

JAVA DÖNGÜ DEYİMLERİ. For Döngüsü

DERS 4 MİKROİŞLEMCİ PROGRAMLAMA İÇERİK

Hafta 1 Programlamaya Giriş

Algoritma ve Akış Şemaları

Bilgisayar II Dersi. Bölüm-2

BİLGİSAYAR PROGRAMLAMA DERSİ

EM-554 İleri Bilgisayar Programlama Teknikleri Algoritma ve Akış Diyagramları

Dekleratif Programlama. Örnek : Aile Ağacı. SWI-Prolog. Prolog Dekleratif programlama dili

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

Hafta 1 Programlamaya Giriş

Hafta 4 Döngü Yapıları

Kazanımlar. Programlama Dili Nedir? Programlama Dili. ENF102 Jeoloji

Transkript:

PROGRAMLAMAYA GİRİŞ Bir program bilgisayara ne yapması gerektiğini söyleyen bir dizi komuttan oluşmaktadır. Bilgisayar yapılması istenilen komutları anlayabilmesi için, bu komutların bilgisayarın anlayacağı dilde yani makine dilinde yazılması gerekmektedir. Ancak günümüzde bilgisayarın yapması istenilen komutlar bir programcı tarafından makine dili ile girilmez. Bunun yerine komutlar programcı tarafından yapısal bir dil aracılığıyla girilir ve daha sonra bilgisayarın bu komutları anlayabilmesi için makine diline çevrilir. Bu işleme derleme (compiler) denir. 1950'li yıllarda ticari amaçla piyasaya çıkarılan ilk bilgisayarlarda, giriş bilgilerinin uygulanarak bir çıkış bilgisi (çıktı) elde edilmesinde doğrudan doğruya Makine Dili nden yararlanılırdı. Bugün programlama çok daha kolay yapılabilmektedir. Daha önce belirtildiği gibi, bir program kullanıcının isteklerini makineye anlatan ve makinenin ne yapması gerektiğini söyleyen komutlar dizisi olarak ifade edilebilir. Bu komutlar ya makinenin fiziki yapısına uygun olarak verilir ya da kullanıcının anlayacağı dilde komutlar olabilirler. Bunlara makine dili denir. Komutlar bir aracı programla makine diline çevrilir. Makine dili ile program yazmak hemen hemen kalkmış durumdadır. Çok uzun işlemler gerektirir. 1

PROGRAMLAMA Bilgisayar programı bilgisayar sisteminde yapılması gereken işleri tam olarak belirlemeye yarayan tanımlar kümesidir. Diğer bir deyişle program, bilgisayardan yapması istenilenleri tanımlayan işlem konutlarından oluşur. Bu programın yazım kurallarına Programlama Dili denir. Doğal dillerde olduğu gibi, programlama dillerinin de kullanım kuralları ve geliştirme vardır. Çok sayıda programlama dili bulunmakla beraber, hepsinde ortak olan, bilgisayarın işlemlerini yönetmeye yönelik komut tanımları yer alır. Giriş/Çıkış, matematiksel, ve komutları yönlendirmeye yönelik denetim komutları gibi. Sözünü ettiğimiz dil makineden bağımsız, diğer bir deyişle taşınabilir Üst düzey Dillerdir. Bilgisayar programlaması sırasında izlenebilecek bir çok yol ve yöntem vardır. Bilgisayar programcısının problemin ilişkin çözümünü ortaya çıkarabilmesi için problem çözümü ile ilgili bilgileri bilmesi gerekir. Bilgisayar programlamasında genel olarak belirli kalıp ve kurallara uyulur. 2

Bir bilgisayar yazılımının oluşturulması sırasında genel olarak aşağıda sıralanan ana adımlara uyulur. * Problemin tanımı * Çözüm yönteminin belirlenmesi * Programın kodlanması * Programın çalışır duruma getirilmesi * Belgeleme ve güncelleştirme Programlama dillerinin sınıflandırılması Gelişmelere uygun olarak programlama dillerini, alçak seviyeli diller ve yüksek seviyeli diller olarak da ikiye ayırmak mümkündür. Birincisine Assembler, ikincisine FORTRAN, BASIC, PL/l, APL örnek olarak verilebilir. Bir dil, bilgisayarın kullandığı dile ne kadar yakınsa o kadar alçak seviyeli, ne kadar uzaksa (doğal dile yakınsa) o kadar yüksek seviyeli olarak adlandırılır 3

Programlama Dillerinin Sınıflandırılması: a) Makineye uygun programlama dilleri: Sembol ve kodlar kullanılır. Programcı pek çok şeyi ve işi programı içinde sağlamak zorundadır. Assembler çevirici dili bu tip bir programlama dilidir. b) Probleme uygun programlama dili: Kullanıcının bilgisayarı fazla tanımasına gerek yoktur. Kullandığı bilgisayara uygun olarak dil kurallarını bilmesi yeterlidir. Örnek olarak Cobol, RPG II ve PL/I verilebilir. c) İşleme uygun programlama dilleri: abu tür programlama dillerinden kullanıcı bilgisayarın yapısı konusunda hiçbir bilgiye ihtiyacı yoktur. Genellikle kullandığı dilin özelliklerini ve kurallarını bilen bir bilim adamı olabilir ki bilgisayar yapısı ile ilgisi kopuktur. FORTRAN, BASIC, VISUALBASIC, ALGOL gibi programlama dilleri örnek olarak verilebilir. 4

Kullanılan programlama dillerini düzeyleri açısından da aşağıdaki gibi sınıflandırabilir; Birinci Kuşak Diller Makine Dilleri veri ve program komutları, 1 ve 0 'larla ifade edilir. Her bilgisayar türünün kendi makine dili vardır. Kodlamanın zor olduğu, hata yapmaya çok açık dillerdir. Bu durum daha kolay yazılabilir ve anlaşılabilir olan assembly dilinin geliştirilmesini sağlamıştır. İkinci Kuşak Diller Assembly Dili (Birleştitici Dili) günümüzde bu dil çok alçak seviyeli olarak kabul edilir. İngilizce benzeri komutlardan oluşan bir dildir. Assembly dili ile yazılmış bir program, bir çevirici (assembler) ile makine diline çevrilerek çalıştırılır. Oldukça anlaşılabilir gözükmesine karşın çok basit bir iş için bile çok sayıda komut yazmak gerekmektedir. Kullanımı çok daha kolay olan dillerin ortaya çıkmış olması nedeniyle, neredeyse hiç kimse artık assembly ile program kodlamamaktadır. 5

Üçüncü Kuşak Diller Bunlara Yüksek Seviyeli Diller'de denir. 1960'larda yaygınlaşmıştır. İngilizceye benzer ifadelerin kullanıldığı, aritmetik işlemlerde kullandığımız işaretlerin kullanıldığı, daha hızlı ve kolay program yazmayı sağlayan, programcının daha kolay program yazabildiği dillerdir Çok sayıda dil geliştirilmiştir. Bunlar; Pascal, Fortran, Cobol, Algol, PL/I, C, C++ vb. Bu dillerin ifadeleri derleyici tarafından makine diline çevrilirler. Bu kuşak dillere yordamsal (procedural) diller denilmektedir. Bunun nedeni bu dillerle çözümün nasıl yapılacağının ayrıntılı olarak belirtilmesidir. Dördüncü Kuşak Diller Bu kuşak dillere 4GL (Fourth Generation Languages) denir. Çok Yüksek Seviyeli Programlama Dilleridir. 3. kuşak dillerde yüzlerce satır halinde kodlanan bir pogram, 4.kuşak dillerle birkaç satırda ifade edilir. Çünkü bu dillerle sadece ne yapılmak istendiği belirtilir, nasıl yapılacağı ile ilgilenilmez. Dolayısıyla bu dillere yordamsal olmayan diller (non-procedural) denir. Bu dillere örnek olarak; SQL, SPS, php, Asp gibi dilleri verilebilir. 6

Beşinci Kuşak Diller Bu kuşak dillerde amaç tamamen doğal dillerin özelliklerini taşıyan programlama dilleri üretmektir. En önemli örnek PROLOG'dur. Bu diller yapay zeka ve robotik çalışmalarında önemli bir yer almaktadır. Bazı Programlama dillerinin kısa açıklamaları: COBOL: Common Business Oriented Language: RPG: Report Program Generator: PL/I: Program Language One: BASIC: Beginner's All Purpose Symbolic Instruction Code: 7

ALGORİTMA KAVRAMI Algoritma belirli bir görevi yerine getiren sonlu sayıdaki işlemler dizisidir. Bir başka deyişle bir problemin çözümündeki işlemlerin kararların ve bunların icra edildiği sıranın oluşturduğu akış olarak düşünülebilir ve algoritma; bilgisayarlar ile herhangi bir problem çözümü; problemin tarifi, formüle edilmesi, sistem analizi ve program şeklinde yapılması diye özetlenebilir. Herhangi bir problem formüle edildikten sonra problemin çözümü için gerekli bilgilerin tayini ile kısa ve doğru biçimde çözülmesi için yapışması gereken adımların belirlenmesine, programın Algoritması veya Sistem Analizi denir. Her algoritma aşağıdaki kriterleri sağlamalıdır. 1. Girdi: Sıfır veya daha fazla değer dışarıdan verilmeli. 2. Çıktı: En azından bir değer üretilmeli. 3. Açıklık: Her işlem (komut) açık olmalı ve farklı anlamlar içermemeli. 4. Sonluluk: Her türlü olasılık için algoritma sonlu adımda bitmeli. 5. Etkinlik: Her komut kişinin kalem ve kağıt ile yürütebileceği kadar basit olmalıdır. 8

Algoritmanın İfade Edilmesi Algoritmaları ifade edebilmek için temel olarak üç yöntem kullanılır. Bunlar; Doğal dil ile ifade etmek. Algoritmik dil (Pseudocode) ile ifade etmek. Akış diyagramı (flowchart) ile ifade etmek. Doğal Dil İle İfade Bir problemin çözümü için gerekli olan algoritmanın doğal dil kullanılarak ifade edilmesi en basit yoldur. Ancak doğal dil ile ifadenin sakıncaları olabilir. Bu anlatılanların yanlış yorumlanmasından dolayı yanlış anlaşılmasını doğurabilir. Algoritma, verilen herhangi bir sorunun çözümüne ulaşmak için uygulanması gerekli adımların hiç bir yoruma yer vermeksizin açık, düzenli ve sıralı bir şekilde söz ve yazı ile ifadesidir. Algoritmayı oluşturan adımlar özellikle basit ve açık olarak sıralandırılmalıdır. 9

Algoritmik Dil (Pseudocode) İle İfade Algoritmik dil (Pseudocode), algoritma geliştirmede programcılara yardımcı olan dildir; günlük konuşma dilimizde kullandığımız sözcüklerden oluşur. Bu dille yazılan program bilgisayarda yürütülemez; ancak programcıya geliştirmeye çalıştığı algoritma üzerinde düşünmesini, şekillendirmesini ve oluşturmasını sağlar. İyi yazılmış bir pseudocode'u gerçek bir programlama diline çevirmek oldukça kolaydır. Pseudocode ile sadece yürütülecek cümleler yazılır. Örnek : Verilen bir sayının faktöriyelini hesaplayan programın algoritmasının oluşturulması Sayının faktöriyeli :Fak Faktöriyel degişkeni :X Faktöriyeli hesaplanacak sayı :Y 10

Algoritma: A0 : Başla A1 :Fak=1, X= 0 A2 :Y i gir A3 :Y<0 ise 2. adımı tekrarla A4 :X=X+1 A5 :Fak=Fak*X A6 :X<Y ise 4. adıma geri dön A7 :Fak değerini yaz A8 :Bitir Bu algoritmada 1. adımda X e 0 ve Fak değişkenine 1 değeri atanıyor. 2. adımda Y değeri giriliyor ve 3. adımda Y değerinin 0 dan küçük bir değer olup olmadığı denetleniyor ve denetim sonucuna göre gerekli komut veriliyor. 4. adımda X in değeri 1 arttırılıyor ve 5. adımda X için Fak değeri hesaplanıyor. 6. adımda X in değerinin faktöriyeli hesaplanacak sayıdan küçük olması durumunda 4. adımdan itibaren işlemlerin tekrarlanması komutu veriliyor, X in değerinin Y ye eşit olması durumunda işlemler tamamlanarak hesaplanan değerin yazdırılması işleminden sonra programın çalışması sona ermektedir. 11

Örnek :. ax 2 +bx+c=0 ikinci dereceden bir denklemin köklerini veren algoritmayı algoritmik dilde yazınız. A0 : Başla A1 : a, b ve c katsayılarını giriniz A2 : D=b 2-4ac yi hesaplayınız A3 : D<0 ise gerçel kök yok 7. adıma gidiniz A4 : x1=(-b+(d)^1/2)/(2a) A5 : x2 =(-b-(d)^1/2)/(2a) A6 : x1 ve x2 değerlerini yaz 8. adıma git A7 : Reel Kök Yok. A8 : Bitir 12

Akış Diyagramı İle İfade Akış diyagramları (flowchart) ise algoritmaların içerdiği işlemlerin birer geometrik şekiller ile ifade edilmesi olarak tanımlanabilir. Akış diyagramları programlama aşamasında programı kodlamak, kotrol etmek, açıklamak, gözden geçirmek ve gerekirse güncellemek açısından büyük kolaylıklar sağlamaktadır. Akış Diyagramı için kullanılan şekiller ve bunların anlamları aşağıda verilmiştir. Akış diyagramı sembolleri ANSI (American National Standards Institute) standardı olarak belirlenmiş ve tüm dünyada kullanılmaktadır 13

14

15

Ayrıntılı bir akış diyagramı, yazılımı oluşturan işlemleri ve ilişkilerini en küçük detayına kadar belirler. Bir bilgisayar programının geliştirilmesinde kullanılan programlama dili ne olursa olsun bu programların akış diyagramlarında genel olarak yalnız üç basit mantıksal yapı kullanılır. Bu mantıksal yapılardan en basiti sıralı yapıdır. Sıralı yapı, hazırlanacak programdaki her işlemin mantık sırasına göre nerede yer alması gerektiğini vurgular. Bu yapı sona erinceye kadar ikinci bir işlem başlayamaz Sıralı yapı. 16

Mantıksal yapılardan ikincisi aşağıda görüllen Karar Verme yapısıdır. Programlama sırasında If...Then..., elseif, Else yapısı ile tanıyacağımız bu mantıksal yapılar, birden fazla sıralı yapı seçeneğini kapsayan modüllerde, hangi şartlarda hangi sıralı yapının seçileceğini belirler. Karar verme yapısı. 17

Üçüncü mantıksal yapı çeşidini Tekrarlı Yapılar oluşturmaktadır. Bu yapılara döngü yapısı adı da verilir. Şartlara göre değişik işlem gruplarının yapılmasını sağlar. Bu yapı yukarıda sözü edilen iki yapının çeşitli kombinezonların tekrarlanmasından oluşmuştur. Söz konusu üç değişik yapı, değişik kombinezonlarda kullanılarak istenilen işlevleri yerine getirecek programlar hazırlanabilir. Programların bu üç basit yapı ile sınırlandırılması program modüllerinin daha kolay tasarlanmasını sağlar. Tekrarlı yapı. 18