Program akışı da şu şekilde olabilir;
> Dişli gruplarının sayısı her zaman iki olmayabilir :) Bu durumda iç içe
> FOR döngülerinden yararlanamayız. :)
* Döngüler illa ki FOR olmak zorunda değil. Bunun pek çok dilde birden fazla
yöntem var. (Aralarında ufak tefek farklılılar olmakla birlikte)
REPEAT / UNTIL bunlardan biri. Diğeri de WHILE döngüsü. Her ikisi ni de bu iş
için rahatlıkla kullanabilirsin.
0 - ANA DİŞLİ Tablosundan Dişli Sayısı ve Sonraki Dişli Grubu Oku
1 - Sonraki Dişli Grubu eşit SIFIR ise ve ana Dişli Grubu Sıfırdan büyük ise ;
HESAPLA; ardından 3 e git
2 - Sonraki Dişli Grubu sıfırdan büyük ve Dişli Sayısı SIFIR ise;
a ) ANA Dişli Gruplarının değerlerini al (ALT DİŞLİ TABLOSUNDAN) - Liste1
i oluşturur.
b ) Alt Liste_oluşturulacak_mı_kontrol_et
c ) while/repeat X=0 dan Liste1 sayısında ve alt Liste oluşturulacak ise
---------- b ) SONRAKİ Dişli Grubunun Değerine göre ALT
DİŞLİ TABLOSUNDAN Liste2 yi oluşturur.
FOR Y=0 dan Liste2 sayısında
HESAPLA
-----
Alt Liste_oluşturulacak_mı_kontrol_et
3- Ana dişli grubunda bir sonraki kayıt değerini al
4 - 0. adıma git (Ana dişli grubundaki kayıtlar bitinceye kadar ....)
Algoritmanın 1 numaralı adımındaki hesabı ufak tefek modifikasyonla 2.b
bölümüne alıp tek bir döngü de yapabilirsin. Yani Default olarak her zaman
Liste1 ve Liste2 var olur. O zaman algoritma şöyle olur sanki; (modifikasyona
ihtiyacı olabilir)
0 - ANA DİŞLİ Tablosundan Dişli Sayısı ve Sonraki Dişli Grubu Oku
1 - Liste1 Oluştur - (Liste1 her zaman var) - Ana Dişli Grubu - Dişli Sayısı
Sıfır ise ALT DİŞLİ TABLOSUNDAN Liste1 Oluştur -(Ana Dişli Tablosundan Alırsa
TEK DEğer)
2 - FOR Liste1 sayısınca ....
b ) Alt Liste_oluşturulacak_mı_kontrol_et // Buraya Dikkat !!!
---- b.1 - Liste2 Oluştur - (Liste2 her zaman var) - Ana Dişli Grubunda
Sıfır
ise ALT DİŞLİ TABLOSUNDAN Liste2 Oluştur/Değilse Ana Dişli Grubundan Al
(ANA Dişli Grubundan Aldığında TEK DEğer)
------ while/repeat Döngüsünün içine Liste2 Oluşturma Girmeli ki ALT Dişli
Tablosunda Olmayan Değerler için de Hesapla Yapılsın
c ) while/repeat X=0 dan Liste1 sayısında ve alt Liste oluşturulacak ise
b.1 - Liste2 Oluştur - (Liste2 her zaman var) - Ana Dişli Grubunda Sıfır
ise ALT DİŞLİ TABLOSUNDAN Liste2 Oluştur/Değilse Ana Dişli Grubundan Al
(ANA Dişli Grubundan Aldığında TEK DEğer)
c.1 ) SONRAKİ Dişli Grubunun Değerine göre ALT DİŞLİ TABLOSUNDAN Liste2
yi oluşturur. /// Buraya dikkat !!!
FOR Y=0 dan Liste2 sayısında
HESAPLA
-----
Alt Liste_oluşturulacak_mı_kontrol_et /// Buraya dikkat !!!
Buradaki b/c/c.1 aralarındaki bağlantıyı kontrol değişkenleri ile kontrol
etmelisin. Böylece n tane kadar iç içe döngü gerçekleştirilir. ALt Dişli
Grubundan Çıkış Repeat/Until döngüsünde kullanılan Alt_Liste_Oluşturulacak_mı
logic değerine bağlı. Ancak bu algoritmada Liste1 + Liste2 Kesinlikle Dinamik
boyutta olmalı. Boyutları listeler oluşturulurken çekilen verilere göre dinamik
olarak artmalı/azalmalı.
Yazımda ufak tefek hatalar olabilir. :(
Kolay Gelsin.
_______________________________________________
Linux-programlama mailing list
[email protected]
https://liste.linux.org.tr/mailman/listinfo/linux-programlama
Liste kurallari: http://liste.linux.org.tr/kurallar.php