Bölüm 3. Söz Dizilimi ve Anlamı Tanımlama ISBN

Ebat: px
Şu sayfadan göstermeyi başlat:

Download "Bölüm 3. Söz Dizilimi ve Anlamı Tanımlama ISBN"

Transkript

1 Bölüm 3 Söz Dizilimi ve Anlamı Tanımlama ISBN

2 Bölüm 3 Konular Giriş Söz Dizimi Tanımlamadaki Genel Problem Söz Dizimi Tanımlamanın Biçimsel Yöntemleri Gramerlerin özellikleri Programların Anlamlarını Tanımlama: Dinamik Anlamlar

3 Giriş Bir programlama dilinin özlü ve anlaşılır bir tanımını yapma görevi zor ancak dilin başarısı için gereklidir ALGOL 60 ve ALGOL 68 kısa açıklamalar kullanılarak sunulan ilk dillerdir Bazı diller, biraz daha farklı lehçelere sahip olma sorunu yaşadı; bunun nedeni, basit fakat resmi olmayan ve kesin olmayan tanımın bir sonucudur Bir dili tanımlamadaki sorunlardan biri, açıklamayı anlaması gereken kişilerin çeşitliliğidir: ilk değerlendiriciler, uygulayıcılar ve kullanıcılar (son kullanıcılar) Çoğu yeni programlama dili, tasarımlarının tamamlanmasından önce, tasarımıcı kuruluştaki kullanıcılar tarafından incelenir. Bunlara ilk değerlendiriciler denir. Programlama dili uygulayıcılarının bir dildeki ifadelerin ve program birimlerinin nasıl oluşturulduğunu ve yürütülürken amaçlanan etkilerini belirleyebilmesi gerekir Dil kullanıcıları, bir dil referans el kitabına başvurarak yazılım çözümlerini nasıl kodlayacaklarını belirleyebilmelidir. Ders kitapları ve dersler bu sürece girer ancak dil el kitapları genellikle bir dil hakkında yalnızca basılı bilgi kaynağıdır Programlama dilleri için yapılan çalışmalar, doğal dil çalışmaları gibi, sözdizimi ve anlambilim alt başlıklarına ayrılabilir Bir programlama dili sözdizimi, ifadeler ve program birimleridir Dilin semantiği, bu ifadelerin ve program birimlerinin anlamıdır

4 Giriş Türkçe, İngilizce gibi doğal diller veya Java, C gibi yapay diller, alfabedeki karakter dizelerinin bir dizisidir Bir dildeki karakter dizelerine cümleler veya deyimler denir Dilin sözdizimi kuralları, dilin alfabesindeki hangi karakter dizelerinin sıralanacağını belirtir Örneğin, Türkçe de, cümlelerin sözdizimini belirten çok sayıda karmaşık kurallar vardır En büyük ve en yaygın kullanılan programlama dilleri bile doğal dillerle karşılaştırıldığında sözdizimsel olarak çok basittir Programlama dillerinin sözdiziminin biçimsel tanımlamaları çoğu zaman en düşük seviyedeki söz dizimi birimlerinin açıklamalarını içermez Bu küçük birimlere lexem (sözcük) adı verilir Sözcüklerin tanımı, genellikle sözdizimsel tanımdan ayrı olan bir yapı ile oluşturulur Bir programlama dili lexemlar, sayısal literaller, operatörler ve özel kelimeler içerir Programları, karakter dizelerinden çok lexem dizeleri olarak düşünebiliriz Lexemler çeşiti gruplara ayrılmıştır: Değişkenler Metotlar Sınıflar Dildeki özel kelimeler Her lexem grubu bir isim veya simge ile temsil edilir. Bu simgelere lexem ın kategorisi (token) denir.

5 Giriş Söz dizimi (syntax): ifadeler, anlatımlar ve program birimlerinin yapı ya da şekli Anlambilim (semantics): ifadelerin, anlatımların ve program birimlerinin anlamı Söz dizimi ve anlambilim bir dilin tanımını verir Bir dil tanımının kullanıcıları Diğer dil tasarımcıları Uygulayıcılar Programcılar(dilin kullanıcıları)

6 Söz Dizimi Tanımlama: Terminoloji Cümle alfabelerdeki karakterlerden oluşan dizi Dil cümleler kümesidir Sözcük (lexeme) dilin en alt seviye söz dizimsel birimi (örnek: *, sum, begin) Sembol (token) Sözcüklerin türü, kategorisidir (ör, belirleyici-identifier)

7 Dillerin Biçimsel Tanımı Bir dilin tanımı iki yolla yapılır: Tanıyıcılar (Recognizers) Bir tanıma aracı dilin girdi dizilerini okur ve girilen diziler o dile ait mi değil mi karar verir Örnek: bir derleyicinin sözdizimi analizi kısmı Üreticiler (Generators) Bir dilin cümlelerini üreten araç Bir kimse belli bir cümlenin söz diziliminin doğru olup olmadığına onu üreticinin yapısıyla karşılaştırarak karar verebilir

8 Söz Dizilimi Tanımlamanın Biçimsel Yöntemleri Backus-Naur Form(BNF) ve Bağlamdan Bağımsız Gramer (Context-Free Grammar) Programlama dilinin söz dizimini tanımlamada çok iyi bilinen yöntem 1950'lerin ortalarında, Noam Chomsky ve John Backus, aynı sözdizimi açıklama biçimini geliştirdiler; daha sonra sözdizimi açıklama biçimlemesi programlama dilinin en yaygın kullanılan yöntemi haline geldi. Genişletilmiş (Extended) BNF-EBNF BNF nin okunabilirlik ve yazılabilirliğinin geliştirilmiş şekli Gramerler ve Tanıyıcılar(Recognizers)

9 BNF ve Bağlamdan Bağımsız (Context-Free) Gramerler Bağlamdan Bağımsız Gramerler Noam Chomsky tarafından 1950 lerin ortalarında geliştirildi Dört dil sınıfını tanımlayan dört gramer sınıfı tanımladı Bağlam içermeyen ve düzenli olarak adlandırılan bu dilbilgisi sınıflarından ikisi, programlama dillerinin sözdizimini açıklamak için kullanışlı oldukları ortaya çıktı Küçük istisnalarla birlikte tüm programlama dillerinin sözdizimi bağlamsız dilbilgisi ile açıklanabilir Chomsky bir dilbilimci olduğu için, birincil ilgi doğal dillerin teorisi üzerine çalıştı, programlama dilleri ile ilgisi yoktu Dil üreticileri, doğal dillerin söz dizimini tanımlama için kullandılar

10 Backus-Naur Form (BNF) Backus-Naur Form(1959) John Backus tarafından Algol 58 i tanımlamak için icat edildi BNF bağlamdan bağımsız gramere denktir BNF diğer dilleri tanımlamada kullanılan bir metadildir. BNF de söz dizimsel yapıların sınıflarını göstermek için soyutlamalar kullanılır: Bunlar söz dizimsel değişkenler gibi davranırlar Bu yapıya nonterminal semboller denir

11 BNF Temelleri Non-terminaller: BNF soyutlamaları Terminaller: sözcükler ve jetonlar BNF, sözdizimsel yapılar için soyutlamalar kullanır. Örneğin, basit bir Java atama ifadesi, <assign> <var> = <expression> <assign> soyutlaması ile temsil edilebilir <> parantezler soyutlamaları Gramer: kurallar bütünü BNF kurallarının örnekleri: <ident_list> identifier identifier,<ident_list> <if_stmt> if <logic_expr> then <stmt>

12 BNF Kuralları Bir kuralın sol tarafı (LHS) ve sağ tarafı (RHS) vardır Kural, terminal ve nonterminal semboller içerir LHS, non-terminalden oluşur RHS, non-terminal veya terminal (tokenlar veya lexemlar) içerir Gramer, sonlu, boş olmayan kurallar kümesidir Bir soyutlama (ya da non-terminal sembol) birden fazla sağ tarafa sahip olabilir <stmt> <single_stmt> begin <stmt_list> end

13 BNF Kuralları Örnek olarak bir Java if yapısının kuralı şöyle <if_stmt> if ( <logic_expr> ) <stmt> Veya: <if_stmt> if ( <logic_expr> ) <stmt> else <stmt> <if_stmt> if ( <logic_expr> ) <stmt> if ( <logic_expr> ) <stmt> else <stmt>

14 Listeleri Tanımlama Söz dizimsel listeler özyineleme kullanılarak tanımlanırlar <ident_list> ident ident, <ident_list> Bir derivasyon, kuralların, başlama sembolünden başlayıp bir cümle ile biten tekrarlı uygulamasıdır

15 Gramer ve Derivasyon Gramer, dilleri tanımlamak için kullanılan bir araçtır Dilin cümleleri, başlangıç sembolü adı verilen gramerin non-terminallerinden başlayarak, kuralların bir dizi uygulaması yoluyla oluşturulur Bu kural uygulamalarına türetme (derivasyon) denir Bir programlama dili için bir gramer başlangıç simgesi komple bir programı temsil eder ve genellikle <program> gösterimiyle ifade edilir Bir derivasyon, kuralların, başlama sembolünden başlayıp bir cümle ile biten tekrarlı uygulamasıdır

16 Örnek Bir Gramer <program> <stmts> <stmts> <stmt> <stmt> ; <stmts> <stmt> <var> = <expr> <var> a b c d <expr> <term> + <term> <term> - <term> <term> <var> const Ok işaretine dikkat ediniz! Stmts: Komutlar, program içindeki komut satırları Stmt: Bir tek komut, bir tek komut satırı Var: Değişken Expr: İfade Term: Terim Const: Sabit (3 veya 17 gibi)

