PROGRAMLAMA I 11. Hafta Özet 1. If – Else Yapısı İf(koşul) { İşlem1; } Else { İşlem2; } İf yapısı eğer anlamına gelmektedir. Programlama içerisinde en çok kullanılan fonksiyondur. Yukarıda verilen akış şemasına ait komut satırı bulunmaktadır. else komutu ise değil anlamındadır. Yani akış şemasında bulunan koşul kara verme şeklinde program akışına soru sorulacaktır. Sorulan sorudan alınan cevaba istinaden işlem1 veya işlem2 tanımlı işlem şekline gider ve program bu şekilde devam eder. Bu konuyu bir örnek ile daha iyi anlayabiliriz. #include<stdio.h> #include<conio.h> int main( void ) { int a; int b; if(a<=b) { printf("a sayisi b den kucuk veya esittir: %d",a); } else { printf("b sayisi a dan kucuktur: %d",b); } getch(); return 0; } 1 #include<stdio.h> #include<conio.h> int main( void ) { int girilen_yas; printf("lutfen yasinizi giriniz> "); scanf("%d",&girilen_yas); if( girilen_yas < 18 ) printf("daha cocuk yasdasin. hayatin basindasin.\n"); else if( girilen_yas >= 18 && girilen_yas <= 30 ) printf("gencligin guzelligi bambaska\n"); else if( girilen_yas > 30 && girilen_yas <= 50 ) printf("hepsini bosverin olgunluk iyidir.\n"); else printf("HATA: Girilen yas uygun degildir!\n"); getch(); return 0; } 2. Switch Yapısı Bir önceki konuda işlenen if – else yapısı birden fazla durum oluşturduğunda takip edilmesi zorlaşmaktadır. Switch yapısı ile bu durum daha kolay olarak yapılmaktadır. Sınırsız sayıda çalışma durumu gerçekleştirebilir. switch sözcüğünden hemen sonra gelen ifade parantez içinde yer almalı ve bir tamsayı ifade olmalıdır. PROGRAMLAMA I 12. Hafta Özet 1. For Yapısı Bir veya birden fazla deyimi istenildiği kadar tekrarlamak için kullanılan bir döngü yapısıdır. For(baslangic_ifadesi; denetim_ifadesi; değişim_ifadesi) { Deyim1;deyim2;deyim3;deyim n; } Bu ifade başlangıç ifadesine sahip sayaç, her adımda değişim oluşturmaktadır. Bu değer artı veya eksi yönde oluşmaktadır. Bu değer ilk belirlenen değere ulaşıncaya kadar sayma işlemi sağlar. Başlangic_ifadesi : for döngüsü sayacının başlangıç değerini ifade eder. Sayma işlemine başlanılması gereken kısmı belirtir. - İ = 0; - İ = 1; - Sayac=x; - İlk_sayac=5; Denetim İfadesi : sayacın nereye yada ne aşamaya kadar ilerleyeceğini ifade eder. - x<10; - x>20; - i>x; - i!=sayı miktari; Değişim ifadesi : başlangıçtan bitişe kadar geçen süreyi hangi adımda yapması gerektiğini belirler. - İ++; - İ=i+1; - İ--; - İ=i-1; - Sayac=sayaç*2; 2 2. While Yapısı For döngüsü ile aynı amaç için kullanılır. Daha esnektir. While komutunun en büyük özelliklerinden biri ise daha çeşitli yöntemlerde kullanılabilmesidir. While komutu şartlı çalışma yapan bir komuttur. Örneğin bir işlemin yerine geçmesi için başka bir değişken şartı olmadan işlem yapmaması gerekiyorsa burada while komutu uygulanır. Bu duruma komutsal örnek aşağıdaki gibidir. #include<stdio.h> #include<conio.h> int main() { int i = 0; while (i<100) { printf("sayi %d’dir\n",i,i); i++; } getch(); return 0; } Bu program 100 ‘ e gelene kadar sayan program dilidir. Ekranda son sayı değeri 99 olmaktadır. Fakat dikkat edilmesi gereken durum şudur; Değer 0’dan başlayarak 99 a kadar gelir ve toplamda 100 sayı sayar. 3. Do-While Yapısı Normal bir while döngüsünden farklı olarak kullanıcının gireceği seçenek kontrol ettirilmeden döngü bir kez mutlaka çalışır. Genel yapısı ile döngüyü yandaki akış şemasında görebiliriz. Bu konuyu daha iyi anlamak için bir örnek program aşağıda hazırlanmıştır. Örnek: Kullanıcıdan iki sayı alınsın. Bu iki sayı toplandıktan sonra, sonucu ekrana yazdırılsın. Yazdırma sonunda "Devam etmek istiyor musunuz?" sorusu sorulsun ve klavyeden 'E' veya 'e' karakterlerinden birisi girilirse, program devam etsin. Yok, farklı bir şey girilirse, program sonlandırılsın. C++ Kodu: #include<stdio.h> int main( void ) { int sayi_1, sayi_2; char devam_mi; do { printf("Birinci sayıyı giriniz> "); scanf("%d",&sayi_1); printf("İkinci sayıyı giriniz> "); scanf("%d",&sayi_2); printf("%d + %d = %d\n", sayi_1, sayi_2, sayi_1 + sayi_2); printf("Devam etmek ister misiniz? "); //C'de tek karakter okuma işlemi biraz sıkıntılı //olduğundan, burada da bir do while kullandık. do { scanf("%c",&devam_mi); }while( devam_mi == '\n' ); printf("\n"); } while( devam_mi == 'E' || devam_mi == 'e' ); return 0; } 3 4. İç içe Döngü Yapıları İç içe döngülerin gerekli olabileceği noktalardan bazıları şu şekilde ifade edilebilir. Matriste her satır ve sütun için işlem yaptığımız için iç içe döngü kullanılır. 20 kişinin bulunduğu sınıfta herkesin ayrı ayrı notlarının hesaplanıp ortalamasının alınması zordur. Her öğrenciye hitap edebilecek bir yapıda olması gerekir. Sonsuz ifadelerin bulunduğu bir işlemde sadece tek bir döngü ile sonsuz kadar işlem satırı yapmak gerekir. Döngüler kendi içinde dönmesi daha sağlıklıdır. #include <stdio.h> #include <conio.h> int main() { int i,j; for (j=1; i<6 ; i++) //1 { //2 for (i=1; j<6; j++) //3 { //4 printf("%d * %d = %d\n", i,j,i*j); } //6 printf("\n"); //7 } //8 //5 getch(); return 0 ; } Bu komutu aslında günlük hayatta kullandığımız ifadelere çevirerek örneklendirebiliriz. Mesela bir koşucunun dairesel pistte toplamda 5 tur atması gerekiyor(i). Bu pist 500 metre olsun. Koşucu her 100 metrede koyulan sensörler ile oradan geçtiği denetleniyor(j). Koşucu 5 tur attıktan sonra koşusunu bitiriyor. Bu örnekte koşulması gereken pisti 5 turla tamamlaması gerekiyor. Bu beş turu ise 5 sensörden geçerek tamamlaması gerekiyor. Bu örnekte uygulanan kodlara eşdeğer olarak bir kod yaparak istenilen değerleri ekranda görebiliriz. Değişen tek parametre i*j yerine istenilen işlem değerini girebiliriz. Bu işlemleri yaparken birçok hata ile karşılaşabiliriz. Bu hatalara örnek olarak aşağıda sıralanmaktadır. Sayaç başlangıç parametresini girmemek Döngülerin, sırasını ve işlevini tam oluşturamamak. Döngülerin değerlerini içtekine/dıştakine atamak. Döngüleri ayıran } parantezlerin sırasını değiştirmek. 4
© Copyright 2024 Paperzz