Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Temel Bİlgİsayar Bİlİmlerİ

Benzer bir sunumlar


... konulu sunumlar: "Temel Bİlgİsayar Bİlİmlerİ"— Sunum transkripti:

1 Temel Bİlgİsayar Bİlİmlerİ
Burak AYDOĞAN

2 Bİlgİsayar Nedİr? Bilgisayar çeşitli mantık ve aritmetik işlemleri yapabilmek için programlanabilen çoğunlukla en az bir işlemci ve hafıza biriminden oluşan genel amaçlı bir aygıttır. İşlem sırası ve programlar istenildiğinde değiştirilebileceğinden bilgisayar çok çeşitli problemleri çözebilir.

3 Bİlgİsayar Donanım: Bilgisayarı oluşturan fiziksel bileşenler
Yazılım: Bilgisayarın istenilen görevleri yerine getirmesini sağlayan programlar (sıralı komutlar) topluluğu

4 BİLGİSAYARIN BİLEŞENLERİ
İşlemci Hafıza Giriş – Çıkış birimi Giriş Birimleri Klavye Fare Çıkış Birimleri Ekran Yazıcı Hoparlör Diğer Giriş Çıkış Birimleri Sabit disk CD / DVD Ağ / İnternet Vd...

5 Mİmarİ Intel x86 veya Intel x86-64 (Günümüz Kişisel Bilgisayarları) (CPU) 80086 – – – – – Pentium – Core – i3 – i5 – i7 – AMD Athlon – AMD Llano – AMD Fx vb… RISC (Cep telefonları ve akıllı cihazlar) (SOC) Cortex A8 – A10 – Nvidia Tegra vb..

6 Platformlar PC (Kişisel Bilgisayar) Mobil Windows Linux MacOS IOS
Android Windows Mobile Vb..

7 Bit - Byte BIT : Bilgisayar ortamında karakterler bitlerden oluşmuştur. Bir karakterin oluşması için 8 bite ihtiyaç vardır. Bir bit sayısal elektroniğin temeli olan 0 ve 1 olan değerlerdir. BYTE : Bir byte 8 bitten oluşur. Başka bir deyişle bir byte 1 karaktere eşittir. Byte ve byte’ ın katları şunlardır. 1024 BYTE = 1 KİLOBYTE 1024 KİLOBYTE = 1 MEGABYTE 1024 MEGABYTE = 1 GİGABYTE 1024 GİGABYTE = 1 TERABYTE

8 PROGRAM NEDİR ? Belirli bir amaca yönelik olarak yazılmış, bilgisayarda yerine getirilmesi istenilen işlemler için komut ve işlem adımlarının tümüne program denir. Programda tanımlanan ilk işlem adımından başlayarak her bir adım, sırayla ve teker teker çok hızlı bir şekilde yapılır. Hazırlanan programların bilgisayara girilerek çalıştırılması işlemine programlama denir

9 PROGRAMLAMA DİLİ Bilgisayarlar işlemlerin kendi anlayacağı dilde (machine code) açıkca yazılmasını isterler. Bilgisayar programları yazımında belli kurallar dizisi takip edilir. Bu kurallar dizisine “Bilgisayar Programlama Dili” denir. Bilgisayar şirketlerini kendi ürettikleri bilgisayarlarını çalıştıracak programlama yöntemlerini geliştirmeleri sonucu programlama dilleri çeşitlenmiştir.

10 PROGRAMLAMA DİLLERİ Makina Dili (Machine Language)
Sembolik Diller (Symbolic Language) Alt Düzey Üst Düzey

11 Alt Düzey Programlama Dilleri
Makine diline çok yakındır. Yazılan program küçük bir çevirme işlemi ile makine koduna dönüştürülür. Üst Düzey Dillerden daha hızlıdır. Örnek ASSEMBLY