17 Örnek Bir Derivasyon <program> => <stmts> => <stmt> => <var> = <expr> => a =<expr> => a = <term> + <term> => a = <var> + <term> => a = b + <term> => a = b + const Ok işaretine dikkat ediniz!

18 Derivasyon Derivasyondaki sembollerin her dizisi cümleye ait bir formdur Bir cümle sadece terminal sembolleri, sabitleri veya değişken adlarını içeren cümlesel bir formdur Her cümlesel formdaki açıklanacak en sol non-terminalin olduğu derivasyon, en sol derivasyondur Cümleler en-sağ non-terminaller şeklinde de oluşturulabilir

19 Bir Başka Gramer Örneği Gramer 2: <program> begin <stmt_list> end <stmt_list> <stmt> <stmt> ; <stmt_list> <stmt> <var> = <expression> <var> A B C <expression> <var> + <var> <var> <var> <var>

20 Gramer 2 nin Derivasyon Örneği <program> => begin <stmt_list> end => begin <stmt>;<stmt_list>end => begin <var>=<expression>;<stmt_list>end => begin A = <expression> ; <stmt_list> end => begin A = <var> + <var> ; <stmt_list> end => begin A = B + <var> ; <stmt_list> end => begin A = B + C ; <stmt_list> end => begin A = B +C ;<stmt>end => begin A = B + C ; <var> = <expression> end => begin A = B +C ;B =<expression>end => begin A = B +C ;B =<var>end => begin A =B +C ;B = C end

21 Bir Başka Gramer Örneği Gramer 3: Basit atama ifadesinin grameri <assign> <id> = <expr> <id> A B C <expr> <id> + <expr> <id> * <expr> ( <expr> ) <id> SORU: A =B*(A+C) ifadesi bu gramere göre doğru mu? assign: Assisgnment, atama (sağ taraf işlemlerinin sol tarafa) id: identifier-tanımlayıcı, değişken adı, metot adı gibi

22 Gramer Ayrıştırma Ağacı Gramerlerin en önemli özelliklerinden biri, tanımladıkları dillerin cümlelerinin hiyerarşik sözdizimsel yapısını doğal olarak tanımlamalarıdır Bu hiyerarşik yapılara ayrıştırma ağaçları denir Ayrıştırma ağaçları düğümlerden, dallardan ve yapraklardan oluşur Ayrıştırma ağacının her düğümü bir non-terminal sembolle etiketlenir Her yaprak bir terminal simgesi ile etiketlenir Ayrıştırma ağacının her alt ağacı, cümledeki bir soyutlamanın bir örneğini açıklar

23 Gramer Ayrıştırma Ağacı <program> <stmts> <stmt> <var> = <expr> a <term> + <var> b <term> const

24 Gramer Ayrıştırma Ağacı

25 Gramerlerde Belirsizlik İki veya daha fazla ayrı ayrıştırma ağacına sahip bir cümlecik formu üreten bir gramer belirsizdir (ambigious) Belirsizlik bir ifadenin birden fazla anlama gelmesi durumunda söz konusu olur Gramerde belirsizliği tespit etmek için bir cümle iki ayrı ayrıştırma ağacı ile oluşturulmaya çalışılır. Eğer oluşturulabilirse gramer belirsizdir

26 Belirsiz İfadeli Bir Gramer <assign> <id> = <expr> <id> A B C <expr> <expr>+<expr> <expr>*<expr> ( <expr> ) <id> Bu gramer belirsizdir! Neden?

27 Kesin İfadeli Bir Gramer Eğer gramerde operatörlerin öncelik seviyesini değerlendirilmişse belirsizlik olmaz <assign> <id> = <expr> <id> A B C <expr> <expr> + <term> <term> <term> <term> * <factor> <factor> <factor> ( <expr> ) <id> Bu gramer belirli midir? Örnek bir cümle için değerlendiriniz! Örnek cümle de benden olsun: A = B + C * A

28 Operatörlerin Birlikteliği Operatörlerin birlikteliği gramerlerle de gösterilebilir Operatörlerin birlikteliği, aynı öncelik seviyesine sahip operatörlerin yan yana gelmesi durumunda oluşur Örnek: A/B/C

29 Genişletilmiş BNF BNF'de birkaç küçük eksiklikten dolayı, çeşitli şekillerde genişletilmiştir BNF nin üzerine özellik ilaveleri yapılmış versiyonuna Genişletilmiş BNF (Extended BNF) veya kısaca EBNF denir Genişletmeler BNF'nin gramer tanımlama gücünü arttırmaz; sadece BNF nin okunabilirliğini ve yazılabilirliğini kolaylaştırır EBNF'nin çeşitli sürümlerinde yaygın olarak üç genişletme bulunur

30 Genişletilmiş BNF Seçmeli kısımlar kare parantezler [] arasına yerleştirilir <proc_call> -> ident [(<expr_list>)] Sağ tarafların alternatif kısımları normal parantezler arasına dikey çizgi ile ayrılarak yerleştirilir <term> <term> (+ -) const Tekrarlar (0 veya daha fazla tekrar) kıvırcık parantez {} içine yerleştirilir <ident> letter {letter digit}

