Algoritma Bir problemin çözümü için bir adım adım yaklaşımdır.

Slides:



Advertisements
Benzer bir sunumlar
Bölüm 3 – Yapısal Programlama
Advertisements

Yapısal Program Geliştirme – if, if-else
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Prof. Dr. Ahmet Arıkan Gazi Ü niversitesi Gazi Eğitim Fakültesi OFMAE Bölümü Matematik Eğitimi Anabilim Dalı.
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.
BİLGİSAYAR PROGRAMLAMA Ders 11: İşaretçi (Pointer) Kullanımı Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği.
AKIL (ZİHİN) HARİTASI.
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.
GEOMETRİK CİSİMLER VE HACİM ÖLÇÜLERİ
ÖTÖ 451 Okul Yönetiminde Bilgisayar Uygulamaları R. Orçun Madran.
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
6. HAFTA Mart Mantıksal Operatörler & Ve | Veya ~ Değil / Bölme.
Bölüm 2 C Dilinin Temelleri
BİLGİSAYAR PROGRAMLAMA DERSİ
C Programlama Dili Çağdaş Hakan Aladağ.
Algoritma ve Programlamaya Giriş
BM-103 Programlamaya Giriş Güz 2016 (3. Sunu)
Sıklık Dağılımları Yrd. Doç. Dr. Emine Cabı.
PROGRAMLAMAYA GİRİŞ VE ALGORİTMA
Problem Çözme ve Algoritmalar
APARTMANLAR OYUNU NEDİR?
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ı
İleri Algoritma Analizi
Algoritma ve Programlamaya Giriş
NBP103 Programlama Temelleri Öğr. Gör. Mahmut Kılıçaslan
DOSYA BÜYÜKLÜKLERİ İkili Sistem Dosya Büyüklükleri ve Hesaplamalar
PSİKOLOJİK DANIŞMA İLE İLGİLİ ÖNYARGILAR
PROBLEM ÇÖZME VE ALGORİTMALAR
Bilgisayar Mühendisliğine Giriş
PARAMETRİK HİPOTEZ TESTLERİ
Bölüm 7 İfadeler ve atamalar.
BİLGİSAYAR programlama II
İfadeler ve Aritmetik İşlemler
NİŞANTAŞI ÜNİVERSİTESİ
Arduino Programlama Dili
Bölüm 4: Kontrol Yapıları I (Seçim Yapma)
Geçerlik ve Kullanışlılık
Doğrusal Mantık Yapısı İle Problem Çözme
PROGRAMLAMAYA GİRİŞ VE ALGORİTMA
ÖLÇME-DEĞERLENDİRME 1.DERS
Bilgisayar Bilimi Koşullu Durumlar.
LOJİK KAPILAR (GATES) ‘Değil’ veya ‘Tümleme’ Kapısı (NOT Gate)
Karar Yapıları İle Problem Çözme
Bilgisayar II 8 Mart Mart
Yüzde Problemleri Ve Çözümleri
Bölüm 4 Seçme Komutları Koşul İfadesi if Komutu Bileşik Komut
?: KARŞILAŞTIRMA OPERATÖRÜ
NİŞANTAŞI ÜNİVERSİTESİ
Fonksiyonlar ve Alt Programlar
6. DÖNGÜ (TEKRARLAMA) DEYİMLERİ
Değerler ve Değişkenler
NİŞANTAŞI ÜNİVERSİTESİ
DİL GELİŞİMİ KURAMLARI - II
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
Bilgisayar Bilimi Programlama Yapısı.
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
Örnek Bir C Programı C ilk bakışta ilginç görünebilen bir işaret ve rakamlarla gösterme usulü kullanır. Örnek bir programa bakalım.
BLM-111 PROGRAMLAMA DİLLERİ I Ders-10 Diziler
NİŞANTAŞI ÜNİVERSİTESİ
Tanımlar Sonlu Özdevinirlerle Eşdeğerlik
MTM216 GÖRSEL PROGRAMLAMA
Kesikli Olay benzetimi Bileşenleri
Bölüm 4 Seçme Komutları Koşul İfadesi if Komutu Bileşik Komut
NİŞANTAŞI ÜNİVERSİTESİ
KİMYA DERSİNİ SEVMENİN YOLU
Sunum transkripti:

Algoritma Bir problemin çözümü için bir adım adım yaklaşımdır. Doğru olarak tasarlanmış bir algoritma şu ikisini içerir: yürütülecek etkinlik, ve bu etkinliklerin hangi sırada yürütüleceği

Yalnızca etkinlik deyimleri kullanılır Sözde program Programcılara algoritmalar geliştirmede yardım eden yapay ve gayrı resmi bir dil. Yalnızca etkinlik deyimleri kullanılır Örneğin, bildirimleri veya #include’ları sözde programa koymazsınız Bir sözde programı C’ ye çevirmek kolaydır.

