Bölüm 4. Sözcüksel ve Sözdizimsel Analiz ISBN
|
|
- Duygu Ince
- 5 yıl önce
- İzleme sayısı:
Transkript
1 Bölüm 4 Sözcüksel ve Sözdizimsel Analiz ISBN
2 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
3 4.1 Giriş Derleyici tasarımı üzerinde zaman harcanması gereken bir kavramdır Bu bölümde öncelikli olarak sözdizim analizi ele alınacaktır Sözdizimi analizörü bir derleyicinin kalbidir, çünkü anlamsal analizci ve ara kod üreteci de dahil olmak üzere birkaç önemli bileşen sözdizimi analizörünün eylemleri tarafından yönlendirilir Sözdizimi analizörleri doğrudan önceki bölümde işlediğimiz gramerlere dayanır Sözcük (lexem) ve sözdizim (syntax) analizcileri, derleyici tasarımı dışındaki birçok durum için de gereklidir Örneğin program biçimlendiriciler, programların karmaşıklığını hesaplayan programlar, bir yapılandırma dosyasının içeriğini analiz etmeli, bunun için de sözcük ve sözdizimi analizini yapmalıdırlar Dolayısıyla, sözcük sözdizimi ve sözdizimi çözümlemesi, yazılım geliştiricileri için derleyici tasarlamasalar bile bir ihtiyaçtır Resul Kara 3
4 4.1 Giriş Programlama dillerini uygulamak için üç farklı yaklaşım Bölüm 1'de verilmişti: derleme, saf yorumlama ve hibrid uygulama Derleme yaklaşımı, üst düzey bir programlama dilinde yazılmış programları makine koduna çeviren derleyici adlı bir programı kullanır, C ++ ve COBOL dillerinde olduğu gibi Saf yorumlama sistemleri çeviri yapmaz; Bunun yerine, programlar, bir yazılım yorumlayıcısı tarafından özgün biçiminde yorumlanır Saf yorumlama, HTML belgelerine yerleştirilen, JavaScript gibi dillerde yazılmış komut dosyaları gibi yürütme etkinliğinin kritik olmadığı daha küçük sistemler için genellikle kullanılır Hibrid uygulama sistemleri, üst düzey dillerde yazılmış programları yorumlanan ara formlara çevirir. Hibrit sistemler derleyicilere göre çok daha yavaş program yürütülmesine neden olmuştur. Bununla birlikte, son yıllarda Just-in-Time (JIT) derleyicileri kullanımı, özellikle Microsoft.NET ve Java ile yaygınlaştı Tartışılan uygulama yaklaşımlarının her üçünde de sözcüksel ve sözdizim analizcileri kullanılmaktadır. Resul Kara 4
5 4.1 Giriş Dil (language) implementasyon sistemleri, belirli implementasyon yaklaşımına aldırmadan kaynak kodu (source code) analiz etmelidir Hemen hemen bütün sözdizim analizörleri kaynak kodun sözdiziminin biçimsel tanımlamasına dayalıdır (BNF) Resul Kara 5
6 4.1 Giriş (Devamı) Bir dil işlemcisinin (language processor) sözdizim (syntax) analizi bölümü genellikle iki kısımdan oluşur: Bir düşük-düzeyli (low-level) kısım: sözcüksel analizörü (lexical analyzer), matematiksel olarak, kurallı bir gramere (regular grammar) dayalı bir sonlu otomasyon (finite automaton) Bir yüksek-düzeyli (high-level) kısım, sözdizim analizörü (syntax analyzer), veya ayrıştırıcı (parser) (matematiksel olarak, bağlamdan bağımsız gramere (context-free grammar) dayalı bir aşağı-itme otomasyonu (push-down automaton), veya BNF) Sözcük analizörü isimler ve sayısal literaller gibi küçük ölçekli dil yapılarıyla ilgilenir Resul Kara Sözdizimi analizörü, ifadeler ve program birimleri gibi 6
7 4.1 Giriş (Devamı) Sentaksı(syntax) tanımlamak için BNF kullanmanın nedenleri : Net ve özlü bir sözdizimi tanımı (syntax description) sağlar Ayrıştırıcı (parser) doğrudan BNF ye dayalı olabilir BNF ye dayalı ayrıştırıcıların bakımı daha kolaydır Resul Kara 7
8 4.1 Giriş (Devamı) Sözcüksel (lexical) ve sözdizimi (syntax) analizini ayırmanın nedenleri: Sadelik - Sözcüksel analiz teknikleri sözdizimi analizinden daha az karmaşıktır, bu nedenle sözcük analiz süreci ayrı ise, ayrıştırıcı daha basit olabilir. Ayrıca sözcüksel analizin alt düzey ayrıntılarını sözdizim analizcisinden kaldırmak, sözdizimi analizcisini hem daha küçük hem de daha az karmaşık hale getirir Verimlilik - Sözcüksel analiz toplam derleme zamanının önemli bir kısmını gerektirdiğinden sözdizimi analizörünü optimize etmek verimli değildir. Ayırma, bu seçici optimizasyonu kolaylaştırır Taşınabilirlik - Sözcüksel analizci girdi program dosyalarını okur ve sıklıkla bu girişi tamponlamayı içerdiğinden, platforma bağımlıdır yani taşınamayabilir. Bununla birlikte, sözdizimi çözümleyicisi platformdan bağımsız olabilir. Resul Kara Herhangi bir yazılım sisteminin makineye bağımlı bölümlerini izole etmek her zaman iyidir. 8
9 4.2 Sözcüksel(Lexical) Analiz Sözcüksel analizci aslında bir model eşleştiricisidir. Bir desen eşleştirici, verilen bir karakter kalıbıyla eşleşen belirli bir karakter dizesinin alt dizesini bulmaya çalışır Model eşleştirme, bilgisayarın geleneksel bir parçasıdır. İlk uygulamalardan biri UNIX'in ilk sürümlerinde yer alan ed editördür Bazı programlama dillerinde (Perl, JavaScript, Java, C++, C# gibi) standart sınıf kütüphaneleri ile yapılıyor Bir sözcük analizörü, bir sözdizimi analizörünün ön ucu olarak kullanılır Teknik olarak, sözcüksel analiz sözdizimi analizinin bir parçasıdır Sözcüksel analizci, en düşük düzeyde program yapısında söz dizimi analizi yapar Resul Kara 9
10 4.2 Sözcüksel(Lexical) Analiz Bir kaynak program, derleyiciye bir karakter dizisi olarak görünür Sözcüksel analizci, karakterleri mantıksal olarak gruplar ve yapılarına göre her bir gruba bir tanıtıcı atar Bu mantıksal gruplara lexeme (kelime), bunların kategorilerine sembol (token) adı verilir. Örnek: result = oldsum value / 100; result bir lexeme, onun tokenı identifier olabilir. 100 bir lexeme, tokenı tamsayı literal Resul Kara 10
11 4.2 Sözcüksel(Lexical) Analiz Sözcüksel analizciler belirli bir girdi dizgesinden lexemeleri çıkarır ve karşılık gelen sembolleri üretir Derleyicilerin ilk zamanlarında sözcüksel analizciler genelde bütün bir kaynak program dosyasını işler ve sembol ve lexemes dosyaları üretirlerdi Güncel derleyicilerde bulunan sözcüksel analizciler, giriş olarak uygulanan kaynak koddaki bir sonraki lexeme ı bulan, onun sembolünü belirleyen ve sözdizimi analizörüne geri döndüren altprogramlardır Böylece, sözcüksel analizciye yapılan her çağrı tek bir sözcük ve onun simgesini döndürür Sözdizimi çözümleyicisinin gördüğü, giriş kaynak programına ait sözcüksel analizcinin çıktısıdır Sözcüksel analiz süreci, programın anlamıyla alâkalı olmadığı için lexemelerin dışındaki boşluklar atlanır Ayrıca, sözcüksel analizci kullanıcı tanımlı isimler için lexeme'i, derleyicinin sonraki aşamalarında kullanılan sembol tablosuna ekler Resul Kara 11
12 4.2 Sözcüksel(Lexical) Analiz (Devamı) Sözcüksel analizci (lexical analyzer) oluşturmaya üç yaklaşım: Jetonların biçimsel tanımı (formal description) yazılır ve bu tanıma göre tablo-sürümlü (table-driven) sözcüksel analizciyi oluşturan yazılım aracı (software tool) kullanılır Jetonları (tokens) tanımlayan bir durum diyagramı (state diagram) tasarlanır ve durum diyagramını implemente eden bir program yazılır Jetonları (tokens) tanımlayan bir durum diyagramı(state diagram) tasarlanır ve el ile durum diyagramının(state diagram) tablo-sürümlü(table-driven) bir implementasyonu yapılır Sadece ikinci yaklaşımdan bahsedeceğiz Resul Kara 12
13 4.2 Sözcüksel(Lexical) Analiz (Devamı) Durum diyagramı (State diagram): Bir durum geçiş diyagramı veya kısaca sadece durum diyagramı, yönlendirilmiş bir graftır Durum diyagramındaki düğümler, durum adlarıyla etiketlenir Eğriler durumlar arasında geçişlere neden olan girdi karakterleriyle etiketlenir Eğriler sözcük analizcisinin geçiş gerçekleştirildiğinde yapılması işlemleri de içerebilir Sözcük analizciler için kullanılan formun durum diyagramları, sonlu otomata denilen matematiksel makinaların bir örneğidir Sonlu otomatlar, normal diller olarak adlandırılan bir dil sınıfının üyelerini tanıyacak şekilde tasarlanabilir Bir programlama dili jetonları düzenli bir dildir ve sözcüksel analizci sonlu bir otomattır. Resul Kara 13
14 4.2 Sözcüksel(Lexical) Analiz (Devamı) Durum diyagramı(state diagram) tasarımı: Saf (Naive) bir durum diyagramı kaynak dildeki her karakterde her durumdan bir geçişe (transition) sahip olacaktı böyle bir diyagram çok büyük olurdu! Resul Kara 14
15 4.2 Sözcüksel(Lexical) Analiz (Devamı) Çoğu kez, durum diyagramını basitleştirmek için geçişler birleştirilebilir Bir tanıtıcıyı (identifier) tanırken, bütün büyük (uppercase) ve küçük(lowercase) harfler eşittir Bütün harfleri içeren bir karakter sınıfı(character class) kullanılır Bir sabit tamsayıyı (integer literal) tanırken, bütün rakamlar(digits) eşittir bir rakam sınıfı(digit class) kullanılır Resul Kara 15
16 4.2 Sözcüksel(Lexical) Analiz (Devamı) Özgül sözcükler(reserved words) ve tanıtıcılar(identifiers) birlikte tanınabilir (her bir özgül sözcük(reserved word) için programın bir parçasını almak yerine) Olası bir tanıtıcının(identifier) aslında özgül sözcük(reserved word) olup olmadığına karar vermek için tabloya başvurma(table lookup) kullanılır Resul Kara 16
17 4.2 Sözcüksel(Lexical) Analiz (Devamı) Kullanışlı yardımcı altprogramlar (utility subprograms): getchar girdinin(input) sonraki karakterini alır, bunu nextchar içine koyar, sınıfını (class) belirler ve sınıfı(class) charclass içine koyar addchar - nextchar dan gelen karakteri lexemenin biriktirildiği yere koyar, lexeme arama(lookup) - lexeme deki stringin özgül sözcük(reserved word) olup olmadığını belirler (bir kod döndürür) Resul Kara 17
18 Durum Diyagramı(State Diagram) Resul Kara 18
19 4.2 Sözcüksel(Lexical) Analiz (Devamı) implementasyon (başlatma(initialization) varsayalım): int lex() { getchar(); switch (charclass) { case LETTER: addchar(); getchar(); while (charclass == LETTER charclass == DIGIT) { addchar(); getchar(); } return lookup(lexeme); break; Resul Kara 19
20 4.2 Sözcüksel(Lexical) Analiz(Devamı) case DIGIT: addchar(); getchar(); while (charclass == DIGIT) { addchar(); getchar(); } return INT_LIT; break; } /* switch in sonu */ } /* lex fonksiyonunun sonu */ Resul Kara 20
21 4.3 Ayrıştırma (Parsing) Problemi Ayrıştırıcının amaçları, bir girdi (input) programı verildiğinde : Bütün sentaks hatalarını (syntax errors) bulur; her birisi için, uygun bir tanılayıcı (diagnostic) mesaj üretir, ve hemen eski haline döndürür (recover) Ayrıştırma ağacını (parse tree) üretir, veya en azından program için ayrıştırma ağacının izini (dökümünü) (trace) üretir Resul Kara 21
22 4.3 Ayrıştırma(Parsing) Problemi (Devamı) Ayrıştırıcıların(parser) iki kategorisi vardır: Yukarıdan aşağıya (Top down): Ayrıştırma ağacını (parse tree) kökten (root) başlayarak oluşturur Sıra, ensol türevindir (leftmost derivation) Ayrıştırma ağacını (parse tree) preorderda izler veya oluşturur Aşağıdan yukarıya (Bottom up): Ayrıştırma ağacını (parse tree), yapraklardan (leaves) başlayarak oluşturur Sıra, ensağ türevin (rightmost derivation) tersidir Ayrıştırıcılar (parser) girdide (input) sadece bir jeton (token) ileriye bakar Resul Kara 22
23 4.3 Ayrıştırma(Parsing) Problemi (Devamı) Yukarıdan aşağıya ayrıştırıcılar (Top-down parsers) Bir xaa sağ cümlesel formu ( right sentential form) verildiğinde, ayrıştırıcı (parser), sadece A nın ürettiği ilk jetonu (token) kullanarak, ensol türevdeki (leftmost derivation) sonraki cümlesel formu (sentential form ) elde etmek için doğru olan A-kuralını seçmelidir Burada x:terminal sembol, A: nonterminal sembol, a: karma sembol En yaygın yukarıdan-aşağıya ayrıştırma (top-down parsing) algoritmaları: Özyineli azalan (recursive-descent)- kodlanmış bir implementasyon LL ayrıştırıcılar (parser) tabloya dayalı (table driven) implementasyon Resul Kara 23
24 4.3 Ayrıştırma(Parsing) Problemi (Devamı) Aşağıdan-yukarıya ayrıştırıcılar (bottom-up parsers) Bir a sağ cümlesel formu (right sentential form) verildiğinde, a nın sağ türevde önceki cümlesel formu üretmesi için azaltılması gerekli olan, gramerde kuralın sağ tarafında (right-hand side) olan altstringinin (substring) ne olduğuna karar verir En yaygın aşağıdan-yukarıya ayrıştırma (bottom-up parsing) algoritmaları LR ailesindedir Resul Kara 24
25 4.3 Ayrıştırma (Parsing) Problemi (Devamı) Ayrıştırmanın Karmaşıklığı (Complexity of Parsing) Herhangi bir belirsiz-olmayan gramer (unambiguous grammar) için çalışan ayrıştırıcılar karmaşık ve verimsizdir: O(n 3 ) [n girdi uzunluğu olmak üzere] Derleyiciler(compilers), sadece bütün belirsiz-olmayan gramerlerin (unambiguous grammars) bir altkümesi için çalışan ayrıştırıcıları kullanır, fakat bunu lineer sürede yapar: O(n) [n girdi uzunluğu olmak üzere] Resul Kara 25
26 Özyineleme Kökenli Ayrıştırma Gramerdeki her bir non-terminal için o non-terminal tarafından üretilebilen cümleleri ayrıştıran bir alt program vardır EBNF özyineleme kökenli ayrıştırıcılara taban olması için ideal ölçüde uygundur; çünkü EBNF non-terminallerin sayısını minimize eder Resul Kara 26
27 Özyineleme Kökenli Ayrıştırma(devam) Basit ifadeler için bir gramer: <expr> <term> {(+ -) <term>} <term> <factor> {(* /) <factor>} <factor> id ( <expr> ) Resul Kara 27
28 Özyineleme Kökenli Ayrıştırma(devam) nexttoken ın içine bir sonraki token kodunu koyan lex isimli bir sözcüksel çözümleyicimiz olduğunu varsayalım Sadece bir sağ taraf olduğu zamanki kodlama süreci: Sağ taraftaki her bir terminal sembolü bir sonraki girdi token ıyla karşılaştır; eğer eşleşirse devam et, eşleşmezse hata vardır Sağ taraftaki her bir non-terminal sembol için onunla ilişkili olan ayrıştırma alt programını çağır Resul Kara 28
29 Özyineleme Kökenli Ayrıştırma(devam) /* Function expr Parses strings in the language generated by the rule: <expr> <term> {(+ -) <term>} */ void expr() { /* Parse the first term */ term(); Resul Kara 29
30 Özyineleme Kökenli Ayrıştırma(devam) /* As long as the next token is + or -, call lex to get the next token, and parse the next term */ while (nexttoken == PLUS_CODE nexttoken == MINUS_CODE){ lex(); term(); } } Bu özel program hataları yakalamaz Gelenek: her ayrıştırma programı bir sonraki token ı nexttoken a bırakır Resul Kara 30
31 Özyineleme Kökenli Ayrıştırma(devam) Birden fazla sağ tarafı olan bir non-terminal hangi sağ tarafın ayrıştırılacağına karar vermek için bir başlangıç sürecine gereksinim duyar Doğru sağ taraf girdinin bir sonraki token ı baz alınarak (ileri bakış) seçilir Bir sonraki token eşleşme bulunana kadar her sağ taraf, tarafından üretilen ilk token la karşılaştırılır Eğer eşleşme bulunmazsa bu bir sözdizimi hatasıdır Resul Kara 31
32 Özyineleme Kökenli Ayrıştırma(devam) /* Function factor Parses strings in the language generated by the rule: <factor> -> id (<expr>) */ void factor() { /* Determine which RHS */ if (nexttoken) == ID_CODE) /* For the RHS id, just call lex */ lex(); Resul Kara 32
33 Özyineleme Kökenli Ayrıştırma(devam) /* If the RHS is (<expr>) call lex to pass over the left parenthesis, call expr, and check for the right parenthesis */ else if (nexttoken == LEFT_PAREN_CODE) { lex(); expr(); if (nexttoken == RIGHT_PAREN_CODE) lex(); else error(); } /* End of else if (nexttoken ==... */ } else error(); /* Neither RHS matches */ Resul Kara 33
34 Özyineleme Kökenli Ayrıştırma(devam) LL Gramer Sınıfı Sol Özyineleme Problemi Eğer bir gramerin dolaylı ya da doğrudan sol özyinelemesi varsa, o bir yukarıdan aşağıya ayrıştırıcıya baz olamaz Bir gramer sol özyinelemeyi kaldırmak için yenilenebilir Resul Kara 34
35 Özyineleme Kökenli Ayrıştırma(devam) Yukarıdan aşağıya ayrıştırmaya izin vermeyen gramerlerin bir başka özelliği ikili ayırmanın olmayışıdır İlerdeki bir token baz alınarak doğru sağ tarafa karar verme problemi Tanım: FIRST(a) = {a a =>* ab } (Eğer a =>* e, e FIRST(a) dadır) Resul Kara 35
36 Özyineleme Kökenli Ayrıştırma(devam) İkili Ayırma Testi: Her bir kural çifti, A a i ve A a j, için birden fazla sağ tarafı olan gramerdeki her bir A nonterminali için FIRST(a i ) FIRST(a j ) = f doğru olmalı Örnekler: A a bb cab A a ab Resul Kara 36
37 Özyineleme Kökenli Ayrıştırma(devam) Sol çarpanlarına ayırma problemi çözebilir <variable> identifier identifier [<expression>] ifadesini <variable> identifier <new> <new> e ya da [<expression>] <variable> identifier [[<expression>]] (dıştaki parantezler EBNF nin meta sembolleridir) ile yer değiştir Resul Kara 37
38 Aşağıdan Yukarıya Ayrıştırma Ayrıştırma problemi, derivasyonda bir önceki sağ cümlesel forma erişimi indirgemek için bir sağ cümlesel formdaki doğru sağ tarafı bulmaktır Resul Kara 38
39 Aşağıdan Yukarıya Ayrıştırma(devam) Kollar hakkında sezgi: Tanım: b, sağ cümlesel formun kolu g = abw ancak ve ancak S =>*rm aaw =>rm abw olursa Tanım: b, sağ cümlesel formun parçasıdır g ancak ve ancak =>* g = a 1 Aa 2 =>+ a 1 ba 2 olursa Tanım: b, sağ cümlesel form g nın basit parçasıdır ancak ve ancak S =>* g = a 1 Aa 2 => a 1 ba 2 olduğu zaman Resul Kara 39
40 Aşağıdan Yukarıya Ayrıştırma(devam) Kollar hakkında sezgi: Sağ cümlesel formun kolu onun en sol basit parçasıdır Bir ayrıştırma ağacı verilmişken kolu bulmak kolaydır Ayrıştırma sap(kol) budama olarak düşünülebilir Resul Kara 40
41 Aşağıdan Yukarıya Ayrıştırma(devam) Kaydır-İndirge Algoritmaları İndirgeme, ayrıştırma yığınının en üstündeki dalı ona karşılık gelen sol tarafla yer değiştirme hareketidir Kaydırma, bir sonraki token ı ayrıştırma yığınının en üstüne götürme hareketidir Resul Kara 41
42 Aşağıdan Yukarıya Ayrıştırma(devam) LR ayrıştırıcılarının avantajları: Programlama dillerini tanımlayan hemen hemen tüm gramerler için çalışırlar Diğer aşağıdan yukarıya algoritmalardan daha büyük gramer sınıfı üzerinde çalışırlar; fakat diğer aşağıdan yukarıya ayrıştırıcılar kadar verimlidirler Sözdizimi hatalarını mümkün olduğunca yakalarlar Gramerlerin LR sınıfı, LL ayrıştırıcılar tarafından ayrıştırılabilen sınıfın bir üst kümesidir Resul Kara 42
43 Aşağıdan Yukarıya Ayrıştırma(devam) LR ayrıştırıcılar bir araçla kurulmalı Knuth un sezgisi: bir aşağıdan yukarıya ayrıştırıcı, ayrıştırma kararlarını vermek için mevcut noktaya kadarki tüm ayrıştırma geçmişini kullanabildi Sonlu ve nispeten az sayıda muhtemel ayrıştırma durumu vardı, dolayısıyla geçmiş, bir ayrıştırma yığını üzerinde bir ayrıştırıcı durumunda depolanabilirdi Resul Kara 43
44 Aşağıdan Yukarıya Ayrıştırma(devam) Bir LR konfigürasyonu, bir LR ayrıştırıcısının durumunu depolar (S 0 X 1 S 1 X 2 S 2 X m S m, a i a i +1 a n $) Resul Kara 44
45 Aşağıdan Yukarıya Ayrıştırma(devam) LR ayrıştırıcıları tabloya dayalıdırlar, öyle ki tablolar ACTION ve GOTO tabloları olmak üzere iki parçaya sahiptir ACTION tablosu ayrıştırıcının durumu ve bir sonraki token verilmişken ayrıştırıcının hareketini belirler Satırlar durum isimleri; sütunlar terminaller GOTO tablosu indirgeme hareketi olduktan sonra ayrıştırma yığınının en üstüne hangi durumun koyulacağını belirler Satırlar durum isimleri; sütunlar non-terminaller Resul Kara 45
46 Bir LR Ayrıştırıcısının Yapısı Resul Kara 46
47 Aşağıdan Yukarıya Ayrıştırma(devam) Başlangıç konfigürasyonu: (S 0, a 1 a n $) Ayrıştırıcının hareketleri: Eğer ACTION[S m, a i ] = Kaydır S ise bir sonraki konfigürasyon: (S 0 X 1 S 1 X 2 S 2 X m S m a i S, a i+1 a n $) Eğer ACTION[S m, a i ] = İndirge A b ve S = GOTO[S m-r, A], r = b nın uzunluğu, ise bir sonraki konfigürasyon: (S 0 X 1 S 1 X 2 S 2 X m-r S m-r AS, a i a i+1 a n $) Resul Kara 47
48 Aşağıdan Yukarıya Ayrıştırma(devam) Ayrıştırıcının hareketleri (devam): Eğer ACTION[S m, a i ] = Kabul ise ayrıştırma bitmiştir ve hiçbir hata bulunmamıştır. Eğer ACTION[S m, a i ] = Hata ise ayrıştırıcı hatayla başa çıkan bir programı çağırır. Resul Kara 48
49 LR Ayrıştırma Tablosu Resul Kara 49
50 Aşağıdan Yukarıya Ayrıştırma(devam) Bir ayrıştırma tablosu verilen bir araçtan, ör., yacc, üretilebilir Resul Kara 50
51 Özet Sözdizimi analizi dil uygulamalarının ortak bir kısmıdır Bir sözcük çözümleyicisi programdaki küçük ölçekli kısımları izole eden bir doku eşleştiricisidir Sözdizimi hatalarını yakalar Bir ayrıştırma ağacı üretir Bir özyineleme kökenli ayrıştırıcı, bir LL ayrıştırıcıdır EBNF Aşağıdan yukarıya ayrıştırıcılar için ayrıştırma problemi: mevcut cümlesel formun alt dizisini bulma Kaydır-İndirge ayrıştırıcılarının LR ailesi en yaygın Resul aşağıdan Kara yukarıya ayrıştırma yaklaşımıdır 51
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ıBölüm 4. Sözcük ve Sentaks Çözümlemesi ( Analizi) ISBN
Bölüm 4 Sözcük ve Sentaks Çözümlemesi ( Analizi) ISBN 0-321-49362-1 Bölüm 4 Konuları Giriş Sözcük çözümlemesi Ayrıştırma (parsing) problemi Özyineleyerek inen ayrıştırma (Recursive- Descent Parsing) Aşağıdan-yukarı
Detaylı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ıSyntax Analysis. 4/5/2004 Formal Diller 4.1
Syntax Analysis Her programlama dilinin yazilan bir programin syntax olarak dogru olup olmadigini belirleyen kurallari vardir. Programlama dillerinin syntactic yapisi Contex-Free Grammer / BNF (Backus-Naur
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 Konuları Giriş Genel olarak sentaks tarifi Sentaks tarifinin matematiksel yöntemleri Özellik gramerleri (Attribute Grammars) Programların anlamını
DetaylıTokenlarin Taninmasi
Tokenlarin Taninmasi stmt t if expr then stmt if expr then stmt else stmt expr t term relop term term term t id num if, then, else, relop, id, ve num terminal (token), stmt, expr, term nonterminal olarak
DetaylıBölüm 3. Söz Dizilimi ve Anlamı Tanımlama ISBN
Bölüm 3 Söz Dizilimi ve Anlamı Tanımlama ISBN 0-321-49362-1 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
Detaylı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ı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ıBAĞLAMDAN BAĞIMSIZ (CONTEXT-FREE) GRAMERLER (CFG) VE DİLLER (CFL)
BAĞLAMDAN BAĞIMSIZ (CONTEXT-FREE) GRAMERLER (CFG) VE DİLLER (CFL) Dil tanıyıcı cihaz bir dile ait geçerli string leri kabul eder. Dil üreteci cihaz bir dile ait string leri oluşturur. Dil üreteci cihazlar
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
İÇİ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ı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ı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ı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ıKARADENİZ TEKNİK ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BİLGİSAYAR SİSTEMLERİ LABORATUARI BISON AYRIŞTIRICI (PARSER) ÜRETECİ
1 KARADENİZ TEKNİK ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BİLGİSAYAR SİSTEMLERİ LABORATUARI BISON AYRIŞTIRICI (PARSER) ÜRETECİ Bison, durumdan bağımsız gramerler (CFG, Context-free grammar) için LALR
DetaylıDerleyici Kuramı (Compiler Theory)
Derleyici Kuramı (Compiler Theory) Yrd. Doç. Dr. Şadi Evren ŞEKER Bu sunum, İstanbul Üniversitesi, Bilgisayar Mühendisliği, BMG dersi kapsamında hazırlanmıştır ve kavramlara genel bir giriş yapmayı hedefler.
DetaylıBAĞLAMDAN BAĞIMSIZ VE BAĞLAMDAN BAĞIMSIZ OLMAYAN DİLLER (CONTEXT-FREE AND NON-CONTEXT-FREE LANGUAGES)
BAĞLAMDAN BAĞIMSIZ VE BAĞLAMDAN BAĞIMSIZ OLMAYAN DİLLER (CONTEXT-FREE AND NON-CONTEXT-FREE LANGUAGES) Context-free dillerin üretilmesi için context-free gramer ler kullanılmaktadır. Context-free dillerin
Detaylı1.1. Yazılım Geliştirme Süreci
Kazanımlar Bu bolümde; Yazılım geliştirme sureci konusunda bilgi sahibi olacak, Yazılım geliştirme surecinde gerekli olan araçları tanıyacak, Python dilinde program geliştirme ortamlarını inceleyebileceksiniz.
Detaylı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 Bu bölümde, BÖLÜM - 8 Problem Tanımı Arama Ağaçları İkili Arama
DetaylıJava String İşlemleri
Java String İşlemleri Karakterler (Characters) "char" kelimesi bir karakter tanımlamak için kullanılır. Karakter tek tırnak içine alınmalıdır. Bir char'ın aralığı 0 ile 65536 arasındadır. Char türü işaretsiz
Detaylı! " # $ % & '( ) *' ' +, -. /) /) 0 # /) %, %, 1 2
!"#$ %& '()*' ' +,-./) /) 0 #/) %,%, 12 $$(/3#/ " '$$(/34" '$$(//44 / 4 /4/ 4# ##4" 5-6/'$##/" 7#! a(a * b * )b regular expression ile önce bir a üretilir. Ardından iki durumdan birisine göre devam edilir.
DetaylıFormal Diller Ve Otomat Teorisi
Formal Diller Ve Otomat Teorisi Ismail Kadayif Canakkale Onsekiz Mart Universitesi Bilgisayar Muhendisligi 4/5/2004 Formal Diller 1.1 Strings ve Languages (Diller) alphabet (character set): Sonlu sayida
Detaylı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 Bu bölümde, BÖLÜM - 4 Stack (Yığın, Yığıt) Veri Yapısı Stack Çalışma
Detaylı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ıGramer Tabanlı Değerlendirme Yöntemleri
Gramer Tabanlı Değerlendirme Yöntemleri 1. Giriş Bir gramer biçimsel bir dilde karakter dizileri yada kelimeler oluşturabilen kurallar seti olarak ifade edilir. Kurallar, dil alfabesini kullanarak, dilin
Detaylı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ıVT Sistem Gerçeklemesi. Ders Notları- #8
VT Sistem Gerçeklemesi Remote: Kullanıcıdan gelen JDBC isteklerini karşılar. Planner: SQL ifadesi için işleme planı oluşturur ve karşılık gelen ilşkisel cebir ifadesini oluşturur. Parse: SQL ifadesindeki
DetaylıRegular Expression vs. Context-Free Grammars. Ambiguity. NFA to CFG. Neden RE ler kullanilir?
Ambiguity Ambiguous Grammar: Bazi sentence lar icin birden fazla parse tree ureten grammarlere denir. Ambiguous Grammar ler bazi sentence lari birden fazla leftmost/rightmost derivation larla utetirler.
DetaylıDoğu Akdeniz Üniversitesi Bilgisayar Mühendisliği Bölümü. BLGM 318 Ara Sınavı 2012 2013 Đlkbahar Dönemi 13 Nisan 2013. Ad, Soyad Öğrenci No.
Doğu Akdeniz Üniversitesi Bilgisayar Mühendisliği Bölümü BLGM 318 Ara Sınavı 2012 2013 Đlkbahar Dönemi 13 Nisan 2013 Ad, Soyad Öğrenci No. : : Öğretim Üyesi: Doç. Dr. Zeki BAYRAM Süre: 100 dakika Talimatlar:
Detaylı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ıBölüm1. İlk Bilgiler ISBN 0-321-49362-1
Bölüm1 İlk Bilgiler ISBN 0-321-49362-1 Bölüm 1 Konuları Niye Programlama Dilleri prensiplerini öğreniyoruz? Programlama alanları Dil değerlendirme kriterleri Dit tasarımına etkiler Dil kategorileri Dil
DetaylıGörsel Programlama DERS 03. Görsel Programlama - Ders03/ 1
Görsel Programlama DERS 03 Görsel Programlama - Ders03/ 1 Java Dili, Veri Tipleri ve Operatörleri İlkel(primitive) Veri Tipleri İLKEL TİP boolean byte short int long float double char void BOYUTU 1 bit
Detaylı! " # $ % & '( ) *' ' +, -. /.,
!"#$ %& '()*' ' +,-./.,-. 0 12.30.420 ,-./.,-,-.5' $-.5 6# #",-.5 2(3 # #",-.5 6') 7 2(3 87" $-.5.$-.5) 7 # * ",222 2 #5# * #)7 #7",-./.,- Theorem: Context-free diller union, concatenation ve Kleene star
DetaylıDERLEYİCİ TASARIMI ÖDEV-2 RAPORU
DERLEYİCİ TASARIMI ÖDEV-2 RAPORU Nadia Erdoğan Mustafa Cantürk (Image generated by unlicensed version of UMLStudio.) Sınıf tanımları: Token: tokenize() fonksiyonu sonucunda gelen stringi Token lara ayrılır.
Detaylı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ı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 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ı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ı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ıBilgisayar Programlama Dilleri
Bilgisayar Programlama Dilleri Ömer YÜCEL 13253072 1/32 Sunum İçeriği 1. Program ve Programlama Dili Nedir? 2. Programlama Dillerinin Tarihçesi 3. Programlama Dillerinin Sınıflandırılması 4. Programlama
DetaylıVERİ YAPILARI DERS NOTLARI BÖLÜM 1 GİRİŞ. Yard. Doç. Dr. Deniz KILINÇ
VERİ YAPILARI DERS NOTLARI BÖLÜM 1 GİRİŞ Yard. Doç. Dr. Deniz KILINÇ CELAL BAYAR ÜNİVERSİTESİ, YAZILIM MÜHENDİSLİĞİ 2015-2016 1. DERS İÇERİĞİ VE KAYNAKLAR Veri Yapıları (VY) dersinde görülmesi muhtemel
Detaylıİnternet Programcılığı Dersi 2.Dönem Ders Notu
İnternet Programcılığı Dersi 2.Dönem Ders Notu DEĞİŞKEN TİPLERİ TAM SAYI (İNTEGER) VERİ TİPİ Negatif veya pozitif ondalık kısmı bulunmayan sayılardır. Örnek: $i=65; $x=345; ONDALIK(REAL)VERİ TİPİ Ondalıklı
Detaylıİ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ı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ıDilbilgisi ve Diller
Dilbilgisi ve Diller Doç.Dr.Banu Diri 1. Her biçimsel dil belirli bir alfabe üzerinde tanımlanır. 2. Alfabe sonlu sayıda simgelerden oluşan bir kümedir. 3. Alfabedeki simgelerin arka arkaya getirilmesi
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ı PDP 3 Semantik (Semantics): ifadelerin, deyimlerin, ve program birimlerinin anlamı Sentaks
Detaylı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ı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ıBir algoritma aşağıdaki ğ dki özelliklere sahip komutların sonlu bir kümesidir.
BÖLÜM 4 Bir algoritma aşağıdaki ğ dki özelliklere sahip komutların sonlu bir kümesidir. Kesinlik : Algoritma adımları kesin olarak tespit edilmelidir. Bir teklik: Her bir adımın yürütülmesinde sonuçlar
Detaylı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ıOtomata Teorisi (BİL 2114)
Otomata Teorisi (BİL 2114) Hafta 2: Sonlu Otomata (1.Bölüm) bas kapa aç bas 1 Hafta 2 Plan 1. Bir Sonlu Otomata Orneği 2. Sonlu Otomatanin Esasları 3. Sonlu Otomatanın Resmi Gösterimi 4. Nondeterministik
DetaylıMax - Min Heap Tree (Max ve Min Yığıt Ağaçları) Veri Yapıları ve Algoritmalar 2 - Mustafa EGE Ders Notları
Max - Min Heap Tree (Max ve Min Yığıt Ağaçları) Veri Yapıları ve Algoritmalar 2 - Mustafa EGE Ders Notları Max - Min Heap Öncelikli kuyruk konusunu hatırlayın. Kuyruğa sonradan eklenmesine rağmen öncelik
DetaylıSınav tarihi : Süre : 60 dak.
Selçuk Üniversitesi, Mühendislik Fakültesi, Harita Mühendisliği Bölümü Final Sınavı Test Soruları Adı soyadı : Öğrenci no : Sınav tarihi : 31.05.2016 Süre : 60 dak. 1. Ekranda ne görüntülenir? int i =
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 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ı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ıAkademik Rapor Hazırlama ve Yazışma Teknikleri
Akademik Rapor Hazırlama ve Yazışma Teknikleri BLM2881 2015-1 DR. GÖKSEL Bİ R İ C İ K goksel@ce.yildiz.edu.tr Ders Planı Hafta Tarih Konu 1 16.09.2015 Tanışma, Ders Planı, Kriterler, Kaynaklar, Giriş Latex
Detaylı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ıPROGRAMLAMAYA GİRİŞ DERS NOTLARI
PROGRAMLAMAYA GİRİŞ DERS NOTLARI PROGRAM Bilgisayar en basit olarak üç ana görevi yerine getiren bir makinedir. Girilen bilgiyi alır (INPUT), işler (PROCESSING) ve bu işlenmiş veriden bir sonuç (OUTPUT)
Detaylıİsimler ve Kapsam. Hafta 4 Ders 2 BLG339 PROGRAMLAMA DİLLERİ KAVRAMI
BLG339 PROGRAMLAMA DİLLERİ KAVRAMI Hafta 4 Ders 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
DetaylıAlgoritma Geliştirme ve Veri Yapıları 3 Veri Yapıları. Mustafa Kemal Üniversitesi
Algoritma Geliştirme ve Veri Yapıları 3 Veri Yapıları Veri yapısı, bilginin anlamlı sırada bellekte veya disk, çubuk bellek gibi saklama birimlerinde tutulması veya saklanması şeklini gösterir. Bilgisayar
DetaylıC Dersi Bölüm 1. Bilgisayar Donanımı
C Dersi Bölüm 1 M Bodur 1 Bilgisayar Donanımı Bilgisayarın yapısını ve çalışma prensiplerini bilmemiz Bir bilgisayar programından neler bekleyebileceğimizi anlamamızı sağlar. Bigisayar dört temel birimden
DetaylıC++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak: Published by Juan Soulié
Kullanılacak kaynak: http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié C++ Nedir? Arttırılmış C demektir ve C dilinin geliştirilmiş halini yansıtır. C++ öğrenmeden önce herhangi bir programlama
DetaylıJavascript. 1) Notepad++ aşağıdaki kodları yazıp deneme.html olarak kaydedelim. 2) Biraz önceki sayfa sadece html kodların içeriyordu.
Javascript Html sayfalarının içine yazılarak, sayfayı daha etkileşimli hale getirir. click olayları, uyarı mesajları gibi hareketlerle sayfayı daha dinamik hale getirir. Javascript olmadan yazılan html
DetaylıArasınav Soruları Bahar 2018
Sayfa#1 Manisa Celal Bayar Üniversitesi Yazılım Mühendisliği Bölümü YZM 2116 Veri Yapıları Dersi Arasınav Soruları Bahar 2018 Süre: 75 Dakika Adı ve Soyadı YANIT ANAHTARI Öğrenci Numarası Grubu İmza Tarih
DetaylıBilgisayar Mühendisliğine Giriş. Yrd.Doç.Dr.Hacer KARACAN
Bilgisayar Mühendisliğine Giriş Yrd.Doç.Dr.Hacer KARACAN PROGRAMLAMA DİLLERİ Programlama Dilleri ni neden öğrenmeliyiz? Programlama alanları Dil değerlendirme kriterleri Dil tasarımı üstündeki etkiler
DetaylıBölüm 10. Altprogramları Uygulamak
Bölüm 10 Altprogramları Uygulamak Altprogramları Uygulamak -- Başlıklar Çağrıların genel anlam analizi Basit altprogramların gerçekleştirilmesi Yığıt dinamik yerel değişkenlerle altprogramları uygulamak
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., 2007 Algoritma ve Programlamaya Giriş, Ebubekir YAŞAR, Murathan Yay., 2011
Detaylı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.
I. 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. İnsanların elle yaptığı ve yapmakta olduğu bir çok
DetaylıAğaç (Tree) Veri Modeli
Ağaç (Tree) Veri Modeli 1 2 Ağaç Veri Modeli Temel Kavramları Ağaç, bir kök işaretçisi, sonlu sayıda düğümleri ve onları birbirine bağlayan dalları olan bir veri modelidir; aynı aile soyağacında olduğu
Detaylı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ı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ı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ıPHP, nesne-yönelimli (object-oriented) bir dil olduğu için, nesne oluşturma imkânına ve bunların kullanılmasını sağlayan metodlara da sahiptir.
PHP'nin Temelleri PHP Nedir? PHP, bir programlama dili olarak, değişkenler, değişkenlerin değerleriyle bir işlem yapmayı sağlayan işlemciler (operatörler), işlemcilerle oluşturulan deyimler ve nihayet
DetaylıEM205 26/9/2014. Programlamaya giriş Algoritmalar. Amaçlar
EM205 26/9/2014 Programlamaya giriş Algoritmalar Temel kavramlar Algoritmalar Amaçlar Algoritma kavramını öğrenmek, Algoritmaları ifade edebilmek, Temel matematiksel algoritmaları yazabilmek C programlama
DetaylıFORMEL DİLLER VE SOYUT MAKİNALAR. Hafta 3
FORMEL DİLLER VE SOYUT MAKİNALAR Hafta 3 Karmaşıklık CHOMSKY HİYERARŞİSİ 0 1 2 3 Özyinelemeli - Sayılabilir Diller : Turing Makinesi (Recursively Enumerable Languages : Turing Machine) Bağlama - Duyarlı
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
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ıBİLGİSAYAR BİLİMİ DERSİ (KUR 1) PYTHON PROGRAMLAMA DİLİ ÇALIŞMA KÂĞIDI - 1
BİLGİSAYAR BİLİMİ DERSİ (KUR 1) PYTHON PROGRAMLAMA DİLİ ÇALIŞMA KÂĞIDI - 1 Ekrana Metin Yazdırmak Ekranda metin yazdırmak istendiğinde print komutu kullanılır. Kullanımı aşağıda verilmiştir. Parantez içinde
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 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ıBüyük, Dağıtık, Veri Yoğunluklu Uygulamalarda Programlama Paradigmaları
Büyük, Dağıtık, Veri Yoğunluklu Uygulamalarda Programlama Paradigmaları Güven Fidan AGMLAB Bilişim Teknolojileri 18/10/11 GRID ÇALIŞTAYI 2007 1 MapReduce Nedir? Büyük data kümelerini işlemek ve oluşturmak
DetaylıDr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net
Bilgisayar Programlama Ders 1 Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net Bilgisayar Programlamaya C ile Programlamaya Yazılım: Bilgisayarın işlemler yapması ve karar vermesi
Detaylıİfadeler bir programlama dilinde hesaplamaları belirtmede temel araçtır. İfadelerin değerlendirmesini anlamak için,
PDP 7 1 İfadeler bir programlama dilinde hesaplamaları belirtmede temel araçtır. İfadelerin değerlendirmesini anlamak için, operatörlerin sırası ve İşlenenlerin (operant) değerlendirmesine aşina olmamız
DetaylıAlgoritmalar. Heap Sort. Bahar 2017 Doç. Dr. Suat Özdemir 1
Algoritmalar Heap Sort Bahar 2017 Doç. Dr. Suat Özdemir 1 Heap Sort Heap Sort algoritması Merge Sort ve Insertion Sort algoritmalarının iyi özelliklerini bir arada toplar. Algoritma Insertion Sort gibi
DetaylıVeri Modelleri. Ağaç Veri Modeli. Ağaç Veri Modeli
Veri Modelleri Ağaç Veri Modeli Ağaç Veri Modeli Verilerin birbirine sanki bir ağaç yapısı oluşturuyormuş gibi sanal olarak bağlanmasıyla elde edilen bir veri modelidir. Ağaç veri modeli daha fazla bellek
DetaylıBIL222 Veri Yapıları ve Algoritmalar
BIL222 Veri Yapıları ve Algoritmalar 1. ĠKĠLĠ AĞAÇLAR (BIARY TREES) Bütün düğümlerinin derecesi en fazla iki olan ağaca ikili ağaç denir. Yani bir düğüme en fazla iki tane düğüm bağlanabilir ( çocuk sayısı
Detaylı2 ALGORİTMA VE AKIŞ DİYAGRAMLARI
İÇİNDEKİLER IX İÇİNDEKİLER 1 GİRİŞ 1 Kitabın Amacı 1 Algoritmanın Önemi 2 Bilgisayarın Doğuşu ve Kullanım Amaçları 3 Programlama Dili Nedir? 3 Entegre Geliştirme Ortamı (IDE) Nedir? 4 2 ALGORİTMA VE AKIŞ
DetaylıBölüm 9. Altprogramlar ISBN
Bölüm 9 Altprogramlar ISBN 0-321-49362-1 Giriş Bu bölümde, programlarda sıkça kullanılan işlemlerin bir araya gruplanması ile oluşturulan altprogramlar incelenecektir. Altprogramlar sayesinde bir programda
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 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ı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ı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ıBMT 101 Algoritma ve Programlama I Güz Dönemi. Yük. Müh. Köksal Gündoğdu 1
BMT 101 Algoritma ve Programlama I 2016 2017 Güz Dönemi Yük. Müh. Köksal Gündoğdu 1 Elektrik Elektronik ve Bilgisayar Yük. Müh. Köksal Gündoğdu koksalgundogdu@ekargemuhendislik.com Yük. Müh. Köksal Gündoğdu
DetaylıFonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {
Fonksiyonlar Kendi içinde bağımsız olarak çalışabilen ve belli bir işlevi yerine getiren program modülleridir. C programları bu modüllerden (fonksiyonlar) oluşurlar. Fonksiyonların yazılmasındaki temel
DetaylıBölüm 4 C de Program Kontrolü
1 Bölüm 4 C de Program Kontrolü Outline 4.1 Giriş 4.2 Döngülerin Temelleri 4.3 Sayıcı Kontrollü Döngüler 4.4 for Döngü Yapısı 4.5 for Döngü Yapısıyla İlgili Notlar ve Gözlemler 4.6 for Yapısıyla İlgili
DetaylıDr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net
Bilgisayar Programlama Ders 6 Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net Fonksiyon Prototipleri Fonksiyon Prototipleri Derleyici, fonksiyonların ilk hallerini (prototiplerini)
DetaylıEBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA
6. HAFTA EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA Öğr. Gör. S. M. Fatih APAYDIN apaydin@beun.edu.tr EMYO Bülent Ecevit Üniversitesi Kdz. Ereğli Meslek Yüksekokulu ALGORİTMA ÖRNEK1: İki sayının toplamı
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
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ıVeritabanı Tasarımı. Düzenli İfadeler
Veritabanı Tasarımı Düzenli İfadeler Konular Düzenli ifadeleri tanımlama SQL ifadelerinde düzenli ifadeleri arama, eşleme ve yer değiştirme katarlarında kullanma Düzenli ifadeleri ve kontrol kısıtlamalarını
DetaylıBasamaklı Stil Şablonları (CSS) BIM206 Web Programlama
Basamaklı Stil Şablonları (CSS) BIM206 Web Programlama Basamaklı Stil Şablonları (CSS) CSS, bir HTML elemanının nasıl görüneceğini belirleyen kurallar tanımlamamızı sağlayar. Örneğin: Sayfanın arka planının
Detaylı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ı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ıBBS 514 YAPISAL PROGRAMLAMA (STRUCTURED PROGRAMMING)
1 BBS 514 YAPISAL PROGRAMLAMA (STRUCTURED PROGRAMMING) LECTURE 3: ASSIGNMENT OPERATOR Lecturer: Burcu Can BBS 514 - Yapısal Programlama (Structured Programming) 2 Lexical Elements (Sözcüksel Elemanlar)
Detaylı