Bu yaklaşım başarısızlığa mahkûmdur ve genellikle sıfırdan yeniden yazmayı gerektirir.
Dolayısıyla, bu senaryoyu çözmek için sorunu birkaç alt soruna bölmeyi deneyebilir ve ardından tek tek çözmeye çalışabiliriz. 1.
Bu yalnızca görevimizi kolaylaştırmakla kalmaz, aynı zamanda yüksek bir değerden YAZILIM `ın nasıl "kırılacağı"dır.
C / C++ gibi popüler dillerde bu tür birimlerin birkaç farklı türünü göreceğiz, Python ve Java.
C / C++`a Taşı
< a href = # Python> Python`a Atla
Java`ya Atla
C / C++
Açıklama amacıyla,
Tüm temel bağlı liste eklerine tek bir programda sahip olduğumuzu varsayalım. Bir çok metot (fonksiyon) olduğu için gerekli olan ana fonksiyonun üzerine tüm metot tanımlarını yazarak programı karmaşık hale getiremeyiz. Ancak yapsak bile, yöntemleri sıralama sorunu olabilir, bir yöntemin diğerinden önce olması gerektiği gibi.
Dolayısıyla, bu sorunu çözmek için tüm prototipleri başlangıcında bildirebiliriz. program, ardından ana yöntem ve bunları herhangi bir sırayla tanımlayabileceğimiz aşağıda:
Program:
< kod sınıfı ="tanımsız boşluklar ">
< kod sınıfı ="tanımsız boşluklar ">
< kod sınıfı = "kalın anahtar kelime"> yapı
< kod sınıfı = "düz"> {
|
Kodun derlenmesi: yukarıdaki programı derleyebiliriz:
gcc linklist.c -o linklilist
Ve işe yarıyor!
Yukarıdaki koddaki ana problemler:
Programla ilgili temel sorunları zaten görebiliyoruz, tek tek veya grup halinde kodla çalışmak o kadar kolay değil.
Birisi yukarıdakilerle çalışmak isterse program, sonra kişinin karşılaştığı birçok sorundan bazıları:
- Kişinin Tam Kaynak Dosyasını gözden geçirmesi gerekir. bazı işlevleri iyileştirmek veya iyileştirmek için.
- Program diğer projeler için temel olarak kolayca yeniden kullanılamaz .
- Kod çok karmaşık güçlü> ve hiç çekici değil, bu da kodda gezinmeyi çok zorlaştırıyor.
Bir grup projesi veya büyük programlar söz konusu olduğunda, yukarıdaki yaklaşımın toplam maliyetleri, enerjiyi ve başarısızlık oranlarını artırması garanti edilir.
Doğru yaklaşım:
Bu satırların "#include" ile başlayan her C/C++ programında başladığını görüyoruz.
Bu şu anlama geliyor: "library" başlığında (.h dosyaları) bildirilen ve muhtemelen library.c / cpp dosyalarında tanımlanan tüm işlevleri içerir.
Bu satırlar derleme zamanında önceden işlenir.
Bu tür bir kitaplığı kendi amaçlarımız için manuel olarak oluşturmaya çalışabiliriz.
Hatırlamamız gereken önemli şeyler : güçlü>
- ".h" dosyaları yalnızca prototip bildirimlerini (fonksiyonlar, yapılar gibi) ve global değişkenleri içerir.
- ".c / .cpp" dosyaları gerçek uygulamayı içerir (başlık dosyalarındaki bildirim tanımları)
- Tüm kaynak dosyaları derlerken, aynı işlevin birden fazla tanımının olduğundan emin olun, değişken vb. aynı proje için mevcut değil. (ÇOK ÖNEMLİ)
- Bildirildikleri dosyayla kendinizi sınırlamak için statik işlevleri kullanın.
- Harici dosyalar tarafından başvurulan değişkenleri kullanmak için extern anahtar sözcüğünü kullanın.
- C++ kullanırken ad alanlarına dikkat edin, çakışmaları önlemek için her zaman namespace_name:: function (), kullanın. ol >
Programı daha küçük kodlara bölerek:
Yukarıdaki programı inceledikten sonra, bu büyük programın nasıl uygun küçük parçalara ayrılabileceğini görebiliriz ve sonra kolayca işlenir.
Yukarıdaki programın temelde 2 ana işlevi vardır:
1) Düğümlerde veri oluşturma, ekleme ve kaydetme.
2) Düğümleri görüntüleme
Bu şekilde programı şu şekilde bölebilirim:
1) Ana dosya > Program sürücüsü, Ekleme Modüllerinden Nice Wrapper ve ek dosyaları kullandığımız yer.
2) Yapıştır - > Gerçek uygulama buradadır.
Belirtilen önemli noktalarla birlikte program şu bölümlere ayrılmıştır:
linkedlist.c - > Sürücü Programını içerir
insert.c - > Ekleme Kodu içerirlinkedlist.h - > Gerekli Düğüm bildirimlerini içerir
insert.h - > Gerekli Düğüm Ekleme Bildirimlerini içerir
Başladığımız her başlık dosyasında:
#ifndef FILENAME_H #define FILENAME_H Bildirimleri ... #endif
#ifndef, #define ve #endif, arasında bildirimlerimizi yazmamızın nedeni, aynı başlık dosyası çağrıldığında veri türleri, değişkenler vb. gibi birden çok tanımlayıcı bildirimini engellemektir. aynı projeye ait yeni bir dosyada.
Bu örnek program için:
insert.h - > Ekleme düğümünün bildirimini ve düğümün kendisinin bildirimini içerir.
Derleyicinin başlık dosyasındaki bildirimleri görebileceğini unutmamak çok önemlidir, ancak aşağıdaki kodu yazmaya çalışırsanız < güçlü>başka bir yerde bildirimi içerir , derleyici bağlantı adımına geçmeden önce her .c dosyasını ayrı ayrı derlediği için bu bir hataya neden olur. ,
connectedlist.h - > Düğüm ve bunları kullanan dosyalar için dahil edilmesi gereken Görüntü bildirimlerini içeren bir yardımcı dosya.
insert.c - > #include "connectedlist.h" aracılığıyla, bildirimin yanı sıra insert.h`de bildirilen tüm diğer yöntem tanımlarını içeren bir Düğüm bildirimi ekleyin.
connectedlist.c güçlü> - > Kullanıcıdan gerekli konumlara tamsayı verisi eklemesini isteyen sonsuz bir döngü içeren ve ayrıca listeyi görüntüleyen bir yöntem içeren Simple Wrapper.
Ve akılda tutulması gereken son şey, bunun anlamsız olduğudur. dosyaların birbirine eklenmesi, birden fazla geçersiz kılmaya (geçersiz kılmaya) neden olabilir ve bir hataya neden olur.
Yukarıdakileri göz önünde bulundurarak, dikkatli bir şekilde uygun rutinlere bölmelisiniz.
|
insert.h
|
insert.c
< kod sınıfı = "kalın anahtar kelime"> yapı
< ShopLatest questions Wiki |