Fonksiyonlar.

Slides:



Advertisements
Benzer bir sunumlar
Selçuk Üniversitesi’nin Bilişime Gönül Veren Gençleri
Advertisements

Fonksiyonlar.
EKRAN ÇIKTISI.
Göstericiler (Pointers)
void medyan(int cevap[]) { int j; siralama(cevap);
Bölüm 2 C Dilinin Temelleri
switch - case Yapısı Döngü Yapıları
String Diziler(Katarlar)
Bölüm 4 İşlevlerve Modüler Programlama. 1 / 8 İşlev Tanımı /* İşlev açıklama satırı */ ( ) { }
Değişken Bildirimleri
Soru1: kuvvet(taban,us) Şeklinde bir yinelenen fonksiyon yazın
Bölüm 2 C Dilinin Temelleri Genel Kavramlar
Soru1: Kullanıcıdan iki tam sayı girmesini isteyen ve daha sonra büyük olan sayı ile beraber ‘en büyüktür’ ifadesi yazan, ancak sayılar birbirine eşitse.
Erişim Denetimi, Fonksiyon
Fonksiyonlar.
While Döngüsü Tekrarlama deyimidir. Bir küme ya da deyim while kullanılarak bir çok kez yinelenebilir. Yinelenmesi için koşul sınaması döngüye girilmeden.
METODLAR.
C++ Temelleri C++ genel amaçlı, nesne tabanlı, yüksek seviye programlama dilidir.
C ile Programlamaya Giriş
Paralel Programlamaya Giriş
Metotlar.
FONKSİYONLAR.
METOTLAR.
Diziler Adres Kavramı Nesnelerin Adresleri sizeof Operatörü
Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar
Fonksiyonlar Fonksiyon Tanımı
BPR152 ALGORİTMA VE PROGRAMLAMA - II Öğr. Gör. Bayram AKGÜL
C PROGRAMLAMA FONKSİYONLAR Adres ile Fonksiyon Çağırma Pointer (İşaretçiler) ile Fonksiyon Çağırma Rekürsif Fonksiyonlar.
Bölüm 6 Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 4: Fonksiyonlar
1 Yapılandırılmamış programlama Prosedür/Fonksiyon gerekliliği Prosedural Programlama Fonksiyon Tanımlama/Prototip/Çağırma Örnek fonksiyonlar Fonksiyon.
SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz
SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz
Algoritmalar ve Programlama I Ders 10: ALTPROGRAM KAVRAMI ve FONKSİYON
4. Hafta1 4. HAFTA. 4. Hafta2 Fonksiyonlar  Büyük problemler, küçük parçalara bölünerek kolay çözülür  Yazılımlar benzer modüller içerirler  Hata ayıklama.
Döngü Komutları. for deyimi bir alt limitten, bir üst limite kadar programın belirli bir parçasını tekrar eder. for deyiminde sayaç artış oranı da verilmelidir.
String Diziler(Katarlar)
SAYISAL ANALİZ Doç.Dr. Cüneyt BAYILMIŞ.
BİLGİSAYAR programlama II
1 Değişken alanları Geçici değişkenler Birleşik ifadeler(bloklar) ve değişkenler Değişken Depolama Süresi ve Alanı –Local ve global değişkenler –Static.
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
BİLGİSAYAR PROGRAMLAMA Ders 6: Diziler Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği.
Bölüm 2 C Dilinin Temelleri Genel Kavramlar Yazım ve Noktalama Kuralları C Kütüphaneleri C Dilindeki Sözcükler Değer Sabitleri Veri Tipleri Değişkenler.
Bölüm 4 Seçme Komutları Alıştırmalar
Örnek Sorular Bilgisayar Programlama BIL 107. Soru 1: Ekran çıktısında 66 yazması için boşlukları doldurunuz ______ i = 'A'; printf(____, i__); CEVAP:
C dili kullanıcıya kendi ihtiyacı olan bir fonksiyonu yazma imkanı vermiştir. Bir sayının faktöriyelini almaya ihtiyaç duyduğumuzu ve aynı zamanda asal.
Bölüm 8 Diziler Dizi Tanımı Dizi Elemanlarına Değer Atama Diziler ve Göstergeler 2-Boyutlu Diziler.
Programlamaya Giriş-I Bölüm-1. Algoritma Algoritma günlük yaşamımızda yaptığımız işler sırasında sıklıkla kullandığımız bir yöntemdir. Algoritma, bir.
Bilgisayar Programlama BIL 107
Fonksiyonlar ve Diziler
Bölüm 6 Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar
BİLGİSAYAR PROGRAMLAMA Ders 6: Diziler
C Programlama Dili Bilgisayar Mühendisliği.
C’de Fonsiyonlar Aslı Ergün.
BİLGİSAYAR PROGRAMLAMA Ders 6: Diziler
Bölüm 7 Fonksiyonlar GÖSTERGELER Gösterge Tanımı
BİLGİSAYAR PROGRAMLAMA Ders 8: Fonksiyonlar
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 5: Fonksiyonlar
Bölüm 8 Diziler Dizi Tanımı Dizi Elemanlarına Değer Atama
FONKSİYONLAR Programlamada fonksiyon kullanmanın en önemli sebebi kodların tekrar edilmesini engellemektir. Örneğin; karekök yada üsalma işlemi yapan bir.
Bölüm 2 C Dilinin Temelleri
Bölüm 8 Diziler Dizi Tanımı Dizi Elemanlarına Değer Atama
Bölüm 6: Kullanıcı Tanımlı Fonksiyonlar I
NİŞANTAŞI ÜNİVERSİTESİ
Bölüm 2 C Dilinin Temelleri
C ile Programlamaya Giriş
MTM216 GÖRSEL PROGRAMLAMA
NİŞANTAŞI ÜNİVERSİTESİ
Diziler(Arrays).
Sunum transkripti:

Fonksiyonlar

Fonksiyon nedir? Fonksiyon, belirli sayıda verileri kullanarak bunları işleyen ve bir sonuç üreten komut grubudur. Her fonksiyonun bir adı ve fonksiyona gelen değerleri gösteren değişkenleri (argümanları) vardır. Genel olarak bir fonksiyonun görevi aşağıdaki şekilde gösterilmiştir.

Fonksiyon tanımlama Fonksiyonların girdilerine parametreler yada argumanlar denir. Bir fonksiyon bu parametreleri alıp bir işleme tabi tutar ve bir değer hesaplar. Bu değer, çıktı veya geri dönüş değeri (return value) olarak adlandırılır. Bir fonksiyonun kaç girişi olursa olsun sadece bir çıkışı vardır. C dilinde hazırlanan bir fonksiyonun genel yapısı şöyledir: DönüşTipi FonksiyonAdı(argüman listesi) argümanların tip bildirimleri { Yerel değişkenlerin bildirimi ... fonksiyon içindeki deyimler veya diğer fonksiyonlar ... return geri dönüş değeri; }

Fonksiyon Tanımlama-2 Dönüş_tipi: fonksiyon tarafından döndürülen değerin tipini belirtir. Bu, int, double gibi bir aritmetik tip veya gösterge olabilir. Dönüş_tipi olarak void anahtar sözcüğü kullanıldığında, fonksiyondan hiçbir değer döndürülmeyeceği belirtilmiş olur. void fonksiyonlar FORTRAN’daki SUBROUTINE’ler veya Pascal’daki procedure’ların karşılığıdır. Fonksiyon_adı: bir tanıtıcı sözcüktür. Argüman Listesi: virgülle ayrılmış ve önüne tipleri yazılmış biçimsel argüman veya parametre isimleri listesidir. Diğer bir fonksiyon tarafından çağrıldığında bu fonksiyona geçirilecek olan argümanların sayısını, sırasını ve tipini belirtir. Aynı zamanda, parametrelere, sadece fonksiyonun gövdesini oluşturan blok’un içinde anlamlı olan, isimler verir. Hiç parametresi olmayan bir fonksiyon da olabilir. Bu durum, parantezler içine void yazılarak açıkça gösterilir. Return: Kontrolün çağırana geri dönmesini sağlar. return deyiminden sonra gelen deyimler yerine getirilmez ve fonksiyon hemen çağrıldığı yere “geri döner”.

int topla( int x, y ) şeklindeki yazım hata verir. Tanımlama Örneği Örneğin iki sayının toplamını hesaplayacak bir fonksiyon şöyle tanımlanabilir: /* 1. yöntem*/ int topla(x,y) int x,y { int sonuc; sonuc = x + y; return sonuc; } /* 2. yöntem*/ int topla(int x,int y) { int sonuc; sonuc = x + y; return sonuc; } /* 3.yöntem*/ int topla(int x,int y) { return (x+y); } int topla( int x, y ) şeklindeki yazım hata verir.

Fonksiyon Çağrılması Bir fonksiyonu ana programdan çağırmak için genellikle bir değişkene değer döndürme şeklinde yapılır.Örneğin öndeki slaytta yer alan fonksiyonu ana programdan çağırmak için şöyle bir tanımlama yapılabilir. toplam=topla(5,4) Bu işlem satırında fonksiyona 5 ve 4 değerleri gönderiliyor. Geri dönen sonuç ise toplam değişkenine aktarılıyor.

Fonksiyon Çağırma şekli

Fonksiyon bildirimi int topla(int, int); şeklinde de yazılabilir. Bir fonksiyonun bildirimi iki türlü yapılır: Ana programdan önce: ... int topla(int x,int y) /* fonksiyon */ { ... } main() Ana programdan sonra: Bu durumda fonksiyon prototipi ana programdan önce bildirilmelidir. .. int topla(int x, int y); /* fonksiyon örneği ... main() int topla(int x, int y) /* fonksiyon */ int topla(int, int); şeklinde de yazılabilir.

Örnek: 2 sayının toplanıp ekrana yazdırılması işleminin fonksiyon yardımıyla yapılması. #include <stdio.h> int topla(int, int); /*** fonksiyon prototipi ***/ main(){ int toplam,a,b; printf("Iki sayi girin : "); scanf("%d %d",&a,&b); /* fonksiyon çağırılıp, a ve b değerleri parametre olarak aktarılıyor.*/ toplam = topla(a,b); printf("%d ve %d nin toplami %d dir.\n", a,b,toplam); getchar(); } /*** fonksiyon tanımlanması ***/ /* Bu fonksiyon iki tamsayıyı toplar */ int topla( int x, int y ){ int sonuc; sonuc = x + y; return sonuc; Programda, klavyeden okunan a ve b değişkenleri fonksiyonuna parametre olarak aktarılmıştır. Bu değişkenlerin isimleri ile topla fonksiyonunda kullanılan değişkenlerin (x ve y) isimleri aynı olması zorunlu değildir. Burada a ve b değişkenleri sırasıyla x ve y değişkenleri yerine konmuştur.

Faktöriyeli fonksiyonda hesaplayan program. #include <stdio.h> int fakt (int n) { int i = 1,top=1; while (i<=n) top *= i; i++; } return top; main(){ int sayi = 4; printf("%d! = %d\n", sayi, fakt(sayi)); getchar(); Fonksiyon aşağıdaki şekilde de yazılabilir. int fakt (int n) { int i = n; while (--n) i *= n; return i; }

Dizinin Fonksiyona Gönderilmesi Fonsiyonun bildirimi int fonk(int a[5]) //yada int fonk(int a[]) { işlemler} Dizinin gönderilmesi int dizi[5] fonk(dizi)

5 elemanlı bir dizinin elamanlarının toplamını fonksiyon yardımıyla hesaplayan program Eğer dizinin boyutu fonksiyona gönderilmeyip, fonksiyonda boyutu hesaplanırsa kod aşağıdaki gibi yazılır. #include <stdio.h> int topla (int sayi[]) { int toplam=0,i; for(i=0;i<=sizeof(sayi);i++) toplam+=sayi[i]; return toplam; } main(){ int sayi[5] = {4,3,2,5,6}; printf("%d", topla(sayi)); getchar(); #include <stdio.h> int topla (int sayi[],int eleman_sayi) { int toplam=0,i; for(i=0;i<5;i++) toplam+=sayi[i]; return toplam; } main(){ int sayi[5] = {4,3,2,5,6}; int eleman_sayi=5; printf("%d", topla(sayi,eleman_sayi)); getchar();

Özyinemeli(Recursive) Fonksiyonlar Fonksiyonlar tekrarlama yapılarına göre temel olarak iki türlü düşünülebilir. Buna göre bir fonksiyonun içinde yine kendisinden bir parça bulunuyorsa bu fonksiyonlara özyinelemei (recursive) fonksiyon denilirken, fonksiyonun kendisini tekrar etmemesi durumunda döngülü (iterative) fonksiyon ismi verilir. Teorik olarak bütün döngülü (iterative) fonksiyonlar özyinelemeli (recursive) fonksiyon olarak yazılabilir (tersi de doğrudur). En basit açıklama yöntemi olarak faktoriyel hesaplama fonksiyonu gösterilebilir. faktoriyel() { x=0 ise sonuç sıfırdır x=1 ise sonuç birdir x=n için ise sonuç n çarpı fonksiyon(n-1) dir. } Bu örnekteki gibi girilen değer sıfır yada bir olmadığı sürece fonksiyon sıfır yada bir ile karşılaşana kadar düzenli olarak n sayısından bir çıkartarak kendisini çağırmaktadır.

Klavyeden girilen sayıya kadar olan sayıları recursive fonksiyon yardımıyla toplayan program #include<stdio.h> #include<conio.h> int topla(int a){ if(a==1) return 1; return a+ topla(a-1); } main() { int sayi; printf("sayı giriniz"); scanf("%d",&sayi); printf("sayıların toplamı:%d",topla(sayi)); getchar(); getchar();

Bir sayının faktöriyelini recursive fonksiyon ile bulan program int fakt(int n) { if (n==0) return 1 ; return n*fakt(n-1); } main(){ int sayi=4; printf("%d", fakt(sayi)); getchar();

Örnek:Kendini çağıran fonksiyon kullanarak, kullanıcıdan alınan bir sayı kadar tek sayıların toplamını bulan program. Örneğin; kullanıcı 4 girerse; 1 3 5 7 nin toplamını bulup ekrana yazıyor. #include<stdio.h> #include<conio.h> int topla(int n) { return ((n==1) ? 1 : (2*n-1)+topla(n-1)); } main() { int sayi; printf("sayı giriniz"); scanf("%d",&sayi); printf("Tek sayıların toplamı:%d",topla(sayi)); getchar(); getchar(); }

Klavyeden girilen bir metin içerisindeki büyük harfleri recursive fonksiyon ile yazan program #include<stdio.h> #include<conio.h> #include<string.h> recursive (char*,int,int); main() { char dizi[40],*ptr; int i,adet,x; ptr=dizi; printf("\n Bir Karakter Katari Giriniz \n\n "); gets(ptr); adet=strlen(ptr); x=0; printf("\n\n Girilen Metindeki Buyuk Harfler ==> "); recursive(ptr,adet,x); getch(); } recursive(char *ptr_1,int adet1,int i ) { if(adet1==0) return 1; if(isupper(ptr_1[i])) printf("%c",ptr_1[i]); recursive(ptr_1,adet1-1,i+1); }

Çalışma Soruları 1. Kendisine argüman olarak verilen bir tamsayıyı tersine çevirip, sonucu döndürecek bir fonksiyon yazınız. 2. En ve boy parametrelerine göre, '*' simgeleriyle dikdörtgen çizen bir fonksiyon yazınız. 3. N1 –N2 e kadar olan sayılardan 3 e bölünemeyenleri bulup ekrana yazdırınız. (fonksiyon kullanınız)  4. Kendisine verilen iki sayının OKEK (Ortak Katların En Küçüğü) değerini hesaplayıp, geriye döndüren fonksiyonu yazınız.