31 BNF ve EBNF BNF <expr> <expr>+<term> <expr>-<term> <term> <term> <term> * <factor> <term> / <factor> <factor> EBNF <expr> <term> {(+ -) <term>} <term> <factor> {(* /) <factor>

32 BNF ve EBNF BNF <expr> <expr> + <term> <expr> - <term> <term> <term> <term> * <factor> <term> / <factor> <factor> <factor> <exp> ** <factor> <exp> <exp> (<expr>) id EBNF <expr> <term> {(+ -) <term>} <term> <factor> {(* /) <factor>} <factor> <exp> { ** <exp>} <exp> (<expr>) id

33 Öznitelik (Attribute) Gramerleri Bağlamdan bağımsız gramerler (CFGs) programlama dillerinin tüm söz dizimini tanımlayamaz Öznitelik grameri, bir programlama dilinin yapısını daha fazla tanımlamak için kullanılan, bağlamdan bağımsız gramer ile tanımlanabilen bir aygıttır Öznitelik grameri, bağlamdan bağımsız gramerin bir uzantısıdır Bu sayede tür uyumluluğu gibi belirli dil kurallarının rahatça tanımlanması sağlanır Öznitelik gramerini tanımlayabilmek için statik anlambilim ve statik anlam kontrolü kavramlarının tanımına ihtiyaç vardır Ayrıştıma ağaçları boyunca bazı anlamsal bilgileri taşımak için CFG lere eklemeler yapılır

34 Statik Anlambilim BNF ile bir dilin tüm yapısını tanımlamak zordur belki de imkansızdır Örneğin, tür kontrolü konusunda; Java'da, bir floating-point değer bir tamsayı değişkene atanamaz, tersi doğru olmasına rağmen Bu kısıtlama BNF'de belirtilmesine rağmen, ek non-terminal semboller ve kurallar gerektirir Java'nın tüm yazım kuralları BNF'de belirtilmiş olsaydı, gramerin boyutu çok büyük olurdu BNF'de belirtilemeyen bir sözdizimi kuralı örneği: Değişkenlerin kullanılmadan önce bildirilmesinin zorunlu olduğu kuralı. Bu kuralın BNF de bildirilemediği kanıtlanmıştır BNF ile tanımlanamayan veya tanımlanması çok zor olan kurallar, statik semantik kuralları adı verilen dil kuralları kategorisindedir Bir dilin statik semantiği, yürütme sırasındaki programların anlamıyla doğrudan doğruya ilişkilidir

35 Statik Anlambilim Bir dildeki birçok statik anlamsal kural, tür kısıtlamalarını belirtir Bu kuralların analizi derleme zamanında yapıldığı için adına Statik semantik denmiştir BNF ile statik anlambilim tanımlayamama problemleri nedeniyle, bu görev için çeşitli daha güçlü mekanizmalar tasarlanmıştır. Böyle bir mekanizma olan öznitelik grameri, Knuth tarafından hem programların sözdizimini hem de statik semantiği tanımlamak üzere tasarlanmıştır Öznitelik grameri, bir programın statik semantik kurallarının doğruluğunu tanımlamak ve kontrol etmek için resmi bir yaklaşımdır Derleyici tasarımında her zaman resmi bir biçimde kullanılmasalar da, öznitelik gramerinin temel kavramları en azından her derleyicide gayri resmi olarak kullanılır Deyimlerin, ifadelerin ve program birimlerinin anlamı olan sematik türü dinamik semantiktir

36 Öznitelik Gramerleri Öznitelik grameri, niteliklere, hesaplama fonksiyonlarına ve doğrulama fonksiyonlarına eklenen bağlamdan bağımsız gramerlerdir Gramer simgeleriyle (terminal ve nonterminal simgeler) ilişkilendirilen özellikler, değişkenlere, kendilerine atanmış değerlere sahip olabilecekleri şekilde benzer niteliktedir Nitelik hesaplama fonksiyonları, bazen anlamsal işlevler olarak adlandırılır ve gramer kurallarıyla ilişkilendirilir Özellik değerlerinin nasıl hesaplandığını belirtmek için kullanılırlar. Dilin statik semantik kurallarını belirleyen doğrulama fonksiyonları grmaer kurallarıyla ilişkilendirilir

37 Öznitelik Gramerleri: Tanım Bir nitelik grameri aşağıdakilerle birlikte bağlamdan bağımsız bir gramerdir Her X gramer sembolü için nitelik değerlerinin bir A(X) kümesi vardır. A(X) kümesi iki ayrık küme olan S(X) ve I(X) den oluşur. S(X): Sentezlenmiş nitelik: Sentezlenen öznitelikler ayrıştırma ağacına yukarı yönde semantik bilgi aktarmak için kullanılır I(X): Kalıt alınmış nitelik: Miras alınan öznitelikler anlam bilgisi bilgilerini aşağı yönde bir ağaca aktarır Her bir kuralın kuraldaki non-terminallerin belli niteliklerini tanımlayan fonksiyonlar kümesi vardır Her kuralın, niteliklerin tutarlılıklarını kontrol etmek üzere belirteçler kümesi vardır

38 Öznitelik Gramerleri: Tanım Her gramer kuralı ile ilişkili olarak, gramer kuralındaki simgelerin nitelikleri üzerinde bir dizi semantik fonksiyon ve muhtemelen boş bir doğrulama fonksiyonu kümesi vardır Bir kural X0 S X1 c Xn için, X0 ın sentetik boyutlu öznitelikleri, S (X0) = f (A (X1), c, A (Xn)) biçimindeki semantik fonksiyonlarla hesaplanır Ayrıştırma ağacı düğümünde sentezlenen bir öznitelik değeri yalnızca o düğümün alt öğelerindeki öznitelik değerlerine bağlıdır. Xj, 1... j... n sembollerinin (yukarıdaki kuralda) devralınan nitelikleri, I(Xj) = f (A (X0), c, A (Xn)) formundaki semantik bir fonksiyon ile hesaplanır Ayrıştırma ağacı düğümünde kalıtsal bir öznitelik değeri, o düğümün kendine özgü düğümünün ve onun kardeş düğümlerinin özellik değerlerine bağlıdır. Döngüselliğin önüne geçmek için kalıtsal nitelikler genellikle I(Xj) = f (A (X0), c, A (X (j-1)) formundaki fonksiyonlarla sınırlandırılmıştır Bu form, miras alınmış bir özniteliğin kendisine veya ayrıştırma ağacındaki sağdaki niteliklere bağlı kalmasını önler

39 Öznitelik Gramerleri: Tanım Bir doğrulama fonksiyonu, {A (X0), c, A (Xn)} öznitelikleri birleşimi ve bir literal öznitelik değerleri kümesi üzerinde bir Boolean ifadesi biçimindedir. Bir öznitelik grameri ile izin verilen tek bir derivasyon (her nonterminal bir doğrulama fonksiyonu ile ilişkilidir) doğrudur (true). Sonucu yanlış (false) olan bir doğrulama fonksiyonu, sözdiziminin veya dilin statik anlam kuralının ihlal edildiğini gösterir. Öznitelik gramerinin bir ayrıştırma ağacı, muhtemelen boş olan her düğüme eklenen öznitelik değerleri kümesiyle birlikte, alttaki BNF dilbilgisine dayanan ayrıştırma ağacından oluşur Ayrıştırma ağacındaki tüm öznitelik değerleri hesaplandıysa, ağacın tamamen özelliklendirildiği söylenir Uygulamada her zaman bu şekilde yapılmamasına rağmen, öznitelik değerlerinin, özelliklendirilmemiş ayrıştırma ağacının derleyici tarafından oluşturulduktan sonra hesaplandığı düşünülür.

40 Yapısal Öznitelikler Yapısal öznitelikler (Intrinsic attributes), değerleri ayrıştırma ağacının dışında belirlenen yaprak düğümlerden sentezlenen öznitelikleridir Örneğin, bir programdaki değişken örneğinin türü, değişken adlarını ve türlerini depolamak için kullanılan sembol tablosundan gelebilir Sembol tablosunun içeriği, daha önceki deklarasyon ifadelerine dayanarak belirlenir. Başlangıçta, özelliklendirilmemiş ayrıştırma ağacının yapılandırıldığını ve öznitelik değerlerinin gerekli olduğunu varsayarak, değerleri olan tek öznitelik, yaprak düğümlerinin öz nitelikleridir Bir ayrıştırma ağacındaki yapısal öznitelik değerleri göz önüne alındığında, semantik fonksiyonlar kalan öznitelik değerlerini hesaplamak için kullanılabilir

41 Öznitelik Gramerleri: Tanım özeti X 0 X 1... X n bir kural olsun S(X 0 ) = f(a(x 1 ),..., A(X n )) şeklindeki fonksiyonlar sentezlenmiş nitelikleri tanımlar I(X j ) = f(a(x 0 ),..., A(X n )), 1<= j <= n şeklindeki fonksiyonlar miras kalan nitelikleri tanımlar İlk önce yapraklarda gerçek nitelikler vardır

42 Öznitelik Gramerleri: Bir Örnek Basit bir atama ifadesinin tür kurallarını denetlemek için bir öznitelik gramerinin nasıl kullanılacağını gösteriyor Bu atama ifadesinin sözdizimi ve statik semantiği şöyledir: Değişken adları A, B ve C'dir Atamaların sağ tarafı, bir değişken veya bir değişken eklenmiş bir ifade olabilir Değişkenler iki türde olabilir: int veya real Bir atamanın sağ tarafında iki değişken olduğunda, aynı tür olması gerekmez İşlenen türleri aynı olmadığında, ifade türü her zaman real olur Değişkenler aynı olduğunda ifade tipi, işlenenlerin türüdür Atamanın sol tarafının türü, sağ tarafın türüne uygun olmalıdır. Böylece sağ taraftaki işlenenlerin türleri karışık olabilir Ancak atama yalnızca hedef ve sağ tarafın değerlendirilmesinden elde edilen sonucun değeriyle aynı türde olması durumunda geçerlidir

43 Öznitelik Gramerleri: Örnek Söz dizimi <assign> -> <var> = <expr> <expr> -> <var> + <var> <var> <var> -> A B C Actual_type(gerçek_tür): <var> ve <expr> için sentezlenmiştir. Bunlar <var> veya <expr> de int ve real gerçek türlerini depolamak için kullanılır. Var içinde saklanırsa, gerçek tür yapısaldır. Expr içinde saklanırsa çocuk düğümlerin gerçek türlerinden belirlenir Expected_type(beklenen_tür): <expr> için mirastır. Atama ifadesinin sol tarafındaki var ın türü kullanılarak belirlenir

44 Öznitelik Gramerleri:Örnek (devam) Sözdizimi kuralı: <expr> <var>[1] + <var>[2] Anlam kuralı: <expr>.actual_type <var>[1].actual_type Belirteçler: <var>[1].actual_type == <var>[2].actual_type <expr>.expected_type == <expr>.actual_type Sözdizimi kuralı : <var> id Anlam kuralı : <var>.actual_type lookup (<var>.string)

45 Öznitelik Gramerleri:Örnek (devam) Niteliklerin değerleri nasıl hesaplanıyor? Eğer tüm nitelikler miras ise ağaç yukarıdan aşağıya doğru oluşturulabilir Eğer tüm nitelikler sentezlenmiş ise ağaç aşağıdan yukarıya doğru oluşturulabilir Pek çok durumda her iki nitelik çeşidi de kullanılır ve aşağıdan yukarıya ya da yukarıdan aşağıya bir kombinasyon kullanılmalıdır

46 Öznitelik Gramerleri:Örnek (devam) <expr>.expected_type ebeveynden miras <var>[1].actual_type lookup (A) <var>[2].actual_type lookup (B) <var>[1].actual_type =? <var>[2].actual_type <expr>.actual_type <var>[1].actual_type <expr>.actual_type =? <expr>.expected_type

47 Öznitelik Gramerleri:Örnek (devam) 1.Syntax kuralı: <assign> <var> = <expr> Semantik kuralı: <expr>.expected_type <var>.actual_type 2.Syntax kuralı: <expr> <var>[2] + <var>[3] Semantik kuralı: <expr>.actual_type if (<var>[2].actual_type = int) and (<var>[3].actual_type = int) then int else real end if Doğrulama: <expr>.actual_type == <expr>.expected_type 3.Syntax kuralı: <expr> <var> Semantik kuralı: <expr>.actual_type <var>.actual_type Predicate: Doğrulama: <expr>.actual_type == <expr>.expected_type 4. Syntax kuralı: <var> A B C Semantik kuralı: <var>.actual_type look-up(<var>.string) Look-up fonksiyonu verilen bir değişkenin sembol tablosundan değişken türünü bulur

48 Öznitelik Gramerleri:Örnek (devam) A=A+B için ayrıştırma ağacı

49 Öznitelik Gramerleri:Örnek (devam)

50 Anlambilim Anlamı tanımlamanın geniş ölçekte kabul edilen, tek bir notasyonu ya da biçimi yoktur Bir programlama dilinin anlam (semantic) kuralları, bir dilde sözdizimsel olarak geçerli olan herhangi bir programın anlamını belirler Anlamsal tanımlama için varolan yöntemler oldukça karmaşıktır ve hiçbir yöntem sözdizim tanımlamak için kullanılan BNF metadili gibi yaygın kullanıma ulaşmamıştır. İşlevsel Anlam Programın anlamını gerçek olarak ya da simülasyonla, ifadelerini makine üzerinde çalıştırarak tanımlar. Makinenin (hafıza, kayıtçılar, vs.) durumundaki değişim ifadenin anlamını tanımlar

51 İşlevsel Anlambilim Yüksek seviye bir dil için işlevsel anlambilimi kullanmak bir sanal makine gerektirir Donanımsal bir saf yorumlayıcı çok pahalı olurdu Yazılımsal bir saf yorumlayıcının da problemleri var Özel bir bilgisayarın detaylı karakteristiği eylemlerin anlaşılmasını güçleştirebilirdi Böyle bir anlambilim tanımlaması makine bağımlı olurdu

52 İşlevsel Anlambilim (devam) Daha iyi bir alternatif: bütün bir bilgisayar simülasyonu Süreç: Bir çevirici kur (kaynak kodunu ideal bir bilgisayarın makine koduna çeviren) İdeal bir bilgisayar için bir simülatör yap İşlevsel anlambilimin değerlendirmesi: Eğer gayri resmi kullanılıyorsa (dil kılavuzu, vs) iyi Eğer resmi olarak kullanılıyorsa (ör, VDL) oldukça karmaşık, o PL/I ın anlambilimini tanımlamada kullanılırdı

53 Aksiyomatik (Belitsel) Anlambilim Biçimsel mantık tabanlı (analize dayalı) Asıl amaç: biçimsel program doğrulaması Aksiyomlar ya da çıkarım kuralları dildeki her bir ifade türü için tanımlanmıştır(ifadelerin başka ifadelere dönüşümüne izin vermek için) İfadelere iddia denir

54 Aksiyomatik Anlambilim(devam) Bir ifadenin önündeki bir iddia(assertion) (bir önşart(precondition)), çalıştırıldığı zaman değişkenler arasında true olan ilişki ve kısıtları(constraints) belirtir Bir ifadenin arkasından gelen iddiaya sonşart(postcondition) denir En zayıf önşart(weakest precondition), sonşartı garanti eden asgari kısıtlayıcı önşarttır

55 Aksiyomatik Anlamın Biçimi Ön-son(Pre-post) biçimi : {P} ifade {Q} Bir örnek: a = b + 1 {a > 1} Mümkün bir önşart: {b > 10} En zayıf önşart: {b > 0}

56 Program İspat Süreci Tüm program için son şart istenen sonuçtur Program boyunca ilk ifadeye doğru tersten çalış. Eğer ilk ifadedeki ön şart programın tanımlamalarıyla aynı ise program doğrudur

57 Aksiyomatik Anlam: Aksiyomlar Bir atama ifadesi için aksiyom: (x = E): {Q x->e } x = E {Q} Sonucun kuralı: {P} S{Q}, P' Þ P, Q Þ Q' {P'}S{Q'}

58 Aksiyomatik Anlam: Aksiyomlar Diziler için bir çıkarım kuralı {P1} S1 {P2} {P2} S2 {P3} {P1} S1{P2}, {P2} S2{P3} {P1} S1; S2{P3}

59 Aksiyomatik Anlam: Aksiyomlar Mantıksal ön test döngüsü için bir çıkarım kuralı {P} while B do S end {Q} (I and B) S{I} {I}while B do S{I and (not B)} I: döngü sabiti (tümevarımsal hipotez)

60 Aksiyomatik Anlam: Aksiyomlar Döngü sabitinin(invariant) özellikleri I, aşağıdaki şartları sağlamalıdır: P => I (döngü değişkeni başlangıçta true olmalı) {I} B {I} (Boolean hesabı I nin doğruluğunu(geçerliliğini) değiştirmemelidir) {I and B} S {I} (Döngü gövdesinin çalıştırılmasıyla I değişmez) (I and (not B)) => Q (I true ise ve B false ise, Q bulunur(implied)) Döngü sonlanır (ispatlamak zor olabilir)

61 Döngü Sabiti Döngü sabiti I döngünün son şartının zayıflatılmış bir versiyonudur I döngünün başlangıcından önce karşılanmak/sağlanmak/tatmin edilmek için yeterince zayıf olmalı, ama döngünün bitiş koşuluyla bütünleştirildiğinde son şartın doğruluğunu güçlendirmek için yeterince güçlü olmalı

62 Aksiyomatik Anlamın Değerlendirmesi Bir dilde tüm ifadeler için aksiyomlar veya çıkarım kuralları geliştirmek zordur İspatların doğruluğu için iyi bir araç ve programlar hakkındaki muhakemeler için kusursuz bir taslaktır, fakat dilin kullanıcıları ve derleyici yazanlar için kullanışlı değildir Bir programlama dilinin anlamını tanımlamadaki kullanışlılığı dilin kullanıcıları ve derleyici yazanlarla sınırlıdır

63 Matematiksel Nesnelerle Anlambilim Özyinelemeli fonksiyon teorisi tabanlı En soyut anlam tanımlama yöntemi İlk kez Scott ve Strachey tarafından geliştirildi (1970)

64 Matematiksel Nesnelerle Anlambilim (devam) Bir dil için denotasyonel şartname hazırlama süreci. Dilin her birimi için matematiksel bir nesne tanımla Dil birimlerinin örneklerini ilgili matematiksel nesnelerin örnekleriyle eşleştiren bir fonksiyon tanımla Dil yapılarının anlamı sadece programın değişkenlerinin değerleriyle tanımlanır

65 Denotasyonel-İşlevsel İşlevsel anlambilimde durum değişimleri kodlanan algoritma tarafından tanımlanır Denotasyonel (matematiksel nesnelerle) anlambilimde durum değişimleri kesin matematiksel fonksiyonlarla tanımlanır

66 Döngünün Anlamı Döngünün anlamı, hata olmadığı varsayılarak, program değişkenlerinin döngüdeki ifadeler istenen sayıda çalıştıktan sonraki değeridir Esas itibariyle, döngü yinelemeden özyinelemeli kontrolün diğer özyinelemeli durum eşleştirme fonksiyonları tarafından matematiksel olarak tanımlandığı özyinelemeye dönüştürülür Özyineleme, yinelemeyle karşılaştırıldığında matematiksel kesinlikle tanımlaması daha Resul kolay Kara

67 Denotasyonel Anlamın Değerlendirmesi Programların doğruluğunun ispatında kullanılabilir Programlar hakkında düşünmek için kesin bir yol sağlar Dil tasarımına bir yardım olabilir Derleyici üretim sistemlerinde kullanılmıştır Karmaşıklığı sebebiyle dil kullanıcıları tarafından çok az kullanılmıştır

68 Özet BNF ve bağlamdan bağımsız gramerler meta dillere denk Programlama dillerinin sözdizimini tanımlamaya uygun Bir nitelik grameri dilin sözdizimi ve anlamını tanımlayan betimleyici bir biçimselliktir Anlambilimi tanımlamanın 3 temel yöntemi İşlem, aksiyomatik, denotasyonel

Semantik (Semantics): ifadelerin, deyimlerin, ve program birimlerinin anlamı Sentaks ve semantik bir dilin tanımı sağlar

Semantik (Semantics): ifadelerin, deyimlerin, ve program birimlerinin anlamı Sentaks ve semantik bir dilin tanımı sağlar PDP 3 1 Sentaks (Syntax): ifadelerin (statements), deyimlerin (expressions), ve program birimlerinin biçimi veya yapısı Semantik (Semantics): ifadelerin, deyimlerin, ve program birimlerinin anlamı Sentaks

Detaylı

Konular. Hafta 2 BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

Konular. Hafta 2 BLG339 PROGRAMLAMA DİLLERİ KAVRAMI BLG339 PROGRAMLAMA DİLLERİ KAVRAMI Hafta 2 Yrd. Doç. Dr. Melike Şah Direkoğlu Alındığı kaynak: Addison-Wesley s Programming Language Concepts slaytları ve Prof. Dr. Tuğrul Yılmaz ın ders notlarından faydalanarak

Detaylı

Bölüm 3. Sentaks ve semantik tarifi ISBN 0-321-49362-1

Bölüm 3. Sentaks ve semantik tarifi ISBN 0-321-49362-1 Bölüm 3 Sentaks ve semantik tarifi ISBN 0-321-49362-1 Bölüm 3 Konuları Giriş Genel olarak sentaks tarifi Sentaks tarifinin matematiksel yöntemleri Özellik gramerleri (Attribute Grammars) Programların anlamını

Detaylı

Bölüm 3. Sözdizimi(Syntax) ve Anlamsal(Semantics) Tanımlama ISBN 0-321-49362-1

Bölüm 3. Sözdizimi(Syntax) ve Anlamsal(Semantics) Tanımlama ISBN 0-321-49362-1 Bölüm 3 Sözdizimi(Syntax) ve Anlamsal(Semantics) Tanımlama ISBN 0-321-49362-1 Bölüm 3 Konuları Giriş Sözdizim(Syntax) tanımlamanın genel problemi Sözdizim(Syntax) tanımlamada resmi metotlar Özellik Gramerleri

Detaylı

Sentaks (Syntax): ifadelerin (statements), deyimlerin (expressions), ve program birimlerinin biçimi veya yapısı

Sentaks (Syntax): ifadelerin (statements), deyimlerin (expressions), ve program birimlerinin biçimi veya yapısı Sentaks (Syntax): ifadelerin (statements), deyimlerin (expressions), ve program birimlerinin biçimi veya yapısı PDP 3 Semantik (Semantics): ifadelerin, deyimlerin, ve program birimlerinin anlamı Sentaks

Detaylı

YZM Biçimsel Diller ve Otomata Teorisi. Ders#06

YZM Biçimsel Diller ve Otomata Teorisi. Ders#06 YZM 3229- Biçimsel Diller ve Otomata Teorisi Ders#06 İçerikten Bağımsız Diller İçerikten Bağımsız Diller (Context-Free Languages) Şu ana değin Düzenli Dilleri İfade Etmek için Kullanılabilecek Yapıları

Detaylı

BIM 202 - Bahar 2011. Programlama Dilleri

BIM 202 - Bahar 2011. Programlama Dilleri BIM 202 - Bahar 2011 Programlama Dilleri Prof. Dr. Tuğrul Yılmaz e-posta: tyilmaz@mu.edu.tr Tuğrul Yılmaz - Pamukkale Üniversitesi 1 Sözdizim (syntax) ve Anlambilim (Semantics) Her programlama dilindeki

Detaylı

HSancak Nesne Tabanlı Programlama I Ders Notları

HSancak Nesne Tabanlı Programlama I Ders Notları DİZİLER Bellekte ard arda yer alan aynı türden nesneler kümesine dizi (array) denilir. Bir dizi içerisindeki bütün elemanlara aynı isimle ulaşılır. Yani dizideki bütün elemanların isimleri ortaktır. Elemanlar

Detaylı

Bölüm 8. İfade Seviyesindeki Kontrol Yapıları ISBN

Bölüm 8. İfade Seviyesindeki Kontrol Yapıları ISBN Bölüm 8 İfade Seviyesindeki Kontrol Yapıları ISBN 0-321-49362-1 Bölüm 8 Konular Giriş Seçme İfadeleri Yinelemeli İfadeler Şartsız Dallanma Korumalı Komutlar Sonuçlar Kontrol Akışının Seviyeleri İfadeler

Detaylı

PASCAL PROGRAMLAMA DİLİ YAPISI

PASCAL PROGRAMLAMA DİLİ YAPISI BÖLÜM 3 PASCAL PROGRAMLAMA DİLİ YAPISI 3.1. Giriş Bir Pascal programı en genel anlamda üç ayrı kısımdan oluşmuştur. Bu kısımlar bulunmaları gereken sıraya göre aşağıda verilmiştir. Program Başlığı; Tanımlama

Detaylı

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Uzaktan Eğitim Uygulama ve Araştırma Merkezi JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Fonksiyon Tanımlamak Java da Döngüler Java da Şart İfadeleri Uygulamalar Java da Fonksiyon Tanımlamak JAVA DA FONKSİYON TANIMLAMAK 4 Fonksiyonlar;

Detaylı

Bölüm 7. İfadeler ve atamalar ISBN

Bölüm 7. İfadeler ve atamalar ISBN Bölüm 7 İfadeler ve atamalar ISBN 0-321-49362-1 7. Bölüm konuları Giriş Aritmetik ifadeler Çok anlamlı (overloaded) operatörler Tip dönüşümleri (conversions) İlişkisel ve Boolean İfadeler Kısa-devre hesaplama

Detaylı

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ Dersin Adı Kodu Sınıf / Y.Y. Ders Saati (T+U+L) Kredi AKTS PROGRAMLAMA DİLLERİ BG-324 3/2 3+0+0 3+0 4 Dersin Dili : TÜRKÇE Dersin Seviyesi

Detaylı

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

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

Detaylı

Chapter 8. Komut düzeyi kontrol yapıları ISBN

Chapter 8. Komut düzeyi kontrol yapıları ISBN Chapter 8 Komut düzeyi kontrol yapıları ISBN 0-321-49362-1 8. bölüm konuları Giriş Seçme komutları Tekrarlayan komutlar Şartsız dallanma Korumalı komutlar Sonuç Tercüme edip geliştiren: Doç. Dr. Zeki Bayram,

Detaylı

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say İÇİNDEKİLER 1. Bilgisayarın Yapısı Ve Programlama Dilleri Giriş 1 Bilgisayar ve Programlamanın Kısa Bir Tarihçesi 2 Donanım ve Yazılım Kavramları 3 Bilgisayarın Donanımsal yapısı 4 Giriş Birimi (Input

Detaylı

İÇ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

İÇ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 İÇ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ÖLÜM-II ALGORİTMA I. GİRİŞ Bilgisayar dünyasında, insanın

Detaylı

Değişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while

Değişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while Değişkenler Değişkenler bir bilginin bellekteki konumunu temsil eden sembolik isimlerdir. Bilgisayarda hemen hemen tüm işlemler bellekte yapılır. Program çalıştırıldığında değişken ve bu değişkenin türüne

Detaylı

Bilgisayarda Programlama. Temel Kavramlar

Bilgisayarda Programlama. Temel Kavramlar Bilgisayarda Programlama Temel Kavramlar KAVRAMLAR Programlama, yaşadığımız gerçek dünyadaki problemlere ilişkin çözümlerin bilgisayarın anlayabileceği bir biçime dönüştürülmesi / ifade edilmesidir. Bunu

Detaylı

BİLGİSAYAR PROGRAMLAMA DERSİ

BİLGİSAYAR PROGRAMLAMA DERSİ BİLGİSAYAR PROGRAMLAMA DERSİ 4. DERS NOTU Konu: M-dosya yapısı ve Kontrol Yapıları Hazırlayan: Yrd. Doç. Dr. Ahmet DUMLU 1 M-Dosya Yapısı Bir senaryo dosyası (script file) özel bir görevi yerine getirmek

Detaylı

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA I ALGORİTMA VE PROGRAMLAMA I YZM 1101 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Giriş Fonksiyonlara Genel Bakış C ve Fonksiyonlar Fonksiyon Tanımı 8. BÖLÜM 3 Fonksiyonlar

Detaylı

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

TEMEL BİLGİSAYAR BİLİMLERİ. Programcılık, problem çözme ve algoritma oluşturma TEMEL BİLGİSAYAR BİLİMLERİ Programcılık, problem çözme ve algoritma oluşturma Programcılık, program çözme ve algoritma Program: Bilgisayara bir işlemi yaptırmak için yazılan komutlar dizisinin bütünü veya

Detaylı

Bölüm 2 Varlık-İlişki Veri Modeli: Araçlar ve Teknikler. Fundamentals, Design, and Implementation, 9/e

Bölüm 2 Varlık-İlişki Veri Modeli: Araçlar ve Teknikler. Fundamentals, Design, and Implementation, 9/e Bölüm 2 Varlık-İlişki Veri Modeli: Araçlar ve Teknikler Fundamentals, Design, and Implementation, 9/e Üç Şema Modeli Üç şema modeli 1975 de ANSI/SPARC tarafından geliştirildi Veri modellemeninç ve rolünü

Detaylı

DENİZ HARP OKULU BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

DENİZ HARP OKULU BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ DENİZ HARP OKULU BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ Dersin Adı Kodu Sınıf/Y.Y. Ders Saati (T+U+L) Kredi AKTS Programlama Dillerinin Prensipleri BİM-323 3/II 3+0+0 3 4 Dersin

Detaylı

FORMEL DİLLER VE SOYUT MAKİNALAR. Hafta 2

FORMEL DİLLER VE SOYUT MAKİNALAR. Hafta 2 FORMEL DİLLER VE SOYUT MAKİNALAR Hafta 2 OTOMATA TEORİSİ Otomata teorisi (özdevinim kuramı ya da otomat teorisi), teorik bilgisayar biliminde soyut makineleri (ya da daha uygun bir deyimle soyut 'matematiksel'

Detaylı

BİÇİMSEL YÖNTEMLER (FORMAL METHODS) Betül AKTAŞ Suna AKMELEZ

BİÇİMSEL YÖNTEMLER (FORMAL METHODS) Betül AKTAŞ Suna AKMELEZ BİÇİMSEL YÖNTEMLER (FORMAL METHODS) Betül AKTAŞ 14011021 Suna AKMELEZ 14011050 Biçimsel Yöntemler Nedir? Nerede Kullanılır? Biçimsel Tasarım Biçimsel Yöntemlerin Yararları Biçimsel Yöntemlerin Zayıf Yönleri

Detaylı

Algoritma ve Akış Diyagramları

Algoritma ve Akış Diyagramları Algoritma ve Akış Diyagramları Bir problemin çözümüne ulaşabilmek için izlenecek ardışık mantık ve işlem dizisine ALGORİTMA, algoritmanın çizimsel gösterimine ise AKIŞ DİYAGRAMI adı verilir 1 Akış diyagramları

Detaylı

HSancak Nesne Tabanlı Programlama I Ders Notları

HSancak Nesne Tabanlı Programlama I Ders Notları SABİTLER VE DEĞİŞKENLER Değişken, verilerin bellekte geçici olarak kaydedilmesini ve gerektiğinde kullanılmasını sağlayan değerdir. Nesne tabanlı programlama dilinde değişken kullanımı diğer programlama

Detaylı

BİLGİSAYAR PROGRAMLAMA DERSİ

BİLGİSAYAR PROGRAMLAMA DERSİ BİLGİSAYAR PROGRAMLAMA DERSİ Yrd. Doç. Dr. Fatih TOSUNOĞLU Erzurum Teknik Üniversitesi Mühendislik Fakültesi İnşaat Mühendisliği Bölümü DERS NOTU 3 KONU: M-dosya yapısı ve Kontrol Yapıları M-Dosya Yapısı

Detaylı

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

4- Turbo Pascal Bilgisayar Programlamada Kullanılan Şart Yapıları 4- Turbo Pascal Bilgisayar Programlamada Kullanılan Şart Yapıları Şart yapıları bir bilgisayar programının olmazsa olmazlarındandır. Şart yapıları günlük hayatımızda da çok fazla karşılaştığımız belirli

Detaylı

MTK467 Nesneye Yönelik Programlama. Hafta 4 - Döngüler Zümra Kavafoğlu https://zumrakavafoglu.github.io/

MTK467 Nesneye Yönelik Programlama. Hafta 4 - Döngüler Zümra Kavafoğlu https://zumrakavafoglu.github.io/ MTK467 Nesneye Yönelik Programlama Hafta 4 - Döngüler Zümra Kavafoğlu https://zumrakavafoglu.github.io/ while döngüsü while(koşul){ } döngü ifadeleri Koşul boolean değerli olmalıdır. Koşulun değeri true

Detaylı

Mantıksal İşlemler. 7.1 true, false, nil

Mantıksal İşlemler. 7.1 true, false, nil 7 Mantıksal İşlemler 7.1 true, false, nil Doğru ya da Yanlış değer alan önermelere (ifadelere) mantıksal (logic) deyimler ya da boolean deyimler denilir ([5]). Bir çok dilde mantıksal işlemler true ve

Detaylı

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

Dekleratif Programlama. Örnek : Aile Ağacı. SWI-Prolog. Prolog Dekleratif programlama dili Prolog Programlarının özellikleri: PROgrammig in LOGic Semboller üzerinde çalışma Problemlerin çözümünü tanımlama yerine çıkarım yapma Doğal ğ dille düşünülen ş şeylerin y kodlanması kolay Gerçekler ve

Detaylı

Bölüm 6. Veri Türleri ISBN

Bölüm 6. Veri Türleri ISBN Bölüm 6 Veri Türleri ISBN 0-321-49362-1 Bölüm 6 Konular Giriş İlkel Veri Türleri Karakter Dizisi Türleri Kullanıcı Tanımlı Sıra Türleri Dizi Türleri İlişkili Diziler Giriş Bir veri türü veri nesnelerinin

Detaylı

Uygulamalı Yapay Zeka. Dr. Uğur YÜZGEÇ Ders 2: Prolog Giriş

Uygulamalı Yapay Zeka. Dr. Uğur YÜZGEÇ Ders 2: Prolog Giriş Uygulamalı Yapay Zeka Dr. Uğur YÜZGEÇ Ders 2: Prolog Giriş Prolog Yazılımı Bedava Prolog yorumlayıcıları var Linux, Windows, Mac OS Çok fazla sayıda Prolog yazılımı indirmek mümkün Bunlardan birkaçı SWI

Detaylı

Örnek 4: Örnek Özyinelemeli fonksiyon örneği Bölüm 9. C++ programlama dilinde Nesne ve sınıf

Örnek 4: Örnek Özyinelemeli fonksiyon örneği Bölüm 9. C++ programlama dilinde Nesne ve sınıf İçindekiler 1. Giriş... 1 1.2. c++ Programı Yapısı... 2 1.3.Using Direktifi... 5 Bölüm 2. Veri türleri, değişken kavramı, sabit ve değişken bildirimleri ve c++ da kullanımı 7 2.1. Temel veri türleri...

Detaylı

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA I ALGORİTMA VE PROGRAMLAMA I Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1101 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Giriş Fonksiyonlara Genel Bakış C

Detaylı

BİLİŞİM TEKNOLOJİLERİ 6. SINIF DERS NOTLARI 2

BİLİŞİM TEKNOLOJİLERİ 6. SINIF DERS NOTLARI 2 PROGRAMLAMA Bir problemin çözümü için belirli kurallar ve adımlar çerçevesinde bilgisayar ortamında hazırlanan komutlar dizisine programlama denir. Programlama Dili: Bir programın yazılabilmesi için kendine

Detaylı

FORMEL DİLLER VE SOYUT MAKİNALAR. Hafta 1

FORMEL DİLLER VE SOYUT MAKİNALAR. Hafta 1 FORMEL DİLLER VE SOYUT MAKİNALAR Hafta 1 DİL VE FORMEL DİL KAVRAMLARI Dil, insanların karmaşık iletişim sistemlerini edinme ve kullanma becerisidir. Bir dilin formel olabilmesi için bazı niteliklerinin

Detaylı

mustafacosar@hitit.edu.tr http://web.hitit.edu.tr/mustafacosar

mustafacosar@hitit.edu.tr http://web.hitit.edu.tr/mustafacosar Algoritma ve Programlamaya Giriş mustafacosar@hitit.edu.tr http://web.hitit.edu.tr/mustafacosar İçerik Algoritma Akış Diyagramları Programlamada İşlemler o o o Matematiksel Karşılaştırma Mantıksal Programlama

Detaylı

BLGM BÖLÜM. Problem Çözme Kavramları (Algoritma ve Akış Şemaları)

BLGM BÖLÜM. Problem Çözme Kavramları (Algoritma ve Akış Şemaları) BLGM108 1. BÖLÜM Problem Çözme Kavramları (Algoritma ve Akış Şemaları) 1 Yazılım Geliştirme Adımları 1. Gereksinimlerin belirlenmesi Problemin ne olduğunu anlama: sorunu çözmek için ne gereklidir, çözüm

Detaylı

Algoritma ve Programlamaya Giriş

Algoritma ve Programlamaya Giriş Algoritma ve Programlamaya Giriş Algoritma Bir sorunu çözebilmek için gerekli olan sıralı ve mantıksal adımların tümüne Algoritma denir. Doğal dil ile yazılabilir. Fazlaca formal değildir. Bir algoritmada

Detaylı

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

BİLGİSAYAR PROGRAMLAMA. Algoritma ve Akış Şemaları BİLGİSAYAR PROGRAMLAMA Algoritma ve Akış Şemaları Algoritma tanımı Algoritma özellikleri Algoritma tasarımı Akış şemaları Dallanma simgeleri Döngü simgeleri Akış şeması tasarımı Akış şeması örnekleri Konu

Detaylı

1 PROGRAMLAMAYA GİRİŞ

1 PROGRAMLAMAYA GİRİŞ İÇİNDEKİLER IX İÇİNDEKİLER 1 PROGRAMLAMAYA GİRİŞ 1 Problem Çözme 1 Algoritma 1 Algoritmada Olması Gereken Özellikler 2 Programlama Dilleri 6 Programlama Dillerinin Tarihçesi 6 Fortran (Formula Translator)

Detaylı

Konular. Hafta 5 Veri Tipleri (Devam) BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

Konular. Hafta 5 Veri Tipleri (Devam) BLG339 PROGRAMLAMA DİLLERİ KAVRAMI BLG339 PROGRAMLAMA DİLLERİ KAVRAMI Hafta 5 Veri Tipleri (Devam) Yrd. Doç. Dr. Melike Şah Direkoğlu Konular Dizi Tipleri Kayıt Tipleri Birleşik Tipler Küme Tipleri İşaretçi ve Referans Tipleri Alındığı

Detaylı

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

PROGRAMLAMAYA GİRİŞ VE ALGORİTMA «YTÜROK» EĞİTMEN:REHA ÖZGÜR ŞİMŞEK PROGRAMLAMAYA GİRİŞ VE ALGORİTMA «YTÜROK» EĞİTMEN:REHA ÖZGÜR ŞİMŞEK Giriş-Tanımlamalar Program Nedir? Tanımlanmış bir problemi bilgisayar ortamında çözen ürüne program denir. Programlama Nedir? Tanımlanmış

Detaylı

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA I ALGORİTMA VE PROGRAMLAMA I Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1101 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Koşul Karşılaştırma Operatörleri Mantıksal

Detaylı

Manisa Celal Bayar Üniversitesi Yazılım Mühendisliği Bölümü YZM Biçimsel Diller ve Otomata Teorisi. Final Sınavı Soruları A KİTAPÇIĞI

Manisa Celal Bayar Üniversitesi Yazılım Mühendisliği Bölümü YZM Biçimsel Diller ve Otomata Teorisi. Final Sınavı Soruları A KİTAPÇIĞI Sayfa#1(A Kitapçığı) Manisa Celal Bayar Üniversitesi Yazılım Mühendisliği Bölümü YZM 3229- Biçimsel Diller ve Otomata Teorisi Final Sınavı Soruları A KİTAPÇIĞI Bahar 2017-2018 Süre: 45 Dakika Adı ve Soyadı

Detaylı

Bölüm 4. Sözcüksel ve Sözdizimsel Analiz ISBN

Bölüm 4. Sözcüksel ve Sözdizimsel Analiz ISBN Bölüm 4 Sözcüksel ve Sözdizimsel Analiz ISBN 0-321-49362-1 Bölüm 4 Konular Giriş Sözcüksel Analiz Ayrıştırma Problemi Özyineleme Kökenli Ayrıştırma Aşağıdan Yukarıya Ayrıştırma Resul Kara 2 4.1 Giriş Derleyici

Detaylı

Veri Yapıları ve Algoritmalar

Veri Yapıları ve Algoritmalar 1 Ders Not Sistemi Vize : % 40 Final : % 60 Kaynaklar Kitap : Veri Yapıları ve Algoritma Temelleri Yazar: Dr. Sefer KURNAZ Internet Konularla ilgili web siteleri 2 Algoritma : «Belirli bir problemin çözümünde

Detaylı

YZM 2105 Nesneye Yönelik Programlama

YZM 2105 Nesneye Yönelik Programlama YZM 2105 Nesneye Yönelik Programlama Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği 1 BÖLÜM - 2 C# Programlama Dili Elemanları Bu bölümde;

Detaylı

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

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 10. LINUX OS (Programlama) BİLGİ & İLETİŞİM TEKNOLOJİLERİ GENEL BAKIŞ Ders 10 LINUX OS (Programlama) BİLGİ & İLETİŞİM TEKNOLOJİLERİ GENEL BAKIŞ LINUX de Programlama LINUX işletim sistemi zengin bir programlama ortamı sağlar. Kullanıcılara sistemi geliştirme olanağı sağlar.

Detaylı

Bilgisayar Programlama

Bilgisayar Programlama Bilgisayar Programlama M Dosya Yapısı Kontrol Yapıları Doç. Dr. İrfan KAYMAZ Matlab Ders Notları M-dosyası Genel tanıtımı : Bir senaryo dosyası (script file) özel bir görevi yerine getirmek için gerekli

Detaylı

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

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ (Algoritma Geliştirmek, Satır Kod) 2017-2018 BaharYarıyılı Balıkesir Üniversitesi Endüstri Mühendisliği Bölümü 3 BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ (Algoritma Geliştirmek, Satır Kod) Yrd. Doç. Dr. İbrahim Küçükkoç Web: ikucukkoc.baun.edu.tr

Detaylı

3/7/2011. ENF-102 Jeoloji 1. Tekrar -- Değişken Tanımlamaları (Definition) ve Veri Türleri (Data Type) Veri Tanımları ve Mantıksal Đşlemler

3/7/2011. ENF-102 Jeoloji 1. Tekrar -- Değişken Tanımlamaları (Definition) ve Veri Türleri (Data Type) Veri Tanımları ve Mantıksal Đşlemler Veri Tanımları ve Mantıksal Đşlemler Tekrar -- Değişken Tanımlamaları (Definition) ve Veri Türleri (Data Type) Kullanılacak bütün değişkenlerin kullanılmadan önce C derleyicisine bildirilmeleri gerekir.

Detaylı

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

BMT 101 Algoritma ve Programlama I 3. Hafta. Yük. Müh. Köksal GÜNDOĞDU 1 BMT 101 Algoritma ve Programlama I 3. Hafta Yük. Müh. Köksal GÜNDOĞDU 1 Akış Diyagramları ve Sözde Kodlar Yük. Müh. Köksal GÜNDOĞDU 2 Sözde Kodlar (pseudo-code) Yük. Müh. Köksal GÜNDOĞDU 3 Sözde Kod Sözde

Detaylı

Bilgisayar Programlama MATLAB

Bilgisayar Programlama MATLAB What is a computer??? Bilgisayar Programlama MATLAB Prof. Dr. İrfan KAYMAZ What Konular is a computer??? MATLAB ortamının tanıtımı Matlab sistemi (ara yüzey tanıtımı) a) Geliştirme ortamı b) Komut penceresi

Detaylı

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması Ağaç, verilerin birbirine sanki bir ağaç yapısı oluşturuyormuş gibi sanal olarak bağlanmasıyla elde edilen hiyararşik yapıya sahip

Detaylı

Nesne Yönelimli Programlama

Nesne Yönelimli Programlama 1 Nesne Yönelimli Programlama Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Genel Bilgiler Ders konuları 1. Programlamaya Giriş 2. Program Denetimi ve Operatörler 3. Nesnelerin

Detaylı

Programın Akışının Denetimi. Bir arada yürütülmesi istenen deyimleri içeren bir yapıdır. Söz dizimi şöyledir:

Programın Akışının Denetimi. Bir arada yürütülmesi istenen deyimleri içeren bir yapıdır. Söz dizimi şöyledir: Programın Akışının Denetimi Bir program komutların yazıldığı sırada akar. Ama çoğunlukla, bu akışı yönlendirmek gerekir. Bu iş için denetim yapılarını kullanırız. Bunlar iki gruba ayrılabilir: Yönlendiriciler

Detaylı

5.HAFTA. Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi

5.HAFTA. Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi 5.HAFTA Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi Sınıf Kavramı: Sınıf (class) soyut bir veri tipidir. Nesne (object) onun somutlaşan bir cismidir. Java da sınıf (class) kavramını

Detaylı

C#(Sharp) Programlama Dili

C#(Sharp) Programlama Dili Değişkenler C#(Sharp) Programlama Dili Program yazarken her zaman sabit verilerle çalışmayız, çoğu zaman programımızda bir verinin kullanıcının davranışına göre değişmesi gerekir. Kullanıcıdan bir metin

Detaylı

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Đ

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Đ 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Đ DERS 1 PROGRAM GELĐŞTĐRME PROGRAM GELĐŞTĐRME VERĐ ĐŞLEME(DATA

Detaylı

2 PYTHON A GIRIŞ 13 PyCharm İle Python Projesi Oluşturma 15 Projenin Çalıştırılması 18 İlk Python Programımız 19 Açıklama Satırları 21

2 PYTHON A GIRIŞ 13 PyCharm İle Python Projesi Oluşturma 15 Projenin Çalıştırılması 18 İlk Python Programımız 19 Açıklama Satırları 21 İÇİNDEKİLER VII İÇİNDEKİLER 1 PYTHON 1 Neden Python? 2 Python Sürümleri 2 Python Kurulumu 3 Windows Üzerinde Python 3 Ubuntu Üzerinde Python 6 Komut Satırında Python Çalıştırma 6 Windows komut istemi üzerinde

Detaylı

Nesne Yönelimli Programlama

Nesne Yönelimli Programlama 1 Nesne Yönelimli Programlama Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Not: Bu dersin sunumları, Java Programlama Dili ve Yazılım Tasarımı, Altuğ B. Altıntaş, Papatya

Detaylı

Nesne Tabanlı Programlama

Nesne Tabanlı Programlama Nesne Tabanlı Programlama Ders Notu - 1 (Değerler, Değişkenler, İşleçler, Tip Dönüşümleri, Mantıksal Operatörler) Dicle Üniversitesi Mühendislik Fakültesi Elektrik Elektronik Mühendisliği Bölümü 1 Değerler

Detaylı

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Uzaktan Eğitim Uygulama ve Araştırma Merkezi JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Diziler Dizi Tanımlama ve İlk Değer Atama Dizi Elemanlarının Kullanılması Dizi İşlemleri Java da Diziler JAVA DA DİZİLER 4 Dizi; tek bir veri tipinde,

Detaylı

ELN1001 BİLGİSAYAR PROGRAMLAMA I

ELN1001 BİLGİSAYAR PROGRAMLAMA I ELN1001 BİLGİSAYAR PROGRAMLAMA I DEPOLAMA SINIFLARI DEĞİŞKEN MENZİLLERİ YİNELEMELİ FONKSİYONLAR Depolama Sınıfları Tanıtıcılar için şu ana kadar görülmüş olan özellikler: Ad Tip Boyut Değer Bunlara ilave

Detaylı

Mantıksal Operatörlerin Semantiği (Anlambilimi)

Mantıksal Operatörlerin Semantiği (Anlambilimi) Mantıksal Operatörlerin Semantiği (Anlambilimi) Şimdi bu beş mantıksal operatörün nasıl yorumlanması gerektiğine (semantiğine) ilişkin kesin ve net kuralları belirleyeceğiz. Bir deyimin semantiği (anlambilimi),

Detaylı

/ C Bilgisayar Programlama Final Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.

/ C Bilgisayar Programlama Final Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak. Selçuk Üniversitesi Mühendislik Fakültesi Harita Mühendisliği Bölümü Final Sınavı Test Soruları dı soyadı :... Öğrenci no :... İmza :... Tarih, Süre :09.01.2013, 60 dak. Dikkat!!! Soru kitapçığında ve

Detaylı

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

C PROGRAMLAMA YRD.DOÇ.DR. BUKET DOĞAN PROGRAM - ALGORİTMA AKIŞ ŞEMASI C PROGRAMLAMA DİLİ YRD.DOÇ.DR. BUKET DOĞAN 1 PROGRAM - ALGORİTMA AKIŞ ŞEMASI Program : Belirli bir problemi çözmek için bir bilgisayar dili kullanılarak yazılmış deyimler dizisi. Algoritma bir sorunun

Detaylı

Genel Programlama I

Genel Programlama I Genel Programlama I 30.09.2010 1 Genel Programlama I Ders İçeriği Programlamaya giriş ve algoritma kavramları Basit ve karmaşık veri tipleri Program kontrol komutları (Döngü ve şart yapıları) Diziler ve

Detaylı

YZM 2116 Veri Yapıları

YZM 2116 Veri Yapıları YZM 2116 Veri Yapıları Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği BAŞLAMADAN ÖNCE Bu dersi alan öğrencilerin aşağıdaki konuları bildiği

Detaylı

İsimler ve Kapsam. 24 Şubat 2011. Programlama Dilleri - Pamukkale Üniversitesi 1

İsimler ve Kapsam. 24 Şubat 2011. Programlama Dilleri - Pamukkale Üniversitesi 1 İsimler ve Kapsam Tanım: Bir değişkenin kapsamı (scope) değişkenin görülebilir olduğu komutların alanıdır. Görülebilir olduğu alan, bir komut içinde belirlenen değerle kullanılabildiği alandır. Tanım:

Detaylı

BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN

BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN TEMEL AMAÇLAR Bir dairenin yarıçapını kullanıcıdan alarak dairenin alanını hesaplamak istediğimizi düşünelim. Eğer girilen değer

Detaylı

Programlama Dilleri 1. Ders 3: Rastgele sayı üretimi ve uygulamaları

Programlama Dilleri 1. Ders 3: Rastgele sayı üretimi ve uygulamaları Ders 3: Rastgele sayı üretimi ve uygulamaları Ders 3 Genel Bakış Giriş Rastgele Sayı Rastgele Sayı Üreteci rand Fonksiyonunun İşlevi srand Fonksiyonunun İşlevi Monte Carlo Yöntemi Uygulama 1: Yazı-Tura

Detaylı

NESNEYE YÖNELİK PROGRAMLAMA

NESNEYE YÖNELİK PROGRAMLAMA NESNEYE YÖNELİK PROGRAMLAMA Metotlar Şu ana kadar yaptığımız örneklerde hep önceden hazırlanmış ReadLine(), WriteLine() vb. gibi metotları kullandık. Artık kendi metotlarımızı yapmanın zamanı geldi. Bilmem

Detaylı

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

Üst düzey dillerden biri ile yazılmış olan bir programı, makine diline çeviren programa derleyici denir. C++ da böyle bir derleyicidir. İST 205 Bilgisayar Programlama III C Programlamaya Giriş ve Matematiksel-İstatistiksel Uygulamalar Y.Doç.Dr. Levent Özbek Ankara Üniversitesi Fen Fakültesi İstatistik Bölümü Tel: 0.312.2126720/1420 ozbek@science.ankara.edu.tr

Detaylı

Yazılım Nedir? 2. Yazılımın Tarihçesi 3. Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5. Yazılımın Önemi 6

Yazılım Nedir? 2. Yazılımın Tarihçesi 3. Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5. Yazılımın Önemi 6 ix Yazılım Nedir? 2 Yazılımın Tarihçesi 3 Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5 Yazılımın Önemi 6 Yazılımcı (Programcı) Kimdir? 8 Yazılımcı Olmak 9 Adım Adım Yazılımcılık 9 Uzman

Detaylı

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı Öğr. Gör. Cansu AYVAZ GÜVEN NESNE TABANLI PROGRAMLAMA Java Değişkenler ve Veri Tipleri Operatörler JAVA Java Java SUN bilgisayar şirketince

Detaylı

BBS515 Nesneye Yönelik Programlama. Ders 3 Zümra Kavafoğlu

BBS515 Nesneye Yönelik Programlama. Ders 3 Zümra Kavafoğlu BBS515 Nesneye Yönelik Programlama Ders 3 Zümra Kavafoğlu https://zumrakavafoglu.github.io/ Bağıntısal Operatörler operatör tanımı < küçüktür > büyüktür = büyük eşittir eşittir!= eşit

Detaylı

BMT 101 Algoritma ve Programlama I 6. Hafta. Yük. Müh. Köksal Gündoğdu 1

BMT 101 Algoritma ve Programlama I 6. Hafta. Yük. Müh. Köksal Gündoğdu 1 BMT 101 Algoritma ve Programlama I 6. Hafta Yük. Müh. Köksal Gündoğdu 1 C++ Veri Tipleri Yük. Müh. Köksal Gündoğdu 2 Veri Tipleri Tam sayı ve Ondalık sayı veri tipleri Veri Tipi Alt Sınıf Üst Sınıf Duyarlı

Detaylı

ALGORİTMA ANALİZİ. Cumhuriyet Üniversitesi Bilgisayar Mühendisliği Bölümü

ALGORİTMA ANALİZİ. Cumhuriyet Üniversitesi Bilgisayar Mühendisliği Bölümü ALGORİTMA ANALİZİ Cumhuriyet Üniversitesi Bilgisayar Mühendisliği Bölümü 2 Temel Kavramlar Algoritma: Bir problemin çözümünü belirli bir zamanda çözmek için sonlu sayıdaki adım-adım birbirini takip eden

Detaylı

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler BMÜ-111 Algoritma ve Programlama Bölüm 5 Tek Boyutlu Diziler Yrd. Doç. Dr. İlhan AYDIN 1 Problem 100 adet sayı okumak istediğimizi düşünelim. Bu sayıların ortalaması hesaplanacak ve sayıların kaç tanesinin

Detaylı

Sınav tarihi : Süre : 60 dak. a) ABCDE b) BCDE c) ABCD d) kod hatalı e) BCD

