BM-103 Programlamaya Giriş Güz 2016 (11. Sunu)

Slides:



Advertisements
Benzer bir sunumlar
Nesneye Yönelik Programlama
Advertisements

 2006 Pearson Education, Inc. All rights reserved. Görsel C# ile Windows Programlama Güz 2009 (5. Hafta)
BM-103 Programlamaya Giriş Güz 2014 (7. Sunu)
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Algoritma.  Algoritma, belirli bir görevi yerine getiren sonlu sayıdaki işlemler dizisidir.  Başka bir deyişle; bir sorunu çözebilmek için gerekli olan.
EK DERS UYGULAMA REHBERİ. GIRIŞ EKRANı Sisteme giriş için adresi kullanılmaktadır. Kullanıcı adı ve şifre için ö ğ renci bilgi.
BİLGİSAYAR PROGRAMLAMA Ders 8: Fonksiyonlar Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği.
Dosya Yönetimi Dosya, Klasör ve Sürücüler HÜSEYİN ALİOSMANOĞLU.
Arduino nedir ? Atmega 328P Microcontroller USB ile bilgisayara bağlanır. Basit bir kullanımı olup kullanıcı dostudur. C++ tabanlı Arduino yazılımı ile.
YEDEKLEME NEDIR? Gülşen Güler. YEDEKLEME NEDIR? Yedekleme, en genel anlamıyla, bir bilgisayar sistemini işlevsel kılan temel birimlerin, üzerinde çalışan.
BM-308 Paralel Programlamaya Giriş Bahar 2016 (2. Sunu) (Yrd. Doç. Dr. Deniz Dal)
Girişimcilik Öğr.Gör.Seda AKIN GÜRDAL. Ders Akışı İşletmenin Amaçları İşletme Çevre İlişkisi.
BÖLÜM 4 PROGRAMLAMA DİLLERİ. PROGRAMLAMA DİLLERİNDE KULLANILAN VERİ TİPLERİ Bilgisayarda işlenen veriler iki türdür: Sayısal Alfasayısal.
BİLGİSAYAR PROGRAMLAMA Ders 11: İşaretçi (Pointer) Kullanımı Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği.
TC Windows Editörü DevC++. KURULUM PROGRAMIN KURULACAĞI YER BURADA BELİRLENİYOR.
9. HAFTA 25 Nisan2016. Fonksiyon M-Dosyaları Fonksiyon dosyaları ilk satırda “function” kelimesi bulunan “.m” uzantısı bulunan dosyalardır. MATLAB içinde.
PHP Nedir? ● Bir web sayfası oluşturabilmeniz için: ● HTML kullanmalısınız. ● Sayfadaki etkileşimi artırmak için ● JavaScript/VBScript ● Görselliği bütün.
Örnek Sorular Bilgisayar Programlama BIL 107. Soru 1: Ekran çıktısında 66 yazması için boşlukları doldurunuz ______ i = 'A'; printf(____, i__); CEVAP:
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Bölüm 2 C Dilinin Temelleri
BİLGİSAYAR PROGRAMLAMA DERSİ
SAYILAR ve RAKAMLAR.
GAZİ ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ
FONKSİYONLAR.
Algoritma ve Programlamaya Giriş
C’de Fonsiyonlar Aslı Ergün.
BM-103 Programlamaya Giriş Güz 2016 (3. Sunu)
BM-103 Programlamaya Giriş Güz 2016 (8. Sunu)
METOTLAR.
MODEL YETERSİZLİKLERİNİ DÜZELTMEK İÇİN DÖNÜŞÜMLER VE AĞIRLIKLANDIRMA
C Programlama Yrd.Doç.Dr. Ziynet PAMUK BMM211-H05
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
BİLGİSAYAR PROGRAMLAMA Ders 11: İşaretçi (Pointer) Kullanımı
BİLİŞİM SİSTEMLERİ GÜVENLİĞİ (2016)
MAT – 101 Temel Matematik Mustafa Sezer PEHLİVAN *
Algoritma ve Programlamaya Giriş
Klavye Kullanımı.
STORAGE BÜŞRA KARADENİZ
Ofis Yazılımları – Veritabanı Programları
BM-103 Programlamaya Giriş Güz 2012 (6. Sunu)
Dosya, Klasör ve Sürücüler
Bölüm 3 Atama ve Girdi/Çıktı Komutları
Temel Bilgisayar Bilgileri
BLP 4210 PLATFORM BAĞIMSIZ PROGRAMLAMA
PROBLEM ÇÖZME VE ALGORİTMALAR
ARDUİNO Arduino Eğitimleri Bölüm 4 Programlama Dili Temelleri - II
Bilgisayar Mühendisliğine Giriş
3.hafta METODLAR.
Bilgisayar Programlamasına ve Veri Analizine Giriş
BİLGİSAYAR programlama II
BİLGİSAYAR programlama II
BM-103 Programlamaya Giriş Güz 2016 (6. Sunu)
NİŞANTAŞI ÜNİVERSİTESİ
MİKROİŞLEMCİLER VE MİKROBİLGİSAYARLAR
Bölüm 4: Kontrol Yapıları I (Seçim Yapma)
SAYI ÖRÜNTÜLERİ ANAHTAR KAVRAMLAR MODELLEME ÖRÜNTÜ SAYI ÖRÜNTÜSÜ ÜS
Bilgisayar II 26 Nisan-7Mayıs Öğr. Gör. Feyza Tekinbaş.
Fortran Proglama Dili’nin Esasları
Bilgisayar Bilimi Koşullu Durumlar.
Fonksiyonlar ve Alt Programlar
Bilgisayar Bilimi Fonksiyon Yazma.
Değerler ve Değişkenler
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
Bilgisayar Bilimi Programlama Yapısı.
NİŞANTAŞI ÜNİVERSİTESİ
BLM-111 PROGRAMLAMA DİLLERİ I Ders-10 Diziler
NİŞANTAŞI ÜNİVERSİTESİ
MTM216 GÖRSEL PROGRAMLAMA
RASTGELE DEĞİŞKENLER Herhangi bir özellik bakımından birimlerin almış oldukları farklı değerlere değişken denir. Rastgele değişken ise tanım aralığında.
Sunum transkripti:

