Yrd. Doç. Dr. Caner ÖZCAN

Benzer belgeler
Yrd. Doç. Dr. Caner ÖZCAN

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-1 Kapsama Kuralları & Rasgele Sayı Üretimi & Rekürsif (Özyinelemeli) Fonksiyonlar

BLM 112- Programlama Dilleri II. Hafta 1 Giriş, Kapsama Kuralları ve Rasgele Sayı Üretimi

Hafta 13 Fonksiyonlar

BLM 112- Programlama Dilleri II. Hafta 2 C Programlarının Bellek Düzeni ve Rekürsif (Özyinelemeli) Fonksiyonlar

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN

BLM 112- Programlama Dilleri II. Hafta 4 İşaretçiler (Pointers)

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-11 Karakter Diziler. Yrd. Doç. Dr. Ümit ATİLA

Hafta 7 C Programlama Diline Giriş ve C Derleyicisi

Yrd. Doç. Dr. Caner ÖZCAN

BLM 112- Programlama Dilleri II. Hafta 5 İşaretçiler (Pointers)

Hafta 4 Döngü Yapıları

BLM111 Programlama Dilleri I. Hafta 10 Diziler. Yrd. Doç. Dr. Caner ÖZCAN

ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ. Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-10 Diziler. Yrd. Doç. Dr. Ümit ATİLA

Hafta 5 Algoritma Örnekleri ve Analizi

Hafta 12 Karakter Tutan Diziler

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-3 İşaretçiler (Pointer) (Kısım-2)

BİL-142 Bilgisayar Programlama II

Hafta 11 Çok Boyutlu Diziler

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

Dr. Fatih AY Tel: fatihay@fatihay.net

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

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-8 Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri

Hafta 9 C Dilinde Kontrol ve Döngü Yapıları

ELN1001 BİLGİSAYAR PROGRAMLAMA I

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-4 Döngü Yapıları. Yrd. Doç. Dr. Ümit ATİLA

ALGORİTMA VE PROGRAMLAMA II

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-2 Değişken Kavramı ve Temel Operatörler

Yrd. Doç. Dr. Caner ÖZCAN

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-8 Dosya İşlemleri-1. Yrd. Doç. Dr. Ümit ATİLA

Dr. Fatih AY Tel: fatihay@fatihay.net

Yrd. Doç. Dr. Caner ÖZCAN

Temel Bilgisayar Programlama

FONKSİYONLAR. Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır.

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-7 Sıralama Algoritmaları

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

10/17/2007 Nesneye Yonelik Programlama 3.1

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-7 C Programlama Diline Giriş

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

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

T.C. MALTEPE ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ YAZILIM MÜHENDİSLİĞİ LİSANS PROGRAMI Bahar Yarıyılı

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

ALGORİTMA VE PROGRAMLAMA I

Hafta 8 C Dilinde Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri

Programlama Dilleri. C Dili. Programlama Dilleri-ders02/ 1

Veri Yapıları. Amaçlar: Temel Veri Yapılarını Tanımlamalı Veri Yapılarını Veri Modeli ve Türlerini Öğreneceksiniz. İçindekiler:

enum bolumler{elektronik, insaat, bilgisayar, makine, gida};

BLM 111 Algoritma ve Programlama I Güz 2018

Yrd. Doç. Dr. Caner ÖZCAN

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU

DİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II

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

Sınav tarihi : Süre : 60 dak. a) strstr b) strchr c) strcat d) strcpy e) strlen. a) b) d) e) 0

Değişkenler tanımlanırken onlara ne tür veriler atanabileceği de belirtilir. Temel veri türleri oldukça azdır:

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

Hafta 1 Programlamaya Giriş

Fonksiyonlar (Altprogram)

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

Yrd. Doç. Dr. A. Burak İNNER Bilgisayar Mühendisliği

Fonksiyonlar. Yrd.Doç.Dr.Bülent Çobanoğlu

ALGORİTMA VE PROGRAMLAMA I

YZM 2116 Veri Yapıları

Bilgisayar programlama III Fonksiyonlar

ALGORİTMA VE PROGRAMLAMA I

Özyineleme (Recursion)

Rasgele Sayılar. 1.1 Bilgisayar Rasgele Sayı Üretemez! 1.2 rand() fonksiyonu

İsimler ve Kapsam. Hafta 4 Ders 2 BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

PROGRAMLAMAYA GİRİŞ DERS 2

ALGORİTMA VE PROGRAMLAMA II

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

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

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

Ders Adı Kodu Yarıyılı T+U Saati Ulusal Kredisi AKTS

Algoritma ve Programlamaya Giriş

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA I DERS#1

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

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.

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

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8

İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 1 DERSİ LAB. ÖDEVİ

Özyineleme (Recursion)

Programlama Dilleri 1. Ders 12: Belirleyiciler ve Niteleyiciler

WEB TASARIM I. Öğr. Gör. M. Mutlu YAPICI. Ankara Üniversitesi Elmadağ Meslek Yüksekokulu

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

Week 5 Examples and Analysis of Algorithms