Sınav tarihi : Süre : 60 dak. a) ABCDE b) BCDE c) ABCD d) kod hatalı e) BCD Selçuk Üniversitesi, Mühendislik Fakültesi, Harita Mühendisliği Bölümü Yıliçi Sınavı Test Soruları Adı soyadı : Öğrenci no : Sınav tarihi : 13.04.2015 Süre : 60 dak. 1. Hangisi gerçek sayı değişmezi değildir?

Detaylı

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

ELN1002 BİLGİSAYAR PROGRAMLAMA 2 ELN1002 BİLGİSAYAR PROGRAMLAMA 2 VERİ YAPILARI Sunu Planı Kendini-gösteren Yapılar Dinamik Bellek Tahsisi Bağlı Listeler Yığınlar Kuyruklar Ağaçlar 1 Veri Yapıları Şu ana kadar, diziler, matrisler ve yapılar

Detaylı

BLM210 HAFTA 2 FORMAL METHODS OF SYNTAX DESCRIPTION (SÖZDİZİM TARİFİNİN BİÇİMSEL YÖNTEMLERİ)

BLM210 HAFTA 2 FORMAL METHODS OF SYNTAX DESCRIPTION (SÖZDİZİM TARİFİNİN BİÇİMSEL YÖNTEMLERİ) 1 BLM210 HAFTA 2 FORMAL METHODS OF SYNTAX DESCRIPTION (SÖZDİZİM TARİFİNİN BİÇİMSEL YÖNTEMLERİ) Programming language implementors must be able to determine how the expressions, statements, and program units