Kontrol Yapıları Bir programın akışını kontrol eder Normal olarak, C’de, deyimler ardışık sırada yürütülür Kontrol yapıları programcının bir deyimi bir sonra yürütülecek deyim olarak belirleyebilmesine izin verir. ör: programcı neyin hangi sırada yürütülebileceğini kontrol edebilir.

goto’ dan uzak durun goto deyimleri, programın daha önceden belirlenmiş ve o anda bulunulan deyimden önce veya sonra gelen bir satıra atlamasına izin verir Eski programlar goto’ları yaygın olarak kullanırdı, bu hatalı ve takip etmesi aşırı derecede zor olmasıyla sonuçlanır. goto’yu asla kullanmamalısınız. Gerçekten, bu goto hakkındaki yapacağımız son konuşmadır.

Üç Temel Kontrol Yapısı Bütün programlar yalnızca bu üç tip yapısıyla yazılabilirler. ardışık yapı ör: birinin ardından başka biri seçim yapısı tekrarlı yapı ör: bazı etkinliklerin tekrar edilmesi

if yapısı (tekrar inceleme) Eğer bazı koşullar doğruysa bunu yap Örnek: if ( x == y ) { printf(“ x is equal to y!\n“ ) ; } Her programlama dilinin farklı bir if yapısı vardır.

Bir başka if örneği if ( grade >= 60 ) { printf( “You passed!\n” ); }

Bir değişiklik ile if: if else Temel olarak: eğer bir durum doğruysa bunu yap aksi halde başka bir şey yap Örnek: if ( grade >= 60 ) printf( “You passed!\n” ); else printf( “You failed!\n” );

“Akış Diyagramı” Nedir? bir programın akışını anlayabilmenize yardım eden görsel bir araçtır Akış diyagramını su boruları olarak düşünebilirsiniz: En tepede suyu dökersiniz Su borular boyunca dökülür ve aşağı doğru çekilir.

Akış Diyagramı Temelleri B aklava biçimi (karar sembolü) koşulları içerir Dikdörtgenler çalışma deyimlerini temsil eder. Örneğin: printf() akış hattı

Akış Diyagramı Temelleri 2 Bağlantı sembolü grade >=60 not >=60 doğru print “passed” yanlış

if/else Akış Diyagramı     yanlış grade >=60 doğru Print “You failed” Print “You passed”  

ve bir sağ ( } )kırlangıç parantez ile biterler. Bloklar Bir sol kırlangıç parantez ile ( { ) başlarlar { - - } ve bir sağ ( } )kırlangıç parantez ile biterler. Değişkenleri bir sol parantezden hemen sonra bildirebilirsiniz (yürütülebilir deyimlerden önce geldiği sürece). Değişkenler yalnızca o kod bloğunda erişilebilir olacaktır.

Bloklar, devam Hatırlayın, bir if yalnızca bir deyime bakar. Bunun yerine if’e bağlı olarak birden fazla deyimi almak için kod bloğu kullanmanız gerekir. Örneğin: if ( grade >= 60 ) { printf ( "You passed!!!\n“ ); printf ( "Congratulations!\n“ ); }

Kod bloğu içerisindeki herşey içerden başlamalıdır İçerlek yazma Kod bloğu içerisindeki herşey içerden başlamalıdır Hızlı bir göz gezdirmede blokları görmenize yardım eder Şu şekilde kod yazmaktan kaçının: if (grade >= 60) { printf ("You passed!!!\n"); printf ("Congratulations!\n"); } Bu geçerli bir C kodudur, fakat bloğun görülmesi kolay değil: kötü stil

Örnek printf ( "You passed!!! \n“ ); printf ( "Congratulations!\n“ ); /* If/Else Deyimlerine Giriş */ #include <stdio.h> int main () { int grade; /* variable to hold user input */ /* kulanıcı girişini tutacak değişken */ printf ( "Enter your course grade: “ ); scanf ( "%d", &grade ); if ( grade >= 60 ) printf ( "You passed!!! \n“ ); printf ( "Congratulations!\n“ ); } else printf ("You failed!\n"); } /* end main program */ /* ana programı bitir*/ Note the indentation İçerlek yazmaya dikkat edin

İlişkisel İşleçler (tekrar inceleme) farklı != eşittir == Küçük eşit <= Büyük eşit >= Küçüktür < Büyüktür > Anlamı Operator (İşleç)

Eşitlik Testi Eşitlik için test, = = operatörünü kullanın if ( grade == 100 ) { printf ( “Perfect Score!” ) ; } Farklılık testi, ! = operatörünü kullanın if (grade != 100) printf (“You messed something up”);