Bölüm 2 - C ile Programlamaya Giriş

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 7. Bölüm Metot Tanımlama ve Kullanma

ALGORİTMA VE PROGRAMLAMA II

Programlama Dilleri III 1

ALGORİTMA VE PROGRAMLAMA II

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ (Akış Diyagramı)

Veri Yapıları Laboratuvarı

Aynı tipten çok sayıda değişken topluluğudur. X Y Score1 Score2 (0) (1) (2)...

Transkript:

Yrd. Doç. Dr. Caner ÖZCAN

Derse Giriş Ders Web Sitesi: www.canerozcan.net Ofis Saatleri: Salı 11:00-13:00 Perşembe 15:30-17:30 ya da email ile randevu alınız: canerozcan@karabuk.edu.tr Kaynak Kitaplar: Doç. Dr. Fahri Vatansever, Algoritma Geliştirme ve Programlamaya Giriş, Seçkin Yayıncılık, 12. Baskı, 2015 Brookshear J. G., Computer Science: An Overview, Pearson International Edition, 2007 2

Derse Giriş Bol bol pratik yapın! Notlandırma Vize Sınavı: %40 Final Sınavı: %60 Not için değil, öğrenmek için çalışın. Not nasılsa kazanılır. 3

Dönem Boyunca Görülecek Konular Rekürsif Fonksiyonlar İşaretçiler (Değer Yoluyla Çağırma, Referans Yoluyla Çağırma) İşaretçiler (Dinamik Bellek Yönetimi) İşaretçiler ile İlgili Örnekler Struct, Enum ve Typedef Tanımlamaları Tek Bağlı Doğrusal Listeler Tek Bağlı Doğrusal Listeler Sıralama ve Arama Algoritması (Seçmeli Sıralama-Ardışıl Arama) String (strcpy, strlen, strcmp, vb.) ve Matematiksel (rand,pow,floor,ceil vb.) Fonksiyonlar Dosya İşlemleri (Sıralı Erişimli Dosyalar) Dosya İşlemleri (Rasgele Erişimli Dosyalar) Bitişlem Operatörleri C Programlama Dili ile Temel Grafik İşlemleri C Programlama Dili ile Temel Grafik İşlemleri 4

Saklama Sınıfları Nesne kendi bloğu içinde oluşturulur ve yok edilir auto: yerel değişkenler için ön tanımlıdır auto double x, y; { int mount; auto int month; } register: değişkeni yüksek hızlı kaydedicilere yerleştirmeye çalışır (RAM yerine register) register int counter= 1; { register int miles; } 5

Saklama Sınıfları Statik Saklama Değişken tüm programın çalışması sürecinde var olur. Ön tanımlı değeri sıfırdır. Yerel değişkenleri statik yapmak, fonksiyon çağrıları arasında değerlerini korumalarını sağlar. static: fonksiyonlar içinde tanımlanan yerel değişkenlerdir. Fonksiyon sonlandıktan sonra değişken değeri saklanır Sadece tanımlandıkları fonksiyonda geçerlidirler 6

Saklama Sınıfları Dosya kapsama alanı Bir fonksiyon dışında tanımlanan bir tanımlayıcı dosya kapsama alanına sahiptir. Böyle bir tanımlayıcı tanımlandıkları noktadan itibaren dosya sonuna kadar tüm fonksiyonlar içinde geçerlidir Global değişkenler, fonksiyon tanımlamaları hep dosya kapsama alanına sahiptir. 7

Saklama Sınıfları Blok Alanı Blok içinde tanımlanan tanımlayıcılar Blok alanı tanımlandığı noktadan başlar sağ kırlangıç paranteze kadar devam eder. Değişkenler, yerel değişkenler ve fonksiyonlar için kullanılır. Dış bloklar eğer iç blokta aynı isimle değişken varsa iç bloktan gizlenirler. 8

Saklama Sınıfları 9

Saklama Sınıfları 10

Saklama Sınıfları 11

Saklama Sınıfları 12

Rastgele Sayı Üretimi rand fonksiyonu <stdlib.h> kütüphanesi yüklenmelidir 0 ile RAND_MAX (en düşük 32767- maks değeri 16 bit tamsayı) RAND_MAX <stdlib.h> içinde tanımlanmış sembolik sabittir. 0 ve RAND_MAX arasındaki her sayı seçilmek için eşit olasılığa sahiptir. Rand ile üretilecek rastgele sayı aralığı uygulama ihtiyacına göre değişir. 13

Rastgele Sayı Üretimi Yazı tura programı sadece yazı için 1 tura için 0 a ihtiyaç duyar. Zar kullanan bir program 1 ile 6 arasında rastgele sayı üretmelidir. ölçekleme Rand tarafından üretilen değerler daima 0 ile RAND_MAX arasındadır. 0 rand ( ) RAND_MAX 0 ile 5 arasında sayı üretmek için rand fonksiyonu ile % kalan operatorü kullanılır. Buna ölçekleme denir. rand( ) % 6 14

Rastgele Sayı Üretimi 6 sayısı ölçekleme faktörüdür. Aralığı kaydırmak için sonuca 1 eklenir. randnumber = 1 + rand ( ) % 6 1 randnumber 6 aralığında sayılar üretir. Genel kural: n = a + rand ( ) % b ; a kaydırma değeridir. b ölçekleme faktörüdür 15