Detaylı

Sunum İçeriği. Programlamaya Giriş 22.03.2011

Sunum İçeriği. Programlamaya Giriş 22.03.2011 Programlamaya Giriş Nesne Tabanlı Programlamaya Giriş ve FONKSİYONLAR Sunum İçeriği Nesne Tabanlı Programlama Kavramı Fonksiyon tanımlama ve kullanma Formal Parametre nedir? Gerçel Parametre nedir? Fonksiyon

Detaylı

Java Temel Özellikleri

Java Temel Özellikleri Java Temel Özellikleri Java Programlama Dili Java programlama dili şu anda dünyadaki en popüler programlama dillerinden biri haline gelmiştir. Java SUN bilgisayar şirketince elektrikli ev aletlerinin birbiriyle

Detaylı

PROGRAMLAMAYA GİRİŞ DERS 2

PROGRAMLAMAYA GİRİŞ DERS 2 PROGRAMLAMAYA GİRİŞ DERS 2 Program editörde oluşturulur ve diske kaydedilir Tipik Bir C Programı Geliştirme Ortamının Temelleri 1. Edit 2. Preprocess 3. Compile 4. Link 5. Load 6. Execute Önişlemci programı

Detaylı

Metotlar. d e f metot_adı [ ( [ arg [= d e f a u l t ] ]... [, arg [, &expr ] ] ) ] deyim ( l e r ) end

