Transcript Document
PROGRAMLAMAYA GİRİŞ (ALGORİTMA ve AKIŞ ŞEMASI) Programlama Aşamaları Problemi Çözüm Yolunun Belirlenmesi Algoritmanın Hazırlanması Akış Şemasının Oluşturulması Yapılan İşlerin doğruluğunun test edilmesi Programın Kodlanmak, Derlenmesi ve Çalıştırılması Programın Test Edilmesi ve Uygulanması Bu dersin kapsamında hedefimiz yukarıda verilen programlama aşamalarından ilk dördünü öğrenmenizi sağlamaktır. Programlama mantığını anlamak ve buna uygun algoritmanın oluşturulması aşamaları yeni başlayanların zorlandıkları konulardır. Ancak bir kere bu süreç tamamlandığında ve gerekli birikim edinildiğinde artık programcılık sadece ihtiyaca uygun programlama dilini öğrenmekten ibaret olacaktır. PROGRAMLAMA Bir problemi bilgisayar aracılığı ile çözmek için izlenilmesi gereken yolların bütünüdür. Problemin Analizi ve Çözme Yolunun Belirlenmesi • Problemi önce dikkatlice okuyunuz ne olduğunu anlamaya çalışınız. • Verilen bilgileri ve istenilenleri birer başlık altında toplayınız. • Bunlar arasında nasıl bir ilişki var belirleyiniz. • Bu konuda eksik bilgiye sahip iseniz önce eksikliklerinizi gideriniz. • Problemin çözüm yolunu belirleyiniz. ALGORİTMA Buradaki bütün mesele bilgisayara bir işi yaptırmak veya bir problemi çözdürmek için nasıl bir yol izlenmesi gerektiğinin mantığını kavramaktır. Bunun için de ilk akılda tutulması gereken bilgi, bilgisayarın belirtilmemiş veya tarif edilmemiş hiçbir şeyi yapamayacağıdır. Bilgisayarın insandaki gibi bir beyni yoktur. Bu nedenle bilgiyi derlemek, onu sınıflandırmak, ya da muhakeme etmek, yorum yapabilmek gibi becerileri de yoktur. Bir insanın çok basit bir şekilde yapabildiği bir işlemi, bilgisayara yaptırabilmek için bütün aşamalar tarif edilmelidir. Algoritma oluşturmanın da zorluğu buradan gelir. Sanılır ki bilgisayar bir insan gibi düşünebilir veya sözle söylenen bir işlemi yapabilir. Basit bir örnek: 1000/10=? Siz Yapsaydınız Bir parça matematik biliyorsanız bölme işlemi yapmadan bir çırpıda sonucun 100 olduğunu söylerdiniz. Burada yapılan işlem sayıdan bir sıfırı atmaktan ibarettir.. Bilgisayara Yaptırılsaydı 1. Bölünen ve bölen sayıları tanıtılmalı. 2. Sayı bilgileri okutulmalı. 3. Bölme işlemi yaptırılmalı ve sonuç bir değişkene aktarılmalı. 4. Bölüm sonucu yazdırılmalı. Görüldüğü gibi çok basit bir işlemi yaptırabilmek için bile birçok ayrıntıya dikkat etmek durumunda kalınmıştır. Gerek görme becerisin gerekse düşünme yeteneğine sahip olmamız ve edindiğimiz deneyimler ile farkında bile olmadan sonuca ulaşabildiğimiz bir problemi bilgisayara çözdürebilmek için çok değişik bir bakış açısına sahip olmalıyız. Pekiyi bu bakış açısı nedir??? Yaptırılmak istenen işlem ile ilgili her bir süreç adım adım hiç biri gözden kaçırılmadan ayrıntılara da dikkat edilerek açıkça belirtilmelidir. HERŞEY AYRINTILARDA GİZLİDİR. BASİT DİYEREK HİÇBİR AYRINTI GÖZDEN KAÇIRILMAMALIDIR. Algoritma oluşturmanın zorluğu da buradan gelir, ancak bir kere mantığı kavranırsa programcı olmak yolunda çoook büyük bir adım atılmış olur. Algoritma: Bilgisayara bir işlemi yaptırmak için izlenmesi gereken tüm aşamaların uygun bir sırada adım adım ifade etme sürecidir. ALGORİTMANIN HAZIRLANMASI 1. Veriler bilgisayar ortamına nasıl aktarılacak? Klavye aracılığı ile ekrana mı? Bir Dosyadan mı? 2. Problemi çözmek için nasıl bir yol izlenecek? Hangi ilişkiler kurulacak, ne tür işlemler yapılacak? 3. Problem çözümünde hangi basamaklar kullanılacak? İzlenecek çözüm yönteminde işlem sırası nasıl olacak? Nelere dikkat edilecek? 4. Tüm ayrıntılar açıkça belirtilmiş mi? Gözden kaçan herhangi bir şey kaldı mı? 5. Sonuç nasıl ve nereye yazılacak? Doğrudan ekrana mı? Bir dosyaya mı? Örnek 1: Klavyeden girilen A ve B olarak tanımlana iki sayının toplamını bulan ve sonucu ekrana yazan bir programın algoritmasını oluşturunuz. Verilenler: A ve B olarak tanımlanan iki sayı. Veriler klavyeden girilecek. İstenenler: A ve B nin toplamı. Toplama sonucunu tutan değişken TOP olsun. Sonuç ekrana yazılacak. 1.Adım BAŞLA 2.Adım ‘ klavyeden iki sayi giriniz’ (ekrana yaz) 3.Adım A, B yi oku 4.Adım TOP=A+B 5.Adım TOP (yaz ) (ekrana) 6.Adım DUR Her Algoritma BAŞLA adımı ile başlatılır ve DUR adımı ile sonlandırılır. ‘ ‘ tırnak içerisinde yazılan bilgi programı kullanacak kişiye verilmek istenilen talimatı veya iletiyi içerir. A, B, TOP program tarafından kullanılacak değişkenlerin isimleridir ve algoritma oluşturulmadan önce tanımlanmış olmalıdır. Örnek 2: Klavyeden girilen A, B, C gibi üç sayıdan en büyüğü bulup sonucu ekrana yazdıran bir programın algoritmasını oluşturunuz. Verilenler: A, B, C olarak tanımlanan üç sayı. Veriler klavyeden girilecek. İstenenler: Üç sayıdan en büyüğünü bulmak. En büyük sayıyı tutan değişken max olsun. Sonuç ekrana yazılacak. 1.Adım BAŞLA 2.Adım ‘ klavyeden üç sayi giriniz’ (ekrana yaz) 3.Adım A, B, C yi OKU 4.Adım max= A 5.Adım (max<B) mı? (evet ise) max=B 6.Adım (max<C) mi? (evet ise) max=C 7.Adım ‘max=‘, max 8.Adım DUR (ekrana yaz) = sembolü matematikten bildiğimiz eşitlik anlamında kullanılmaz. Programlamadaki işlevi eşitliğin sağındaki bilgiyi, solundaki değişkene aktarmaktır. 5. ve 6. adımlar koşul cümlesi olarak ifade edilir. Verilen koşul doğru ise önce yanındaki işlem yapılır ve alttaki adıma geçilir. Yanlış ise doğrudan alttaki adıma geçilir. değişken isimlerinin belirlenmesi • Anlaşılır olmalıdır. • Türkçe karakter (İ,ı,Çç,Şş,Öö,Üü,Ğğ), noktalama ve aritmetik işlem işaretlerini içermemelidir. • Rakam içerebilir ancak ilk terimi mutlaka bir harf ile başlatılmalıdır. değişken türleri • Tamsayı (integer). (1 -127 1543 …) • Gerçel (real) sayı. (1.75 -0.45 .07 2.5E04 ….) • Alfa sayısal (character). ( ad, soyad, şehir, kelimeler ..) • Mantıksal (logical). ( doğru veya yanlış bilgilerinin tutulduğu değişkenler) Örnek 3: İsteğe bağlı sayıda verilen sayıların ortalamasını bulup yazdıran programın algoritmasını oluşturunuz. ortalama sayi sayilarin sayisi Verilenler: sayıların sayısı (N), N tane SAYI. İstenenler: sayı dizisinin ortalamasını hesaplamak. Ortalamayı tutan değişken ORT olsun. Sonuç ekrana yazılacak. 1.Adım BAŞLA 2.Adım TOP=0 3.Adım SAYAC=0 4.Adım ‘ klavyeden sayilarin sayisini giriniz’ ( yaz) 5.Adım N yi OKU 6.Adım ‘ SAYI degerini giriniz’ (yaz) 7.Adım SAYI yı OKU 8.Adım TOP=TOP+SAYI 9.Adım SAYAC=SAYAC+1 10.Adım (SAYAC<N) mi? (evet ise) 6. adıma GİT 11.Adım ORT=TOP/N 12.Adım ‘ORTALAMA=‘, ORT 13.Adım DUR yı YAZ Üzerinde toplama yapılacak değişkenlere ilk değer olarak 0 (sıfır) bilgisi aktarılmalıdır. N tane SAYI değişkeninin okunup TOP değişkenine ilave edildiğini saymak için SAYAC adlı bir değişken tanımlanmıştır. Bu şekilde yinelenen işlemlerin kaç kere yapıldığını belirtmek için SAYAC adlı bir değişken tanımlanmalıdır. AKIŞ ŞEMASI • Algoritmada verilen her bir adım, simgeler şeklindeki kutuların içine yazılır. • Her bir işlevi ifade etmek için kullanılan kutuların belirli şekilleri vardır. • Adımlar arasındaki ilişkiler ve yönler oklarla gösterilir. • Başla ve Dur kutularının dışındaki her bir kutuya en az birer tane gelen ok ve çıkan ok vardır. • Başla ve Dur dışındaki kutuların her birinin açıkta kalmadığına dikkat edilmelidir. Akış şeması yapılan işlemlerin açıkça görülmesini sağlar. Böylece işlevin doğru olup olmadığı daha kolay fark edilebilir ve programın kodlanmasını kolaylaştırır. Bu nedenle anlaşılması önemlidir. AKIŞ ŞEMASINDA KULLANILAN SİMGELER i=ilk,son,artış koşul BAŞLA DUR Aritmetik İşlem Aktarma OKU YAZ Bilgi Klavyeden Girilecek Ekrana Yazılacak OKU – YAZ OKU – YAZ Nereden olduğu belirtilmemişse sürücülerden herhangi birinde DÖNGÜ akış şemasının sığmadığı durumlarda kullanılır Karşılaştırma Karar Verme i Akış Yönü Oklarla Gösterilir Değişkenin Türünü tanımlama Örnek 1: Klavyeden girilen A ve B olarak tanımlana iki sayının toplamını bulan ve sonucu ekrana yazan bir programın algoritmasını oluşturunuz. 1.Adım BAŞLA 2.Adım ‘ klavyeden iki sayi giriniz’ (ekrana yaz) 3.Adım A, B yi oku BAŞLA ‘ klavyeden iki sayi giriniz’ (yaz) A, B yi oku 4.Adım TOP=A+B 5.Adım TOP (yaz ) (ekrana) 6.Adım DUR TOP=A+B TOP (yaz) DUR Örnek 2: Klavyeden girilen A, B, C gibi üç sayıdan en büyüğü bulup sonucu ekrana yazdıran bir programın algoritmasını oluşturunuz. 1.Adım BAŞLA 2.Adım ‘ klavyeden üç sayi giriniz’ (ekrana yaz) 3.Adım A, B, C yi OKU 4.Adım max= A 5.Adım (max<B) mı? (evet ise) max=B BAŞLA ‘ klavyeden üç sayi giriniz’ (ekrana yaz) A, B, C yi OKU max= A (max<B) e max=B h 6.Adım (max<C) mi? (evet ise) max=C 7.Adım ‘max=‘, max 8.Adım DUR (ekrana yaz) max<C) e h ‘max=‘, max DUR (yaz) max=C ALGORİTMADA DÖNGÜ OLUŞTURULMASI ve AKIŞ ŞEMASINDAKİ KARŞILIĞI tekli döngü .Adım Döngü 1 (i=1,N,1) i=1,N,1 Tekrarlanan işlemlerin olduğu adımlar. Tekrarlanan işler 1 .Adım Döngü 1’in sonu Tekrarlanan işler 2 .Adım İşlem devam İşlem Devam ALGORİTMADA DÖNGÜ OLUŞTURULMASI ve AKIŞ ŞEMASINDAKİ KARŞILIĞI ikili döngü .Adım Döngü 1 (i=1,N,1) Yinelene işlemlerin olduğu adımlar 1. .Adım Döngü 2 (j=1,N,2) Yinelene işlemlerin olduğu adımlar 2. .Adım i=1,N,1 Döngü 2’in sonu Yinelene işlemlerin olduğu adımlar 1. .Adım Döngü 2’in sonu .Adım İşlem devam Tekrarlanan işler 1 İşlem Devam j=1,N,2 Tekrarlanan işler 2 ALGORİTMADA TÜR TANIMLAMA ve ŞEMASINDAKİ KARŞILIĞI AKIŞ Algoritma oluşturmanın ilk ve en önemli adımlarından biri değişkenlerin tanımlanması ve bunların türlerinin belirlenmesidir. BAŞLA .Adım Tamsayı değişken adı1, değişken ad2, …. .Adım Alfasayısal değişken adı1, değişken ad2, …. .Adım Gerçel Sayı değişken adı1, değişken ad2,…. Tamsayı SAYI, SAYAC, TOP, TBS Alfasayısal CEVAP, AD, SOYAD, SEHİR Örnek .Adım Tamsayı SAYI, SAYAC, TOP, TBS .Adım Alfasayısal CEVAP, AD, SOYAD, SEHİR .Adım Gerçel Sayı sayi, A, B Gerçel Sayı sayi, A, B Algoritma veya akış şemasında değişkenlerin türleri tanımlanmamış ise: ilk harflerine göre ya tamsayı ya da gerçel sayı olarak işlem görür. i, j, k, l, m, n ile başlıyorsa tamsayı diğer tüm harfler için gerçel sayı AKIŞ ŞEMASININ DOĞRULUĞUNUN TEST EDİLMESİ • Üzerinde işlem yapılan tüm değişkenlerin (buna döngü değişkenleri de dahildir) yer aldığı bir tablo hazırlanır. • Değişkenlerin başlangıç değerleri tabloda yerine yazılır. • Akış şeması ok yönünde takip edilerek her bir işlem kutusuna göre değişkenlerin aldıkları değerler belirlenir ve kaydedilir. • Tüm adımlar tamamlandığında değişkenlerin son değerleri kutu içine alınır. • Sonuçlar değerlendirilir ve algoritmanın doğruluğu böylece kontrol edilmiş olur. Örnek 1: Örnek 2 deki A, B, C sayıları sırasıyla (1, 2, 3) ; (1, 3, 2) ; (3, 1, 2) ; (2, 1, 3) gibi tam sayılar olsun. A B C 1 2 3 1 3 2 3 1 1 koşul max 1 e 2 e 3 2 1 e 3 h 3 2 BAŞLA ‘ klavyeden üç sayi giriniz’ (ekrana yaz) A, B, C yi OKU max= A 3 h 3 h 3 3 2 h 2 e 3 (max<B) e h max<C) e h ‘max=‘, max İşlem doğru. Akış Şeması Tamam. max=B DUR (yaz) max=C Örnek 2: Aşağıda verilen akış şemasını takip ederek ekrana yazılacak olan değerin ne olduğunu bulunuz. BAŞLA i j T 1 -- 1 1 3 2 6 3 10 -- 2 1 5 2 9 3 14 2 i=1,2 T=i T yi YAZ j=1,3 T=T+i+j ÖRNEK SORULAR Soru 1. Klavyeden girilen bir tam sayının tam bölenlerinin sayısını bulup sonucu TBS=xxx şeklinde ekrana yazdırılan bir programın algoritmasını oluşturunuz ve akış şemasını çiziniz. Soru 2. Klavyeden girilen bir tam sayının asal sayı olup olmadığını bulup sonucu ‘ sayi asaldir ’ veya ‘ sayi asal değildir ’ şeklinde ekrana yazdırılan bir programın algoritmasını oluşturunuz ve akış şemasını çiziniz. Soru 3. Klavyeden girilen bir tam sayının tek mi çift mi olduğunu bulup sonucu ‘ sayi tektir ’ veya ‘ sayi cifttir ’ şeklinde ekrana yazdırılan bir programın algoritmasını oluşturunuz ve akış şemasını çiziniz. ÖRNEK SORULAR Soru 4. Klavyeden girilen bir tam sayının tek mi çift mi olduğunu bulup; sayı tek ise ilgilenilen sayıya kadarki ardışık teklerin, sayı çift ise ilgilenilen sayıya kadarki ardışık çiftlerin sonucu ATEK=xxx veya ACIFT=xxx şeklinde ekrana yazdırılan bir programın algoritmasını oluşturunuz ve akış şemasını çiziniz. Soru 5. Klavyeden girilen iki sayının bölümünü ‘/’ işaretini kullanmadan yapıp sonucu ekrana ‘A/B=xxx’ şeklinde yazdırılan bir programın algoritmasını oluşturunuz ve akış şemasını çiziniz. Soru 6. Yukarıda verilen 1,2,3,4 numaralı soruları Klavyeden girilen N tane tam sayı için yapınız. ÖRNEK SORULAR Soru 7. Klavyeden girilen negatif ve pozitif tam sayıları sırayla okuyan negatif sayıların ve pozitif sayıların toplamını hesaplayan, ayrıca sıfırların sayısını bulup, sayı bilgisi 99999 olduğunda sonucu ekrana ‘NSS=xxx’, ‘PSS=xxx’ ve ‘SS=xxx’, şeklinde yazdırılan bir programın algoritmasını oluşturunuz ve akış şemasını çiziniz. Soru 8. Fiz112 dersini alan öğrencilerin ad soyadı bilgileri ile beraber yeterlilik ve genel sınav sonuçları klavyeden giriliyor. Her bir notun katkısının %50 olduğu ve Genel sınavda değerlendirme yapılabilmesi için en az öğrencinin 50 alması gerektiği bir not sistemine göre öğrencilerin ad soyadı bilgileri ile birlikte başarı durumunu bulup yazdıran bir programın algoritmasını ve akış şemasını oluşturunuz.