Rastgele Sayı Üretimi 16

Rastgele Sayı Üretimi Örnek Program: 6000 kere zar atma 1 den 6 ya kadar tamsayılar yaklaşık olarak 1000 defa seçilmelidir. 17

Rastgele Sayı Üretimi 18

Rastgele Sayı Üretimi 19

Rastgele Sayı Üretimi Rand fonksiyonu gerçekte sahte rastgelelik üretir. rand fonksiyonunu defalarca çağırmak rasgeleymiş gibi görünen bir sayı dizisi oluşturur. Ancak, bu sayı dizisi her program çalıştırıldığında kendi kendini tekrarlar. Her program çalışmasında farklı dizilimde gerçek rastgele sayılar üretebilmek için srand fonksiyonu kullanılır. srand argüman olarak bir tamsayı alır. srand rand fonksiyonunun programın her çalışmasında farklı dizilimde sayılar üretilmesini sağlar. 20

Rastgele Sayı Üretimi 21

Rastgele Sayı Üretimi 22

Rastgele Sayı Üretimi Her seferinde seed değeri girmeden rastgele sayı üretmek için srand ( time (NULL)); Sistem saati otomatik olarak seed değeri elde etmek için kullanılır. time fonksiyonu 1970 Ocak ayı gece yarısından itibaren kaç saniye geçtiğini döndürür. time fonksiyonu için <time.h> kütüphanesi kullanılır. 23

Şans Oyunu: Craps Kurallar: İki zar atılır Zarların toplamı hesaplanır İlk atışta 7 veya 11 gelirse oyuncu kazanır İlk atışta 2, 3 veya 12 gelirse oyuncu kaybeder İlk atışta 4,5,6,8,9,10 gelirse bu oyuncunun puanı oluyor. Oyuncu 7 atmadan önce kendi puanını tutturmalıdır. 24

#CrapsGAME 25

Özyineleme (Rekürsif) Özyinelemeli fonksiyonlar Kendi kendini çağıran fonksiyonlar Eğer fonksiyon temel durum ile çağırılırsa bir sonuç döndürür. Eğer fonksiyon daha karmaşık bir problem ile çağırılırsa, fonksiyon problemi iki kavramsal parçaya böler; Birincisi: fonksiyonun işi nasıl yapacağını bildiği kısım İkincisi: fonksiyonun işi nasıl yapacağını bilmediği kısım İkinci kısım orijinal probleme benzemelidir. Fonksiyonun bilmediği kısmı çözebilmek için kendisinin bir kopyasını çalıştırır Sonunda temel durum çözülür 26

Özyineleme (Rekürsif) Faktöriyel probleminin rekürsif tanımlaması aşağıdaki gibi yapılır. n! = n. (n-1)! Örneğin: faktöriyel 5! = 5. 4. 3. 2. 1 Dikkat edin 5! = 5. 4! 4! = 4. 3!... Faktöriyel hesabı rekürsif olarak hesaplanabilir. Temel durumu çöz ( 1! = 0! =1) daha sonra 2! = 2. 1! = 2*1 = 2 3! = 3. 2! = 3*2 = 6 27

Özyineleme (Rekürsif) 28

Özyinelemeli Faktöriyel Hesabı 0-10 arası tam sayılı faktöriyelleri hesaplamak ve yazdırmak için özyineleme programı. 29

Özyinelemeli Faktöriyel Hesabı 30

Özyinelemeli Fibonacci Sayıları Fibonacci serisi: 0, 1, 1, 2, 3, 5, 8... Her bir sayı kendinden önceki iki sayının toplamıdır Temel durum: Fib(0) = 0 Fib(1) = 1 Rekürsif olarak çözülebilir : Fib (n) = Fib(n-1) + Fib(n-2) 31

Özyinelemeli Fibonacci Sayıları Fibonacci işlevine özyinelemeli çağrı Şekil, Fibonacci işlevinin fibonacci(3) ü nasıl değerlendireceğini göstermektedir. 32

Özyinelemeli Fibonacci Sayıları n. Fibonacci sayısını bulma 33

Özyinelemeli Fibonacci Sayıları 34

35

Dip not.. Karanlık bir odada siyah bir kedi bulmak oldukça zordur, özellikle de odada hiç kedi yoksa. Bu deyim bilimin ilerleyişini tasvir eder. Bilimin TV, gazete, internet haberleri ve lise müfredatında anlatılanlardan çok daha farklı olduğunu söyler. 36

37

Kaynaklar Doç. Dr. Fahri Vatansever, Algoritma Geliştirme ve Programlamaya Giriş, Seçkin Yayıncılık, 12. Baskı, 2015. J. G. Brookshear, Computer Science: An Overview 10th Ed., Addison Wisley, 2009. Kaan Aslan, A dan Z ye C Klavuzu 8. Basım, Pusula Yayıncılık, 2002. Paul J. Deitel, C How to Program, Harvey Deitel. google.com for all images. 38