Metotlar. d e f metot_adı [ ( [ arg [= d e f a u l t ] ]... [, arg [, &expr ] ] ) ] deyim ( l e r ) end 4 Metotlar Hemen her programlama dilinde var olan metot kavramı Ruby için de aynıdır. Bazı kaynaklarda metot terimi yerine fonksiyon terimi kullanılır. Bu kitapta iki terimi eşanlamlı kullanacağız. Ruby

Detaylı

Algoritmalar ve Programlama. Algoritma

Algoritmalar ve Programlama. Algoritma Algoritmalar ve Programlama Algoritma Algoritma 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 bir sorunun çözümü

Detaylı

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Uzaktan Eğitim Uygulama ve Araştırma Merkezi JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java Veri Tipleri ve Özelilkleri Değişken Tanımlama Kuralları Değişken Veri Tipi Değiştirme (Type Casting) Örnek Kodlar Java Veri Tipleri ve Özelilkleri

Detaylı

Bölüm 4. Sözcüksel ve sözdizimsel analiz ISBN

Bölüm 4. Sözcüksel ve sözdizimsel analiz ISBN Bölüm 4 Sözcüksel ve sözdizimsel analiz ISBN 0-321-49362-1 Bölüm 4 Konular giriş Sözcüksel Analiz Ayrıştırma(parsing) problemi Özyinelemeli aşağıya iniş ayrıştırma(recursive-descent Parsing) Aşağıdan-yukarıya