Atamalar yoluyla eşitlik (yeniden inceleme) Hatırlayın Gets (almak) eşitlik değildir. if ( grade = 100 ) printf( “Perfect Score!” ); Bu durumda, tek bir = karakteri kullanıyoruz. (Gerçekte = = ‘ i kullanmak istiyoruz) Tam olarak ne yazacak? Notun DOĞRU veya YANLIŞ olmasına bağlı

C’ de (yaşamdan farklı olarak) doğru çok basittir. Doğruları Anlamak C’ de (yaşamdan farklı olarak) doğru çok basittir. 0 Yanlıştır. Bunun dışındaki her şey doğrudur. Örneğin: -1 doğrudur 299 doğrudur 0 yanlıştır.

Doğruluk Örneği /* Doğruyu Anlama */ #include <stdio.h> int main() { int x = -100; int y = 299; int z = 0; if ( x ) printf ("x: %d\n", x); if ( y ) printf ("y: %d\n", y); if ( z ) printf ("z: %d\n", z); } Bu tamamen geçerli bir programdır. Çıktı: x: -100 y: 299 Dikkat: z yazdırılmadı çünkü if şartı sağlanmadı.

Atamalar Yoluyla Eşitlik Verilen: if (grade = 100) printf (“Perfect Score!”); Bu deyim şunu yapar. Grade’ e (not’ a) 100 değeri atandı. 100 doğru olduğundan (sıfır değil) şart her zaman doğrudur. Öğrenci notu ne olursa olsun her zaman “Perfect Score’” diyecektir.

içiçe if deyimleri Bir if/else yapısı içinde bir başka if-else yapısı içeriyorsa buna içiçe if-else denir. if (grade > 60) if (grade > 70) printf(“You passed”); else printf(“You passed but need a tutor”); printf(“You failed”);

else if if (grade > 70) printf(“You passed”); Genellikle else deyimi içinde içiçe yapı kullanmayı deneyin. İçerlek yazmaya dikkat edin. if (grade > 70) printf(“You passed”); else if (grade > 60) printf(“You passed but need a tutor”); else printf(“You failed”);

&& - Mantıksal VE if ((total > 50) && (status == 0)) printf(“Your shipping will be free\n”); Ve işlecini (&&) kullanırken, bileşik ifadenin doğru olması için her iki ifadenin de doğru olması gerekir. doğruluk tablosu

|| - Mantıksal VEYA if ((total > 50) || (status == 0)) printf(“Your shipping will be free\n”); Veya işlecini (||) kullanırken, bileşik ifadenin doğru olması için en azından bir ifade doğru olmalıdır. doğruluk tablosu

daha fazla && ve || hakkında İçiçe yapıyı indirgemek için kullanılabilir && daha yüksek önceliğe sahiptir. Doğruluk veya yanlışlık bir kez tespit edildikten sonra değerlendirme durur - aşağıdaki örnekte, eğer semesterAverage (sömestr Ortalaması) > 90 olursa finalExam (final sınavı) yapılmayacak if ((semesterAverage > 90)||(finalExam > 90)) printf(“Student gets an A\n”);

mantıksal tersleme ! if !(grade == goal) printf(“You missed your goal\n”); ! Yüksek önceliğe sahiptir bu yüzden parantez kullanmalısınız Pek çok durumda, uygun ilişkisel işleçlerle koşulu daha farklı ifade ederek mantıksal terslemeden kaçınabiliriz. Not: bu bir birli işleçtir.

#define #define önişlemci direktifi sembolik sabitler oluşturur (daha sonra anlatacağımız farklı bir kullanımı da vardır) #define PI 3.14159 Sembolik sabit PI ile ilgili tüm altdizisel olaylar kod içinde sayısal sabit 3.14159 ile yer değiştirecektir.

Kod içinde “sihirli sayılar” kullanmaktan kaçının #define (geri sayım) Kod içinde “sihirli sayılar” kullanmaktan kaçının Değişkenlerden farklı olarak, bir sembolik sabitin değerini değiştirmemelisiniz Değişken bildirimlerinizden önce kullanılmalıdır TÜMÜ BÜYÜK KARAKTER olmalıdır, Macar işaret ve sembollerle gösterme kullanıyorsanız istisna e.g. #define iMY_CONSTANT 3600

Sihirli sayılardan kaçının! Sihirli sayılar kodlarınız boyunca kullandığınız aktif sayılardır ör: 10000’ e böleniniz Eğer bunları değiştirme ihtiyacı duyarsanız, en kötüsü bütün olayları bulmanız zaman alır, en kötüsü birkaç tanesini kaçırabilirsiniz Eğer #define kullanırsanız, yalnızca kodların en başındaki değeri bir kez değiştirmeniz gerekir E.g #define f_ACCEPTABLE_THRESHOLD .00001