BM-103 Programlamaya Giriş Güz 2016 (11. Sunu) (Yrd. Doç. Dr. Deniz Dal)

Fonksiyonlara Giriş En iyi program yazma ve geliştirme pratiği tek bir büyük program yazmak yerine onu daha kolay kontrol altında tutmamıza yardımcı olabilecek küçük programların (fonksiyonların) birleşimi halinde oluşturmaktır. Bu yönteme “Böl&Yönet” (“Divide&Conquer”) adı verilir. Bir fonksiyon gerektiğinde fonksiyon adı ile çağrılır ve fonksiyonun işleyeceği bilgiler argüman (parametre) olarak fonksiyona aktarılır. Örneğin bir patron (fonksiyonu çağıran) bir çalışanını (çağrılan fonksiyon) yanına çağırır ve doldurması için eline bir dosya verir (argüman). Çalışanı işini bitirdiği zaman işlenmiş dosyayı patronuna geri götürür (return).

Fonksiyonlar Nasıl Çağrılırlar? #include <iostream>//cout ve cin Kullanımları İçin using namespace std; int KaresiniAl(int);//Fonksiyon Prototipi veya İmzası int main() { for(int i=1;i<=10;i++) cout<<KaresiniAl(i)<<" "; cout<<endl; return 0; } //Fonksiyon Tanımı int KaresiniAl(int y) return y*y;

Fonksiyon Formatı “döndürülen veri tipi” “FonksiyonunAdı”(parametre listesi) { deklarasyonlar ve deyimler; return anahtar kelimesi; } Parametre listesindeki birden fazla parametre birbirlerinden virgül ile ayrılır. Herbir parametre fonksiyon içerisinde bir değişken olarak kullanılacağı için bir isme ve bir veri tipine sahiptir. Döndürülen veri tipi “void” ise bu fonksiyon hiçbir veri geri döndürmez ve return anahtar kelimesi kullanılmak zorunda değildir.

Fonksiyon Prototipi Fonksiyon prototipi, derleyiciye, kullanılacak fonksiyonun adını, döndürülecek veri tipini, kaç parametre alınacağını ve tiplerini, bu parametrelerin hangi sırada olacağını hatırlatır. Parametre olarak kullanılan değişkenlerin isimleri prototip içine yazılmaz. Sadece değişkenlerin veri tipleri yazılır. Eğer fonksiyon prototipte tanımlandığı gibi çağrılmazsa derleyici hata verir. Bütün bunlar fonksiyon kullanımını daha da kolaylaştırmak ve yapılacak yanlışları önlemek içindir. Eğer fonksiyon, çağrılmadan önce tanımlanmışsa prototipe gerek yoktur. Sonra tanımlanmışsa gerek vardır. Örneğin: int Maksimum(int,int,int); prototipi Maksimum adlı fonksiyonun 3 integer parametre alacağını ve geriye yine bir integer döndüreceğini söyler.