12 Üst Düzey Programlama Dilleri
Bilgisayar kullanıcısının kolaylıklla yazabildiği makine diline mutlaka çevirilmesi (Derleme =Compiling) gereken dillerdir FORTRAN (FORmula TRANslation) COBOL (COmmon Business Oriented Language) BASIC (Beginners’ All purpose Symbolic Instruction Code) RPG (Report Program Generator) PL/1 (Program Language 1) ALGOL (ALGOrithmic Language) APL (A Program Language PASCAL ADA C

13 YENİ NESİL PROGRAMLAMA DİLLERİ
NESNEYE DAYALI (OBJECT PROGRAMMING) OLAY TEMELLİ (EVENT-DRIVEN PROGRAMMING) VISUAL BASIC DELPHI VISUAL FORTRAN C++ JAVA C# .... …..

14 Visual Basic NEDIR ? Visual Basic çok amaçlı ve aynı zamanda kolay bir şekilde program geliştirmemizi sağlayan bir programlama ortamıdır. Visual sözcüğü Windows işletim sisteminin grafik arabiriminin (GUI) özelliklerinden gelir. Visual (görsel) olmak simgelerle yapılan işletimi ifade eder. Bu ortamda işlerin yapılmsı için kod yazmak yerine fare(mouse) işlemleriyle birçok işin yapılması sağlanır. VB ortamının tasarımı öncelikli olarak yapılan işlemdir. Kod yazmak ikinci planda kalır. Basic(Beginners’ All purpose Symbolic Instruction Code) ise temel bilgisayar ve programlama eğitimi için tasarlanmış bir programlama dilidir.

15 NEDEN Visual Basic ? VB sadece program geliştirmekle sınırlı değildir, VBA (Visual Basic Aplication) diye bilinen ve MS office içindeki (Excel, Word, PP ve Outlook Express programlarında da kullanılır. Internet uygulamalarında kullanılan VBScript de VB’in bir alt setidir. VB ile farklı konularda programlar geliştirilebilir. Küçük bir işlem için program geliştirilebileceği gibi bütün dünyaya uzanabilecek bir Internet uygulaması da geliştirilebilir. Yukarıdaki maddelerden anlaşılacağı gibi VB basit fakat çok geniş kapsamlı bir programlama dilidir.

16 Visual Basic ile neler yapabiliriz ?
Basit ve genel amaçlı uygulamalar Bilimsel uygulamalar Mühendislik uygulamaları Ticari programlar(elektronik alışveriş, stok kontrolü vb.) Database (Veri bankası) uygulamaları Web uygulamaları İstatistik Uygulamaları GIS (Geographic Information System) Uygulamaları Ticari amaçlı paket programlar Oyunlar

17 VB’nin Özellikleri VB’de Windows ortamında yazılım geliştirildiğinden diğer klasik programlama dillerine göre farklı özelliklere sahiptir. VB ile program geliştirirken öncelikle Windows arabiriminin kullanıcı etkileşiminde kullanılması düşünülür (nesnel ve olay temelli programlama). Klasik programlama dilleri genellikle DOS ve UNIX ortamında klavye ağırlıklı kullanıcı arabirimine sahiptir. Text ortamında : Kullanıcılar seçim için klavye kullanır Kullanıcıların programın kontrolünde bir etkisi olmaz Her programın kullanıcı arabirimi birbirinden farklıdır. Çoklu programlama genellikle olmaz Ekranda program çıktısı almak (preview) yapılamaz Windows Ortamında : Kullanıcılar seçim için genellikle fare kullanır Mönüler, düğmeler, iletişim kutuları ile ortak arabirimler yaratılır Kullanıcılar programın kontrolünde aktif rol oynarlar Aynı anda bir çok programın çalışması sağlanır. Ekranda çıktılar (preview) alınabilir.

18 Nesneye Dayalı Programlama (Object Oriented Programming))
VB nesneye dayalı bir programlaam dilidir. OOP terimi değişik anlamlar taşımakla birlikte VB özünde nesne temelli bir programlama dilidir. Nesneye dayalı programlama dilleri 1980’li yıllarda C++ ile ortaya çıkmıştır. Bu tür programlama dillerinde nesneler (kullanıcı arabirimleri) hazır olarak programcıya sunulur. OOP’in üç prensibi vardır Encapsulation (Sarma) : nesne hakkındaki bilgiler ve işlemler anlamına gelir. Metot ve özellik olarak adlandırdığımız bu işlemler bir nesnenin niteliklerini ve işlemlerini ortaya koyar. Inheritance (Miras, Kalıt) : bir nesnenin başka bir nesne üzerine kurulmasıdır. Polymorphism (çok biçimlilik) : belli bir işlem yönteminin bir çok nesne tarafından kullanılmasıdır. VB sadece standart kontroller sağlamaz aynı zamanda çok sayıda başka yazılımcıların da hazırladığı kontrolleri kullanabilir (OCX kontrol ve AvtiveX kontrolleri).

19 Olay Temelli Programlama
Bilgisayarda bir uygulamayı kullanırken bir çok olay oluşur. Bir dosya açılır ya da kapanır, bir tuşa basılır yada fare ile bir düğmeye basılır, Bir nesne ekran üzerinde sürüklenip bırakılır vb. Bu işlemlerin her biri bir olaydır (event). Olay temelli programlama( event-driven programming) klasik programlamanın aksine kullanıcıların işlemlerine göre programın yanıt vermesi esasına dayanan bir programlama sistemidir.

20 Kullanıcıların Fare ile neden oldukları olaylar
Bir grafik nesneyi üzerine gelerek işaret etmek Bir düğmeyi tıklayarak çalıştırmak Bir seçeneği seçmek Bir mönüyü tıklayarak açmak ve bir komutu tıklamak Bir nesneyi sürüklemek Programın çalıştığı pencere ortamını boyutlandırmak, taşımak ve kapatmak Araç çubuğunda bir düğmeyi tıklamak Şekil çizmek

21 Nesne ve Çevresindeki Bileşenler
Özellikler (Properties) bir nesnenin renk, biçim vb niteliklerini temsil eder. Yöntemler (Methods) ise nesnenin işlemlerini Olaylar (events) ise nesnenin sahip olduğu temel tepkimeleri (üzerine tıklamak veya tuşa basmak gibi) gösterir. Olaylar Özelikler Nesne Yöntemler

22 Bir VB ProgramInIn KIsImlarI
Kullanıcı arabirimi Bilgi işleme (hesaplamalar) Bilgi saklama (Database işlemleri) Raporlama işlemleri

23 KullanIcI Arabİrİmİ Gelİştİrme SanatI
Kullanılabilirlik Yalınlık Uyumluluk Biçimleme Grafik değerler

24 Program Gelİştİrme Sürecİ
Gereksinimlerin tanımlanması Bu gereksinimleri karşılayacak Programlama planı Bilgi akışı, hesaplamalar ve karar yapılarının şemalaştırılması Kullanıcı arabirimi tasarımı Program kodunun yazılması Kodun test edilmesi

25 İyİ bir programIn özellikleri
Görsellik Kolaylık Doğruluk Hız İyi raporlama Kolayca değiştirilebilme~ güncelleme Etkin bir kodlama Etkin bir işletim (Mümkün olduğu kadar az siste kaynağına gereksinim)

26 Program Geliştİrme AdImlarI
Sistem Analizi Sistem Tasarımı Kodlama Test etme İşletme Belgeleme Bakım

27 Sistem Analizi Problemin tanımlanması ve amacın belirlenmesi ile çözülmesi için gerekli bileşenlerin saptanması aşamasıdır. Bu aşamada ayrıca, amacı gerçekleştirmede kullanılacak bileşenlerin (olayların ve nesnelerin) öncelikleri belirlenir.

28 Sistem tasarImI Bu aşamada sistemin bilgi akışı, girdiler, çıktılar şematik olarak ortaya konur. Bunun dışında veri yapıları ve kodlamaya ilişkin bölümler de açıklanır. Tasarım aşaması etkin bir kod yazmak için önemlidir.Özellikle kod tekrarı yapmamak için için iyi bir tasarım stratejisi geliştirilmelidir. Bu aşamada algoritmalar (bir işlemi yapmak için gerekli adımlar) geliştirilir. Akış şemaları,karar tabloları vb. üretilir.

29 AkIş ŞemalarI (Flow Chart)
Basla Input Hesapla Output Program Sonlansın mı Bitir H E

30 Alt Program / fonksiyon/ Önceden Tanımlı İşlem
AkIŞ ŞemasI Karar / Karşılaştırma Başla - Dur Veri Girişi Alt Program / fonksiyon/ Önceden Tanımlı İşlem İşlem Bilgi Veri Yazma Döngü Bağlantı

31 Verİ Tİplerİ

32 Verİ Tİplerİ

33 Dim deyimi ile değişken tanımlamak
V. Basic’te değişken tanımlamak için DIM bildiri deyimi kullanılır. DIM deyimi ile değişken tanımlanırken istenirse değişkenin tipi belirlenebilir. Tanımlama işleme sırasında tipi belirlenen değişkene belirtilen tipin dışında başka tipte bir bilgi aktarılmaz. DIM deyimi ile bazı yardımcı bildiri deyimleri AS bağlacı ile birlikte kullanılır. Bu yardımcı bildiri deyimleri değişken tiplerini tanımlar. Dim A as Integer Dim B, C as Double

34 KarşIlaştIrma Operatörleri
= Eşitlik ve Atama <> Eşit Değil < Küçüktür > Büyüktür <= Küçük eşit >= Büyük eşit

35 Mantıksal Koşul Operatörleri
And Mantıksal Koşul 1 And Mantıksal Koşul 2 Or Mantıksal Koşul 1 Or Mantıksal Koşul 2 Not Not <Koşul> Not Operatörü Mantıksal bir koşul ile kullanılır. Birlikte kullanılan mantıksaL koşul “True” (doğru) ise NOT “False” (yanlış), “False” ise “True” değer döndürülür.

36 OPERATÖRLER + Toplama - Çıkarma * Çarpma / Bölme \ Tam Bölme ^ Üs Alma

37 SAYISAL FONKSİYONLAR Radyan cinsinden Arc tanjant hesaplar
Sayısal Fonksiyonlar System.Math içerisinde bulunurlar Yapılan Programda matematiksel fonksiyonları kullanmak için İlk Satıra Imports System.Math Yazılmalıdır. Sin (x) Radyan cinsinden Sinüs hesaplar Cos(x) Radyan cinsinden Cosinüs hesaplar Tan(x) Radyan cinsinden Tanjant hesaplar Atn(x) Radyan cinsinden Arc tanjant hesaplar Sqr(x) Karakök hesaplar Rnd [(x)] Rastgele (random sayı üretir)

38 SAYISAL FONKSİYONLAR Exp(x) Log(x) Round(x) Sgn(x) Abs(x)
Mutlak değer alır Exp(x) e tabanına göre üs alır Log(x) e tabanına göre logaritma (doğal log.) Round(x) Yuvarlatma yapar Sgn(x) Verilen sayının(x) işaretini bildirir (+ ise +1, - ise -1)

39 BLOK KONTROL DEYİMLERİ
IF-End If Deyimi If Ifade Then End If Yapılan Karşılaştırmada ikiden fazla olasılık varsa If İfade1 Then Elseif ifade2 Then Else

40 GoTo Program içinde herhangi bir satıra gitmek (dallanmak) için kullanılır. GoTo label Label : arası bir tam sayı Goto 100 Label: Konum_Ismi: şeklinde bir isim ve sonunda «:» olaiblir Goto Son GoTo deyimi çoğu zaman If deyimi ile kullanılır. GoTo If deyimi ile kullanılarak bir döngü (loop) oluşturulabilir. If kosul Then GoTo label şeklinde kullanılabilir.

41 Select Case-End Select Deyimi
Select Case Degisken Case Deger1 Degisken=Deger1 olduğu durumda yapılması istenen işlemler Case Deger2 To Deger3 Degisken Degeri, Deger2 ile Deger 3 arasında olduğu durumda yapılması istenen işlemler (Deger2 ve Deger3 karşılaştırmaya dahildir) Case Is Karşılaştırma Operatörü Deger4 (Is < 3 veya Is >= 12 gibi) Degisken Degeri Deger4 ile karşılaştırıldığında yapılacak işlemler, Case Else Degisken yukarıdaki değerler den hicbirine eşit değil ise yapılacak işlemler End Select

42 Do While-Loop Deyimi Do [While] [Until] ifade .............. Exit Do
Loop [While] [Until] ifade [..] Parantez içerisindeki ifadelerden sadece biri kullanılır. While ifade sonucu true olduğu sürece döngüyü çalıştırır. Until ifade sonucu True olana kadar (false iken) döngüyü çalıştırır.

43 For -Next Deyimi (Döngü)
Bunu yazmazsak 1 kabul edilir For Değişken= İfade To İfade [Step İfade] Sayaç Başlangıç Son Artım Sayaç Parametreleri [Exit For] Next değişken

44 İçiçe Çevrimlerin Kullanışı

45 Dizi Değişkenler Her zaman değişkenlerin tümünü tek bir adla ve tek bir içerikle kullanmak kısıtlayıcı olabilir. Bu nedenle diziler (arrays) geliştirilmiştir. Bir dizi aynı tipte ve aynı adı paylaşan bir grup değişken demektir. Diziler birçok değişkene aynı adla ulaşmayı sağlayan bir grup veri yapısıdır. Bu indeks numarası ile dizi içindeki elemanlara ulaşılır. Dizi içindeki elemanlar aynı tipteki verilerdir : örneğin haftanın günleri gibi. Dizi tanımlama : Dim dizideğişkeni (üst sınır) As tipi Dim A(20) as Integer A(0), A(1) ... A(20) ye kadar 21 elemanlı bir dizi tanımlar

46 Dİzİlerde Boyut Dizilerde 1 den 32’ye kadar boyut tanımlanaiblir
Dim degisken_ismi(ustlimit1,ustlimit2,..,ustlimitn) as tip Dim A(20,13,30) as integer Yukarıdaki ifadede 21x14x31 elemanlı bir dizi tanımlanmıştır. Dim B(3,5) as double Yukarıdaki örnekte ise 4x6 elemanlı iki boyutlu bir dizi veya matris tanımlanmıştır.

47 Dinamik Diziler Dizi değişkenleri tanımlanırken boyutlarının tanımlanması yeterlidir eleman sayısının tanımlanması gerekli değildir. Eleman sayısı daha sonradan tanımlanabilir. Tanımlanan eleman sayısı sonrada değiştirilebilir. Dim degisken_ismi([,,]) as tip ‘ Boyut_sayısı – 1 adet virgül Redim [Preserve] degisken_ismi(sinir1,sinir2,sinir3) Preserve anahtar kelimesi dizinin dizinin atanmış elemanlarını korumak için kullanılır. Ancak sadece son boyut değiştirilebilir. Preserve kullanılmadığında önceki değerler default değerler ile değiştirilir. (örnek sayılar için 0) Ör: Dim A() as integer Redim A(15) Dim B(,) as double Dim C(,,) as single Redim B(12,20) Redim C(3,5,12) Redim Preserve C(3,5,20)

48 Genel AmaçlI Yordamlar
Standart modüller Public değişkenlerine ek olarak, programın herhangi bir yerinden çağrılabilen genel amaçlı yordamlar da içerebilirler. Bir genel amaçlı yordam, çalışma zamanından herhangi bir olaya ya da nesneye bağlı olmadığından olay yordamlarından farklıdır. Genel amaçlı yordamlar yerleşik VB bildirisi ve işlevlerine benzerler. Onlar gibi adlarıyla çağrılır, bağımsız değişken alabilir ve her biri belli bir görevi yerine getirir.

49 Genel AmaçlI Yordam Türlerİ
İşlev Yordamları (Fonsiyonlar) Bunlar diğer yordamlardan ad olarak çağrılırlar. Bağımsız değişken alabilirler ve işlev adıyla her zaman bir değer döndürürler. Tipik kullanım alanları hesaplamalardır. Alt Yordamlar (Sub) Alt yordamlar olay ya da diğer yordamlardan ad olarak çağrılırlar. Bağımsız değişken de alabilirler. Yordam içinde bir görev yerine getirip değer döndürürler. Fonksiyonlardan farklı olarak değeri kendi yordam adıyla beraber döndürmezler (değerleri değişken adları ile dödürebilirler). Özellik Yordamları Bir programda kullanıcı tanımlı özelliklerin tanımlanması ve değiştirilmesinde kullanılır.

50 Genel AmaçlI YordamlarIn YararlarI
Satırların yinelenemsini önlerler. Programları okunaklı kılarlar. Program geliştirmeyi basitleştirirler. Başka programlarda kullanılabilirler. VB dilinin sınırlarını genişletirler.

51 Fonksİyon YordamI Yazmak
Fonksiyon bir değerin hesaplanıp geri gönderilmesi gibi bir destek sağlar Fonksiyon bir standart modül içinde bir Function ve bir End Function bildirisi arasında yerleştirilmiş biri grup bildiridir. Program içinde bir Fonksiyon’u çağırmak için fonksiyon adı gerekli bağımsız değişkenlerle beraber bir program bildirisine yazılabilir. Bağımsız değişkenler (arguments), fonksiyonun çalışması için kullanılan verilerdir. Yani bir fonksiyon yordamı kullanmak Time, Int gibi yerleşik bir fonksiyonu kullanmaya benzer.

52 Fonkiyon Sözdizimi Function İşlevAdı ([Bağımsız Değişkenler]) [As Tür]
Fonksiyon bildirisi Return İşlevAdı End Function İşlevAdı, standart modülde yaratılan fonksiyon adıdır. Bağımsız değişkenler [Arguments], fonksiyonda kullanılacak seçilik değişkenlerin (biribirinden virgülle ayrılan) bir listesidir. As Tür döndürülecek fonksiyonun türünü belirten isteğe bağlı bir bildiridir. Fonksiyon bildirileri, fonksiyonun görevini yerine getirmesi için gerekli olan kod bildirileridir.

53 Alt Yordamlar Yazmak Alt yordamlar fonksiyon yordamına benzerler fakat adlarıyla ilgili değer döndürmezler. Alt yordamlar genellikle kullanıcıdan girdi almak ve bilgi işlemek için kulllanılırlar. Çoğu fonksiyon bir tek değer döndürürken Alt yordamlar birden fazla değer döndürebilirler.

54 Alt Yordam Sözdizimi Sub YordamAdı ([Bağımsız değişkenler]) End Sub
Yordam Bildirileri End Sub YordamAdı, yaratılan alt yordamın adıdır. Bağımsız değişkenler(arguments) yordamda kullanılacak isteğe bağlı bağımsız değişkenlerin listesidir. Yordam bildirileri yordamın işini yapması için gerekli olan kod bildirileridir.

55 Program YazmaYa Başlamak
Konsol Programı (Console Application) Windows Forms Programı (Windows Forms Application) İlk göreceğimiz Program biçimi Konsol programı olacak.

56 Neden Konsol ProgramI Yazılan oprogramlar lineerdir.
Giriş çıkış basit komutlar ile yapılır Çıktılar yine basit bir şekilde ekrana verilir. Arabirim tasarlamaya gerek yoktur. Oluşturulan algoritmaların hızlı bir şekilde kodlanmasını sağlar

57 DerleyİCİ seçeneklerİ
Explicit : Bu seçenek On olduğunda her değişken kullanılmadan önce tanımlanmalıdır. Infer: Infer On ise; Değişkenler tanımlanırken tip belirlemek yerine başlangıç değeri atanabilir ve başlangıç değerine göre sistem değişken tipini otomatik atar. Örnek: Dim A=20 (20 değeri integer olduğundan önce değişken Integer olarak Atanır ve sonra 20 değeri değişkene verilir. ) Strict: On ise kısıtlayıcı dönüşümlerde ide hata mesajı gösterir.

58 Nesnelerİ İçe Aktarma Matemaktisel fonksiyonların kullanılacağı programlarda Math nesnesini programa dahil etmek komutları yazarken kolaylık sağlayacaktır. Matemaktisel fonksiyonların kullanılma şekli içe aktarım gerçekleştirilmediğinde math.fonksiyon_ismi() şeklindedir. Aktarma gerçekleştirildiğinde sadece fonksiyon_ismi() şeklinde kullanılaiblir. Ör: Imports System.Math

59 Konsole Programlarında Console nesnesi de programa aktarılabilir.
Bu durumda yine konsola ait komutları kullanmak için Console.komut() yazmak yerine sadece komut() yazılabilir. Imports System.Console

60 COnsole NesNESİ İle Giriş – ÇIKIŞ KomutlarI
Read: kullanıcının klavye ile veri girmesini sağlar kullanıcı entera bastıktan sonra yazılan tüm karakterler istenilen değişkene aktarılır. Readline: Read metodu ile aynı işi yapar ancak kullanıcı veri girmeye başlamadan önce kursor yeni satırda satır başına getirilir Write: İstenilen bir veriyi kursorun o anki numundan başlayarak ekrana yazar. Writeline: Kursörü yeni satırda satırbaşına getirir ve istenilen veriyi ekrana yazar.

61


"Temel Bİlgİsayar Bİlİmlerİ" indir ppt

Benzer bir sunumlar


Google Reklamları