180 likes | 570 Views
Algoritma , bir problemin çözümünün adımlarını gösteren formal bir dilde yazılmış tasarımdır. Kullanılan dil Türkçe ve İngilizce gibi doğal bir dildir ama sınırlı bir yapısı vardır. Bir algoritmada bulunması gereken temel öğeler şunlardır: sıra, karar verme yapıları ve yineleme.
E N D
Algoritma, bir problemin çözümünün adımlarını gösteren formal bir dilde yazılmış tasarımdır. Kullanılan dil Türkçe ve İngilizce gibi doğal bir dildir ama sınırlı bir yapısı vardır. Bir algoritmada bulunması gereken temel öğeler şunlardır: sıra, karar verme yapıları ve yineleme. Sıra:Çözüm adımları bir sıraya dizilmiş olarak verilmelidir. Bu sıra çözüm adımlarının hangi sırayla uygulanacağını gösterir. Bir adımın içerdiği alt adımlar numaralama düzeniyle açıkça belirlenir. Karar Verme Yapıları:Bazı çözüm adımları seçeneğe bağlı olarak uygulanır. Her adımın hangi koşulla uygulanacağı açıkça belli olmalıdır. Adım numaralarından seçeneğe bağlı olarak uygulanacak adımın konulan koşulun sağlanması ya da sağlanmaması durumunda mı uygulanacağı belli olmalıdır. Yineleme:Bazı adımların birkaç kez yinelenmesi gerekebilir. Bu amaçla yinelenecek adımlar yineleme adımının alt adımları olmak zorundadır. Yineleme adımı alt adımların hangi koşullarda yineleneceğini gösteren bir mantıksal ifade kullanmalıdır. Yineleme adımının yapısından yinelenecek adımların hangi koşullarda yineleneceği ve yineleme işleminin ne zaman duracağı belli olmalıdır. Algoritmalar
Sıra:Sırayla çözülecek adımlara, birbirini izleyen sıra numaraları verilebilir. Örneğin, a, b ve c adımlarının sırayla uygulanacağını gösterir. Eğer bir adım, alt adımları kapsayacaksa, alt adımlar, o adımın numarasını da kapsayacak şekilde numaralanır. Örneğin, a, b, b1,b2 ve c adımlarının sırayla uygulanacağını gösterir. Algoritmaların Numaralanması
Bu yapı, seçeneğe bağlı olarak, N adımının alt adımlarının uygulanacağını gösteren bir yapıdır. Bu adımı uygulamak için, N adımındaki mantıksal-ifade'nin doğru olup olmadığı bulunur. Eğer mantıksal-ifade doğruysa N.T. adımı uygulanır; doğru değilse N.F. adımı uygulanır. Bazı karar verme yapılarında N.F. adımı bulunmayabilir, bu durumda N adımındaki mantıksal-ifade yanlış ise uygulamak için N’den sonraki (N+1) adımına gidilir ve adımların uygulanması oradan devam eder. Bazen N.T. (veya N.F.) birden fazla adım içerebilir, bu durumda bu adımları N.T.1, N.T.2, ... gibi numaralandırırız. Karar Verme Yapıları:
Yineleme adımı için aşağıdaki gibi bir yapı kullanabiliriz. Bu yapıda mantıksal-ifade doğru olduğu sürece N.1, N.2, ..., N.m adımları sırayla yinelenir. Her yinelemeden sonra mantıksal-ifade kontrol edilir ve eğer doğru ise yineleme işlemi devam eder; doğru değilse bir sonraki (N+1) adıma gidilir. Yineleme:
Problem:Verilen üç sayının ortalamasının bulunması. Problemin Anlaşılması ve Çözümlenmesi:Bu problemde bize üç doğal sayı verilecek ve biz üç sayının ortalamasını bulacağız. Bulduğumuz sayıyı kullanıcıya bildireceğiz. Girdiler: üç doğal sayı S1, S2 ve S3 Çıktılar:bu üç doğal sayının ortalaması Örnek 1
Bu problemi yukarıdan-aşağı tasarım yöntemini kullanarak çözeceğiz. Çözüm adımlarını bir algoritma gibi göstereceğiz. İlk önce problemimizi aşağıdaki üç ana adıma ayıracağız. 1. doğal sayıları oku 2. ortalamayı bul 3. ortalamayı kullanıcıya bildir Örnek 1 Devam...
Birinci adımı biraz daha ayrıntılı vermemiz gerekir. Yani bu durumda alt problemimiz üç doğal sayının okunması olmuştur. Bu adımdaki problemi aşağıdaki gibi çözebiliriz 1. doğal sayıları oku1.1. ilk doğal sayı S1’i oku 1.2. ikinci doğal sayı S2’ yi oku 1.3. üçüncü doğal sayı S3’ ü oku İkinci adımda ortalamayı nasıl bulacağımızı belirterek aşağıdaki gibi ayrıntılandırabiliriz : 2. ortalamayı bul 2.1. ortalamayı ortalama = (S1 + S2 + S3) / 3 formülü ile hesapla Örnek 1 Devam...
Eğer üçüncü adımının yeterince basit olduğunu kabul edersek, sonuç algoritmamız aşağıdaki gibi olacaktır : 1. doğal sayıları oku1.1. ilk doğal sayı S1’i oku 1.2. ikinci doğal sayı S2’yi oku 1.3. üçüncü doğal sayı S3’ü oku 2. ortalamayı bul2.1. ortalamayı ortalama = (S1 + S2 + S3) / 3 formülü ile hesapla 3. ortalamayı kullanıcıya bildir Örnek 1 Devam...
Problem:Verilen üç sayının en büyüğünün bulunması Problemin Anlaşılması ve Çözümlenmesi:Bu problemde üç doğal sayı okuyacağız ve bu üç sayının en büyüğünü bulacağız. Bulduğumuz en büyük değeri kullanıcıya bildireceğiz. Girdiler: üç doğal sayı S1, S2 ve S3 Çıktılar:bu üç doğal sayının en büyüğü Örnek 2
Tasarım:İlk önce aşağıdaki algoritmanın üç ana adımını yazar ve sonra birinci adımı ve ikinci adımı onların alt adımlarındaki gibi çözeriz. Çözüm olarak aşağıdaki algoritmayı elde ederiz. 1. doğal sayıları oku 2. en büyük sayıyı bul 3. en büyük sayıyı kullanıcıya bildir Örnek 2 Devam...
1. doğal sayıları oku 1.1. ilk doğal sayı S1’i oku 1.2. ikinci doğal sayı S2’yi oku 1.3. üçüncü doğal sayı S3’ü oku 2. en büyük sayıyı bul 2.1. eğer S1 < S2 2.1.T. eğer S2 < S3 2.1.T.T. en büyük sayı S3’tür 2.1.T.F. en büyük sayı S2’dir 2.1.F. eğer S1 < S3 2.1.F.T. en büyük sayı S3’tür 2.1.F.F. en büyük sayı S1’dir 3. en büyük sayıyı kullanıcıya bildir Örnek 2 Devam...
Problem:Verilen bir pozitif doğal sayının faktöriyelinin bulunması Problemin Anlaşılması ve Çözümlenmesi:Bu problemde bir pozitif doğal sayı okuyacağız ve bu sayının faktöriyelini kullanıcıya bildireceğiz. Girdiler: bir pozitif doğal sayı S Çıktılar: S! Örnek 3
Tasarım:Bir sayının faktöriyeli (S!), birden o sayıya kadar olan bütün doğal sayıların çarpımına eşittir. Yani, S! = 1 x 2 x .... x (S-1) x S Bu kısa anımsatmadan sonra algoritmamızı tasarlamaya başlayalım. İlk ana adımlar : 1. Sayıyı oku, S 2. S! hesapla 3. S! kullanıcıya bildir Örnek 3 Devam...
Birinci ve üçüncü adımlar yeterince basit, ancak ikinci adımın ayrıntılandırılması gerekiyor. Yukarıdaki formülü, yineleme yapısını kullanarak hesaplayabiliriz. Buna göre, ikinci adım aşağıdaki alt adımlara bölünebilir (Bu çözüm için, iki değişken kullanıyoruz. İlki S! değerini tutacak (SFakt), diğeri ise (Sayaç), 1’den S’ye kadar sayıların değerini tek tek alacak). 2. S! hesapla 2.1. SFakt’i 1’e eşitle 2.2. Sayacı 2’ye eşitle 2.3. Sayaç <= S olduğu sürece 2.3.1. SFakt’ı Sayaç ile çarp ve sonucu SFakt’ın yeni değeri yap 2.3.2. Sayacı bir arttır Burada, 2.3.1 ve 2.3.2 adımları, 2’den S’e kadar tekrarlanacaktır. Sonunda, sayaç S’den bir büyük olacağı için tekrarı kontrol eden mantıksal ifade yanlış olacaktır ve bu adımlar bir daha yinelenmeyecektir. Örnek 3 Devam...
Problem:Klavyeden bir dizi pozitif veya negatif tam sayı okunacaktır. Kaç sayı okunacağı belli değildir ama dizinin sonu pozitif veya negatif sayı olarak saymadığımız 0 ile işaretlenmiştir. Problemimiz bu okunacak olan sayıların kaç tanesinin pozitif, kaç tanesinin negatif olduğunu ve bu okunan sayıların ortalamasını bulmaktır. Problemin Anlaşılması ve Çözümlenmesi: İlk yapmamız gereken problemi tam olarak anlamaktır. Programımızın girdisi bir dizi pozitif veya negatif tamsayıdan oluşacak, ve dizinin en son sayısı 0 olacaktır. Diğer bir deyişle sayıları birer birer okuyacağız ve hesaplamalar yapacağız. 0 sayısı okunduğunda hesaplamaları bitirip sonucu kullanıcıya bildireceğiz.Örneğin bu programın girdisi 6 –3 –8 9 4 –1 5 3 0 olabilir. Bu dizide 5 tane pozitif ve 3 tane de negatif sayı vardır. Kullanıcıya dizide kaç tane pozitif sayı, kaç tane negatif sayı olduğunu ve okunan sayıların (son 0 hariç) ortalamasını bildireceğiz. Girilecek dizide hiç pozitif sayı ve/veya hiç negatif sayı olmayabilir. Bu dizinin ilk sayısı 0 da olabilir demektir. Okuma işlemini sadece ilk 0 değerini görene kadar yapacağız (İlk sıfırdan sonraki sayılar dizimizin bir parçası olarak görülmeyecektir).Girdiler: En son sayısı sıfır olan pozitif ve negatif sayılar dizisi.Çıktılar: Pozitif sayıların sayısı, negatif sayıların sayısı ve sayıların ortalaması. Örnek 4
Tasarım:Yapmamız gereken üç işi (pozitif sayıların sayısının bulunması, negatif sayıların sayısının bulunması, ve sayıların ortalamasının bulunması) birlikte yapmalız.Çünkü dizideki sayıları bir kere okuyacağız ve hesaplamalarımızı bu okuma zamanında yapmalıyız. Ortalamayı bulabilmek için sayıların toplamını bulup toplam sayı miktarına bölmeliyiz. Kabaca çözümümüz şöyle olacaktır. Sayıları teker teker okuyacağız. Her sayıyı okuduktan sonra toplama ekleyeceğiz. Aynı zamanda sayının pozitif veya negatif olmasına göre pozitif sayıların veya negatif sayıların miktarı bir artıracağız. 0 okununca ortalamayı bulunan toplamı sayıların miktarına (pozitif sayıların miktarı + negatif sayıların miktarı) bölünür.. Örnek 4 Devam...
1. PozitifSayaç'ı 0'a eşitle.2. NegatifSayaç'ı 0'a eşitle.3. Toplam'ı 0'a eşitle.4. İlk sayıyı Sayı'nın içine oku.5. Sayı 0'dan farklı olduğu sürece5.1. Sayı'yı Toplama ekle.5.2. Eğer Sayı 0'dan küçükse5.2.T. NegatifSayaç'ı bir artır.5.2.F. PozitifSayaç'ı bir artır.5.3. Bir sonraki sayıyı Sayı'nın içine oku.6. Ortalamayı Ortalama =Toplam / (PozitifSayaç+NegatifSayaç) formülü ile hesapla.7. Sonuçları (PozitifSayaç, NegatifSayaç ve Ortalama) kullanıcıya bildir Örnek 4 Devam...