void Fonksiyonlar void EkranaBas(); şeklinde tanımlı prototip EkranaBas adlı fonksiyonun hiçbir argüman almadığını ve geriye hiçbir değer döndürmediğini söyler bize. #include <iostream>//cout Kullanımı İçin using namespace std; void EkranaBas();//Fonksiyon Prototipi int main() { EkranaBas();//Fonksiyonu Çağır return 0; } //Fonksiyon Tanımı void EkranaBas() cout<<"Bu Fonksiyon Hicbir Arguman Almaz ve " <<"Geriye Hicbir Deger Cevirmez.\n";

//Bir Aralıktaki Asal Sayıları Bulan Program #include <iostream>//cout ve cin using namespace std; bool AsalSayiMi(int);//Prototip int main() { int altLimit, ustLimit; cout << "Lutfen Alt ve Ust Limiti Giriniz: "; cin >> altLimit >> ustLimit; for (int i = altLimit; i <= ustLimit; i++) if (AsalSayiMi(i)) cout << i << endl; return 0; } bool AsalSayiMi(int sayi)//Tanım if (sayi<2) return false; else //Bir n Sayısının 2 ile sqrt(n) Arasında En Az //Bir Adet Pozitif Böleni Varsa Asal Sayı Olamaz for (int i = 2; i*i <= sayi; i++)//i<=sqrt(sayi) if (sayi%i == 0) return true;

Matematik Kütüphanesi Fonksiyonları Bu fonksiyonlar standart kütüphaneden <cmath> header dosyası include edilerek kullanılabilir. Matematik kütüphanesinin bütün fonksiyonları genellikle double veri tipinde parametre(ler) alırlar ve geriye double veri tipinde bir değer döndürürler. Örnek: cout<<sqrt(900.0); Bu örnekte matematik kütüphanesi fonksiyonlarından “sqrt” çağrılır. “900.0” rakamı bu fonksiyonun argümanı olarak adlandırılır. Yukarıdaki deyim ekrana sonuç olarak “30.0” yazdırır. “sqrt” fonksiyonu kendisine double veri tipinde bir argüman alır ve yine double veri tipinde bir değer döndürür. Fonksiyon argümanları sabit bir sayı, değişken ya da bunların bir karması olabilir.

Matematik Kütüphanesi Fonksiyonları

Örnek: pow Fonksiyonu #include <iostream>//cout İçin #include <cmath> //pow İçin using namespace std; int main() { int sayi1=2, sayi2=8; cout<<pow((double)sayi1,sayi2)<<endl; return 0; }

Başlık (Header) Dosyaları Standart kütüphanenin her bir elemanı, bünyesinde barındırdığı fonksiyonların prototiplerini ve tanımlarını “başlık dosyası” olarak isimlendirdiğimiz ve “include” deyimi ile programımızın başına eklediğimiz dosyaların içerisinde saklar. Standart kütüphaneden eklediğimiz “başlık” dosyaları < ile > karakterleri arasına konur. Kullanıcının oluşturduğu “başlık” dosyaları ise " ile " karakterleri arasına yerleştirilir ve uzantısı ".h" dir. Örnek: #include <iostream> #include "bm104.h"

C++ Standart Kütüphanesinin Başlık Dosyaları

C++ Standart Kütüphanesinin Başlık Dosyaları

C++ Standart Kütüphanesinin Başlık Dosyaları

C++ Standart Kütüphanesinin Başlık Dosyaları

Değer ve Referans ile Fonksiyon Çağırma Birçok bilgisayar dilinde argümanlar fonksiyonlara iki şekilde iletilirler. Değer ile (call-by-value) veya Referans ile (call-by-reference). Bir argüman Değer ile bir fonksiyona aktarıldığında argümanın bir kopyası alınır ve fonksiyon içersinde değerlendirilir. Fonksiyon içinde argüman değerine yapılan değişiklikler fonksiyonun çağrıldığı yerdeki değişkeni etkilemez. (ORİJİNAL EVRAKIN FOTOKOPİSİ) Bu sunuda şu ana kadar gördüğümüz örneklerde güvenli olduğu için hep bu yolu kullandık. Ama bazı durumlarda Referans ile fonksiyon çağırmak icap eder. Bu yolla, fonksiyonu çağıran, fonksiyona aktardığı argümanın değiştirilmesine de izin vermiş olur. (ORİJİNAL EVRAK) Bu tür bir fonksiyona en güzel örnek “swap” fonksiyonudur. Referans parametresi ya da argümanı ile ilgilendiğimizi göstermek için “&” karakterini kullanırız.