Detaylı

Lambda İfadeleri (Lambda Expressions)

Lambda İfadeleri (Lambda Expressions) Lambda İfadeleri (Lambda Expressions) Lambda İfadeleri, değişkenlere değer atamak için kullanılan sadeleştirilmiş anonim (isimsiz) fonksiyonlardır. Bu fonksiyonlar matematikteki ve bilgisayar bilimlerindeki

Detaylı

Özyineleme (Recursion)

Özyineleme (Recursion) C PROGRAMLAMA Özyineleme (Recursion) Bir fonksiyonun kendisini çağırarak çözüme gitmesine özyineleme (recursion), böyle çalışan fonksiyonlara da özyinelemeli (recursive) fonksiyonlar denilir. Özyineleme,

Detaylı

Diziler İndisli Değişkenler

Diziler İndisli Değişkenler Diziler İndisli Değişkenler Aynı tür bilgileri (öğrenci isimleri, şehir isimleri, kapı numaraları, fakülteler vbg.) bellekte tutmak için kullanabileceğimiz listelere dizi adı verilir. Dizi kullanmanın

Detaylı

Yazılım Mühendisliği 1

Yazılım Mühendisliği 1 Yazılım Mühendisliği 1 HEDEFLER Yazılım, program ve algoritma kavramları anlar. Yazılım ve donanım maliyetlerinin zamansal değişimlerini ve nedenleri hakkında yorum yapar. Yazılım mühendisliği ile Bilgisayar

Detaylı

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ Java programlama dili, Java SUN bilgisayar şirketi tarafından 1991 yılında geliştiril Program bloklar halinde yazılır ve bloklar { } ile oluşturulur. Komutlar aynı satıra

Detaylı

C Programlama Dilininin Basit Yapıları

C Programlama Dilininin Basit Yapıları Bölüm 2 C Programlama Dilininin Basit Yapıları İçindekiler 2.1 Sabitler ve Değişkenler......................... 13 2.2 Açıklamalar (Expresions)........................ 14 2.3 İfadeler (Statements) ve İfade

Detaylı