İKİ DEĞİŞKENİN DEĞERİNİN YER DEĞİŞTİRMESİ (SWAPPING) B Elinizdeki TV kumandası yardımıyla kayıtlı 2 kanalın yerini nasıl değiştirirsiniz? geciciDegisken=A; A=B; B=geciciDegisken; !!! GEÇİCİ BİR DEĞİŞKENE İHTİYAÇ VAR !!!

Değer ile Swap Fonksiyonu (Çalışmaz) #include <iostream> using namespace std; void Swap(int,int);//Fonksiyon Prototipi int main() { int a=2,b=5; cout<<"Swap Fonksiyonu Cagrilmadan Once:\n"; cout<<"a="<<a<<" b="<<b<<endl; Swap(a,b); cout<<"Swap Fonksiyonu Cagrildiktan Sonra:\n"; return 0; } //Fonksiyon Tanımı void Swap(int a, int b) int geciciDegisken=a ; a=b; b=geciciDegisken;

Referans ile Swap Fonksiyonu (Çalışır) #include <iostream> using namespace std; void Swap(int&,int&);//Fonksiyon Prototipi int main() { int a=2,b=5; cout<<"Swap Fonksiyonu Cagrilmadan Once:\n"; cout<<"a="<<a<<" b="<<b<<endl; Swap(a,b); cout<<"Swap Fonksiyonu Cagrildiktan Sonra:\n"; return 0; } //Fonksiyon Tanımı void Swap(int &a, int &b) int geciciDegisken=a ; a=b; b=geciciDegisken;

Soru Fonksiyonlar return komutuyla sadece bir değer geriye çevirirler (döndürürler). Geriye birden fazla değer çevirebilmek (döndürebilmek) için ne yapmamız gerekir? (3 sayının en küçüğünü ve en büyüğünü tek bir fonksiyon içerisinde hesaplayıp geriye döndürmeniz gerektiğini hayal edin.) (void fonksiyonların hangi amaçlarla kullanıldıklarını hatırlayın.)

Fonksiyonların Aşırı Yüklenmesi (Function Overloading) C++ aynı fonksiyon adına sahip birden fazla fonksiyonun kullanımına izin verir. Ancak bu durum sadece aynı adlı fonksiyonların farklı argüman listelerine ya da dönüş değerlerine sahip olması durumunda geçerlidir. C++ derleyicisi aşırı yüklenmiş bir fonksiyon çağrıldığında fonksiyonun kaç argümana sahip olduğuna, argüman veri tiplerine ve argümanların sırasına bakarak uygun fonksiyonu çalıştırır. Fonksiyon aşırı yüklemesi, genellikle, benzer işleri farklı veri tipleri üzerinde yapan aynı ada sahip fonksiyon tanımları için kullanılır. Örnek: int KaresiniAl(int x){return x*x;} double KaresiniAl(double y){return y*y;}

Hata Ayıklama (Debugging) (Ne Umuyordum Ne Buldum?) Yazdığımız programlar ya hiç çalışmayabilir ya da çalışır ama beklediğimiz sonuçları üretmez. ÇALIŞAN AMA BEKLEDİĞİMİZ GİBİ SONUÇLAR ÜRETMEYEN programlarımızdaki MANTIKSAL hataları bulmak için Visual Studio programının DEBUG menüsü seçeneklerinden faydalanırız. Debug Menüsü -> Run To Cursor (Ctrl+F10): İmlecin bulunduğu satırın öncesindeki bütün satırlar Visual Studio tarafından işletilir ve kontrol imlecin olduğu satırda kullanıcıya devredilir. Debug Menüsü -> Step Over (F10): Kontrolü devralan kullanıcı F10 tuşu yardımıyla programın kalan satırlarını manuel olarak işletir. F10 tuşu fonksiyonların içerisine dallanmaz. Debug Menüsü -> Step Into (F11): F11 tuşu yardımıyla fonksiyonların içerisine de girilir. Programlarımızdaki mantıksal hataları tespit edebilmenin bir başka yolu da hatanın kaynaklanabileceğini düşündüğümüz noktanın (noktaların) öncesine veya sonrasına cout deyimleri eklemektir.