Merhaba, tekrar hoş geldiniz.
Bu konuşmada, şunları yapmak istiyorum Bir C programı oluştururken nelere
dikkat edilmesi gerektiği hakkında konuşmak için.
Dolayısıyla dört temel görev vardır herhangi bir c programının oluşturulmasında.
Ve bu görevler nelerdir düzenleme, derleme, bağlama ve çalıştırmayı
içerir.
Farklı adımlar hakkında konuştuk bir c programı yazarken kullanacağınız
gereksinimleri anlayacaksınız, kodunuzu tasarlayacaksınız ve kodunuzu yazacaksınız,
sonra onu test edecek ve hatalarını ayıklayacaksınız ve benzerleri
ve sonra bunu sürdürmek.
Burada bahsettiğim şey Bir program yazmaya başladığınızda aslında
yapmanız gerekenler. Biraz konuştuk. düzenleme, derleme ile ilgilidir, ancak
bağlantı kurma ve çalıştırma da önemlidir.
Ve ne hakkında konuşmak istiyorum İşte bunun detayları.
Bu yüzden bu görevler ikinci doğanız olacak çünkü bunu
yapacaksınız her c programı yazdığınızda.
Kendini düzenleyeceksin. kaynak kodu, derleme
yapacaksınız, bağlama yapacaksınız, ve sonra koşacaksın.
Yapacaksın Bu çok, çok sık olur.
Yani düzenleme süreçleri, derlemek, bağlamak ve çalıştırmak geliştirme
için aynıdır herhangi bir ortamda herhangi bir derlenmiş dil
ile programlar.
Bu sadece C'ye özgü bir durum değildir.
Eğer java yazıyorsanız - bir java programın kaynak kodunu yazacaksın,
programın kaynak kodunu derlemek için.
Bağlantı kurma - farkında olmayabilirsiniz ama bir çeşit bağlantı
yapacak ve biz de konuşacağız ve sonra programı çalıştıracaksınız.
Bütün bunları sen yapacaksın.
Burada tarif ettiğim şey yine c'de nasıl yapıldığı.
Yani düzenleme tam olarak öyle olduğunu düşünürsünüz.
Bu yaratma süreci ve asıl kodu, yani c
kaynak kodunu değiştirmek.
C kaynak kodu gidiyor bir dosyanın içinde olması gerekir.
Ve her şeyi içerecek ifadeler ve yazdığınız
tüm talimatlar.
Tüm c kaynak kodu dosyaları sona erer ile . c uzantısı ile tanımlayabilirsiniz.
bir kaynak kod dosyası olduğunu.
Ondan önce. c uzantısı gidiyor temel ad olarak adlandırılacaksa,
dosya adlarınızın anlamlı olmasını istersiniz.
Eğer iki ekleme yapan bir c programı yazarsanız numaraları, add adında bir
dosyanız olabilir. c, bir kaynak kodu içerir.
Ve unutmayın ki çoğu programların pek çok farklı dosyası
olacaktır.
Bu yüzden dosyalarınızın iyi isimleri olmalıdır.
Ama bu şekilde tanımlayabilirsiniz c kaynak kodu, . c uzantısı.
Bunların hepsi . c uzantısı.
Şimdi kodumuzu düzenlediğimizde Bu derste entegre bir geliştirme
ortamı kullanacağız.
Sadece gitmiyoruz basit bir editör kullanmak için.
Basit bir editör örneği wordpad gibi bir şey olabilir.
Bir şey kullanacağız Bir editörü olan ama aynı zamanda size yardımcı olan
birçok başka şeye sahip olan kodunuzu daha verimli bir şekilde yazın.
IDE - ve bu bir IDE olarak adlandırılır, entegre geliştirme ortamı.
Kullanacağımız Bu ders için Kod Blokları konusunu
ayrıntılı olarak ele alacağım, ancak düzenleme görevi için
kod bloklarını kullanacağız.
Ama siz istediğinizi kullanabilirsiniz.
Not defteri kullanmak istiyorsanız, eğer daha
da küçük bir şey kullanmak istiyorsanız, Atom kullanabilirsiniz, orada Visual
Studio IDE'leri, ancak burada ele alacağımız kodunuzu ve kod bloklarınızı düzenlemek için.
Ve bu güzel bir fikir ve Bunu seçmemin nedeni hakkında daha ayrıntılı
konuşacağız, ancak platformlar arası ve kullanımı kolay.
Yani düzenleme temel süreç, kod yazma.
Derleme.
Bir derleyicinin ne yaptığını biliyoruz.
Sadece o üst düzey dil kodunu makine diline dönüştürür
ve ayrıca kodunuzdaki hataları tespit eder ve bulur.
Kodunuzu düzenledikten sonra derleyiciyi çalıştıracak.
Yani derleyicinin girdisi tüm kaynak
kodunuz olacak, tüm . c dosyalar düzenlediğiniz her şey.
Ve yine, bir c programı çok sayıda kaynak dosyaya sahiptir.
Ancak derleyicinin girdileri şunlardır bu kaynak dosyalar, derlemenin
kendisi bu kodu dönüştürüyor iki aşamalı bir süreçtir.
İlk aşama şu şekilde adlandırılır ön işleme aşaması.
Bu sırada kodunuz değiştirilebilir veya eklenebilir.
İkinci aşama ise Gerçek derleme, assembly dili kodunu
oluşturur.
Ve bu konu hakkında daha fazla konuşacağız bu ön işleme aşamasını ayrıntılı olarak açıklayacağız.
Ama sadece bilmeniz gereken Şimdi derleme yaparken
iki aşama var.
Odaklanacağımız konu ya da anlaşılması kolay olan nesne
kodunun üretilmesidir.
Bu yüzden derleyici her bir ifadeye bakacak ve her
bir ifadenin sözdiziminin doğru olduğunu ve dilin anlambiliminin karşılandığını
gösterir.
Sözdizimi, sözdiziminin kodun yapısının doğru olduğunu, noktalı
virgüllerin ifadenin sonunda, veri türlerini
kullandığınızı, - siz - siz dilin kurallarını takip ederek.
Semantik, kelimelerin anlamıdır.
Yani eğer bir if Anahtar kelime, bu bir koşul.
Anlambilim Bir sembol tablosu oluşturarak derleme
aşaması vb.
Ancak derleyici önemlidir.
Üretecek bu nesne kodu.
Sana söyleyecek eğer sözdiziminizde herhangi bir hata var.
Bazen aşağıdakileri de tanıyabilir Temelde kodun kullanılmadığı
ölü kodunuz olup olmadığı.
Mantık hatalarını bulmaz.
Yalnızca sözdizimi hatalarını bulur.
Yine, sözdizimi kurallar ve dil.
Mantık hatalarının anlamı budur.
Sanki bir hata yapmışsın gibi mantıkta, işlevsellikte bir
hata yapabilirsiniz.
Böylece kodunuz çalışabilir, derlenebilir, ancak amaçlandığı gibi çalışmayabilir ve bu durum mantık
hatası olarak adlandırılır.
Derleyici şunu söylemeyecek Eğer bir mantık hatanız varsa.
Eğer kullanıcıdan bir bir karakter dizesi yerine sayı veya kullanıcıdan son adlarının
ilk adlarından önce gelmesi bir mantık
hatasıdır. Derleyici gitmiyor bu tür hataları söylemek için.
Tarafından bildirilen tipik hatalar derleyici,
beyan edilmemiş değişkenler, ifade sözdizimine uymuyorsa,
doğru sözdizimine sahip değilsiniz demektir. parantezler, bitiş blokları
olmayan bloklarınız var.
Çok iyi olacaksın, Derleyici hatalarına ve ne anlama geldiklerine
çok aşinayım.
Umarım, öğrendikten sonra ve derleyiciyi çalıştırdığınızda şunları
göreceksiniz bir hatayla karşılaştığınızda
bunu hemen düzeltebileceksiniz.
Bir sözdizimini unuttum ya da noktalı virgülü unutmuşum,
oh, sağa dönmeyi unutmuşum Bu kod bloğunu sonlandırmak için ayraç.
İkinci doğa haline gelecek.
Bu yüzden tüm düzeltmeleri yaptıktan sonra hataları ve
derlemenizin başarılı olması durumunda Assembly diline çevirin ve bu
nesne kodunu oluşturun.
Yani asıl nesne kodu bir . o dosya.
Bu gerçek özet çalıştırılan dil kodu.
Bir uzantısı vardır . obj veya . o. obj tipik olarak pencerelerde uzantısı olacaktır. o Linux veya Macintosh üzerinde sistem uzantısı olacaktır.
O dosyayı göreceksin. kodunuzu derledikten sonra oluşturulur.
Ve bu sadece son aşama Derlemenin
asıl assembly dili budur.
İkili olacak. metin gibi görünmüyorsa ona
bakamazsınız.
Bu sadece bir . o uzantısıdır ve derleyici bunu
üretir.
Derleyiciyi çalıştırma şekliniz c'de aslında bir komut kullanırsınız.
Muhtemelen bunu yapmanıza
gerek kalmayacak çünkü ide, entegre geliştirmedeki editör sadece bir menü seçeneğine tıklayarak
bunu sizin için yapacak, ancak neler olup bittiğini bilmek önemli.
Yani derleyiciyi çalıştırdığınızda komutunu kullandığınızda,
tipik olarak bir gcc komutu olan bir GNU derleyicisi kullanır.
Ancak temel düzeyde, sadece cc veya gcc derleyici programı.
Bu programı çalıştırırsınız ve sonra girişi belirlersiniz.
Unutmayın, derleyici girdi olarak kaynak dosyalar.
Girdiyi şu şekilde belirtirsiniz -c bayrağı ve ardından kaynak
dosyaların birbiri ardına belirtilmesi.
Buradaki örnekler cc-cmyprog'dur. c veya Eğer GNU derleyicisi kullanıyorsanız, ki bu popüler bir derleyici
olan gcc-c'dir.
Ve eğer c bayrağını atlarsanız programı da bir sonraki adım olan
otomatik olarak bağlanacaktır.
Ama gerçekten bunu çalıştırmak kolay komut satırı arayüzündeyseniz
derleyici.
Eğer sadece Bu derste muhtemelen yapacağımız gibi bir menü seçeneği
kullanın.
Ama yine de girdi, c kaynak dosyaları.
Bahsettiğim gibi kod blokları halinde, sadece
bir menü seçeneğine tıklayacaksınız ve otomatik olarak bir bağlantı derler ve ardından
başka bir menüye tıklayabilirsiniz seçeneği otomatik olarak çalışacaktır.
Ama tekrar söylüyorum. aslında derleyici komutunu
-c bayrağı ve girdi kaynak dosyaları.
Derledikten sonra bağlantı kurarsınız. Dediğim gibi, her programlama dilinin bir bağlantısı
vardır, ancak çok Çoğu zaman şeffaftır, ne olduğunu bile
anlamazsınız.
c'de, bağlantı süreci önemlidir çünkü her zaman şeffaf değildir.
Ancak günümüzde çoğu modern
IDE ile, öyle, ancak c'de önemli olduğunu vurgulamak zorundayım.
Yani program bittikten sonra buna çevrildi. eski kod nesne kodu, o daha sonra bağlanmaya
hazırdır.
Bağlantı kurmamızın nedeni harici kütüphaneler
kullanarak tüm diğer kütüphaneleri almamız gerekir ve bunları tek bir programa yerleştirin.
Yani bağlantı kurmak sadece bağımlılıkları yerine koymak ve gerçek
bir yürütülebilir dosya oluşturmak.
Yani . o dosyası nesnelerdir.
Daha sonra tüm . işletim sistemini tek bir yürütülebilir dosyaya dönüştürür.
Ve yine, bu genellikle şeffaftır, genellikle
derlediğinizde otomatik olarak gerçekleşir.
Ama yine de, olmayabilir ve l gibi ayrı bir komut
vermeniz gerekebilir.
Ama tüm bu nesneler dosyaları ve bir çalıştırılabilir dosya oluşturur.
Ve çalıştırılabilir dosya çalıştırdığınız şeydir.
Yani tüm bunları birleştirecek.
Ve sonra da birleşecek.
Ve belki de . olan işletim sistemleri ek kütüphaneler, kullanmak isteyebileceğiniz
diğer programlar başka birinin yazdığı
veya c diliyle birlikte gelen diğer kütüphaneler.
Hepsini alacaksın. ve onları bir araya getirin.
Ve bağlantı aşaması ayrıca hataları tespit eder ve raporlar.
Bunlar iki ayrı aşama.
Bağlantı, yine, genellikle şu şekilde olur yeniden tanımlama hataları veya var olmayan bir
işlevi çağırmaya çalışıyorsunuz.
Yani eğer bu yoksa. o dosyasına tüm programı oluşturuyorsa, bir bağlantı
hatası alacaksınız.
Ve her şeye sahip olmanız gerekecek . O's.
Ve yine, . o's senin bile olmayabilir.
Aynı dili konuşuyor olabilirler, standart kütüphanenin bir parçası olabilirler veya başka bir kütüphane
ile birlikte gelebilirler. başka birinin yazdığı program.
Ama bütün bunlara ihtiyacın var. o's tek bir çalıştırılabilir dosya oluşturmak için.
Yani program kütüphaneleri destek ve işlemleri gerçekleştirmek için rutinler sağlayarak C dilini genişletir
dilin bir parçası olmayan.
Giriş ve çıkış kütüphaneleri örneğin, matematik kütüphanesi,
dize manipülasyon kütüphaneleri.
Bu sadece aynı şey eğer java programına aşinaysanız,
java api ile aynı şeydir.
Paketlerle aynı şey.
Bu kavram ben istiyorum bir dosyaya
veri yazmak istemiyorum, bunu kendim uygulamak istemiyorum,
ben Dil ile birlikte gelen mevcut bir kütüphaneyi kullanacak.
Hala C dilinde yazılıyor. sadece birileri bununla birlikte gelir.
Yani her türlü öğreneceğimiz
ve kullanacağımız farklı kütüphaneler.
Bu, aşağıdakilerin bir parçasıdır bağlantı aşaması.
Yani bağlantı aşamasında bir arıza yapmak için
bir kez daha geri dönmeniz ve kaynak kodunuzu düzenlemeniz
gerektiği anlamına gelir. o nesne dosyasını bulabileceğinizden emin olun,
bu nedenle arızaların çoğu genellikle sadece bir dosya veya bunun gibi bir şey eklemeniz gerektiği anlamına gelir. Bu ikinci doğa haline gelecektir.
Başarı, eğer işiniz bittiyse başarılı bir şekilde derliyorsanız, başarılı bir şekilde
bağlantı çalıştırılabilir bir dosya üretecektir.
Windows ortamında, çalıştırılabilir
dosyada bir . exe uzantısı.
Linux ve Windows'ta şunları yapacaktır sadece varsayılan olarak a'ya sahiptir. Dışarı.
A'nın adını değiştirebilirsiniz. dışarı bir şey yayınlayarak
daha anlamlı bir şeye derleyici komutu ile.
Ancak çoğu IDE kod bloklarında da tek
bir işlemde bir derleme ve bağlantı programına sahip olacak
ve yürütülebilir dosyayı üretir ve ardından yürütülebilir dosyaya çift tıklayabilirsiniz veya çalıştırılabilir
dosyayı bir komuttan veya menü seçeneğinden çalıştırabilirsiniz.
Ama eğer düşük seviyede Linux'ta bir a
göreceksiniz. varsayılan olarak çalıştırılabilir dosyanızdır. Pencerelerde bir . exe.
Önemli büyüklükte bir program birkaç kaynak kod dosyasından oluşacaktır, bundan
daha önce bahsetmiştim.
Her kaynak kod dosyası bağlanması gereken nesne
dosyasını oluşturmak için derleyici.
Programın kullanımı çok daha kolay bir dizi küçük kaynak
dosyaya bölerek yönetin.
Birçok kaynak kullanmak isteyeceksiniz ve 5000 satır kod içeren
bir kaynak dosya istemezsiniz.
Bu tutarlı değil.
Bunu idare etmek kolay değil.
Yani dosyalar oluşturacaksınız Kaynak
kodu içeren ve kaynak kodu belirli olacak.
Bu bir özel işlevsellik.
Bu çok daha kolay hale getirir geliştirmek
ve hata ayıklamak çok daha kolaydır ve çok daha uyumludur.
Bu yüzden birçok küçük kaynak dosya.
Büyük kaynak dosyaları istemezsiniz binlerce satır kod ile.
Ve tüm bu kaynak dosyalar tüm programı oluşturacak.
Hepsinin kendi kendi . o'lar, ve hepsi derleyiciye
girdi olacak.
Bütün bu kavramlar Programa kadar, esasen
bir proje olarak da kabul edilir.
Bunu şöyle düşünebilirsiniz daha yüksek bir seviyede.
Bu sizin projeniz, sizin programınız.
Sonunda her şeyi yaptıktan sonra Bunu bağladınız ve çalıştırılabilir dosyanızı elde
ettiniz, daha sonra programı çalıştırabilirsiniz.
Çoğu IDE'de bu sadece bir menü tıklaması olacak veya pencerelerde
çift tıklayabilirsiniz, exe'ye çift tıklayabilirsiniz.
Ve eğer Linux kullanıyorsanız, sadece a yazıyorsun. Dışarı.
Şimdi bir. sahip olmanız gereken Belirli izinler için mod değiştirme komutu vermeniz gerekebilir,
ama çalıştırmak için şunu söyleyebilirsiniz. /a. dışarı ve bu programı çalıştıracak
Linux komut satırından.
Ama yine de genellikle bunu yapmak zorunda değilsiniz. bunun için endişelen. Yani yürütme aşaması, programınızı
çalıştırdığınız yerdir.
Programın her bir ifadesi sırayla yürütülür.
Program herhangi bir talepte bulunursa kullanıcıdan
veri geldiğinde, program duraklayacak ve bu girdiyi alacaktır.
Girdiyi şu yolla alabilirsiniz klavye veya grafik kullanıcı arayüzü aracılığıyla girdi
alabilir. C kodunuzda bunun için kütüphaneler.
Görüntülenen sonuçlar program tarafından konsol
adı verilen bir pencerede görüntülenir.
Ve biz göstereceğiz Kod blokları hakkında konuştuğumuzda bunun örneklerini
görebilirsiniz.
Ama programınızı çalıştırdığınızda, tipik olarak, çıktı göreceksiniz.
Her zaman değil, bazen programlar çıktı üretmeyen şeyler yapmak.
Ancak genellikle çıktı üretirler ve
çıktıyı doğrudan terminalde veya konsolda görürsünüz.
Yürütme aşaması ayrıca şunları da üretir çok çeşitli hata koşulları.
Yani yanlış ürün üretebilirsiniz
Bu sadece bir mantık hatasıdır ve geri dönmeniz gerekir. ve kaynak kodunuzu düzenleyin.
Orada öylece oturup hiçbir şey yapmayabilir çünkü mantık sorunların var.
Ve son olarak çökebilir en kötü
durum senaryosu olan bilgisayarınız, yani programınızda gerçekten kötü bir şey yaptınız
ve bu çok kötüydü programın öldüğünü ya da aslında
diğer programlara neden olduğunu işletim sisteminizdeki programların
tüm bilgisayarınızı çökertmesine neden olabilir.
Yani gerçek c uygulamasını çalıştırmak sorunlara neden olabilir. Program aşağıdaki işlemleri yapmazsa amaçlanan işlevsellik, o zaman geri dönüp kaynağı
düzenlemeniz gerekir kodu yeniden
düzenlemeniz veya yeniden tasarlamanız gerekebilir ve işte bu noktada
biz farklı adımlar hakkında konuştuk.
Bu, hata ayıklama olarak bilinir hatalarınızı bulma ve düzeltme aşaması.
Bir bütün olacağız hata ayıklama
bölümü çünkü bu çok önemli.
Daha önce de bahsettiğim gibi öğrenmenin en iyi yollarından biri hatalarınızdan
ders çıkarmaktır.
Sürekli geri döneceksin ve kaynak kodunu düzenleyebilir ve hata ayıklayabilirsiniz.
Tüm derleme süreci, Programın
bağlanması ve yürütülmesi, işiniz bitene kadar tekrarlanır.
bu kodun işlevselliği için ihtiyacınız olan tüm sonuçlara sahip olursunuz.
İşte, yine, başka bir güzel illüstrasyon sağlamayı seviyorum.
Bu bir kitaptan alınmıştır Horton tarafından Beginning C olarak adlandırılmıştır.
Ama bu süreç sahip olacağın.
Kaynak kodunuzu düzenleyeceksiniz.
ile bir dosya oluşturacaksınız. . c uzantısı ve anlamlı bir ad.
Bir editör kullanacaksın Bunu yapmak için bir IDE,
entegre geliştirme ortamı, Code Blocks gibi bir şey.
Daha sonra derleyeceksiniz.
Derleyici şunları yapacak bir obj dosyası bir o dosyası oluşturun.
Eğer bu dosyayı oluşturmazsa,
bu da hatalarınız olduğu ve geri dönüp bunları düzeltmeniz gerektiği anlamına gelir.
Obj dosyalarını oluşturduktan sonra, nesne dosyaları, daha sonra hepsini birbirine bağlamanız
gerekir çalıştırılabilir bir dosya oluşturmak için.
Ve ayrıca düzgün bir şekilde bağlanmadıkları
bu aşamada hatalar.
Geri dönüp kaynak kodunuzu düzenleyin.
Gerçekten hata almadığınızda ve çalıştırılabilir
bir dosyanız varsa, programınızı çalıştırabilirsiniz.
Ve yine, kendi programında mantık hataları olabileceği için yine
de hata alabilirsiniz.
O zaman geri dönüp ve kaynak kodunuzu düzenleyin.
Bu yüzden bu bir Çok aşina olacağınız
tekrarlayan bir süreç.
Düzenle, derle, bağla, çalıştır.
Ve bu yine tipik olarak tüm dillerde ne yaptığınızı.
Bunu tekrar tekrar yapacaksın. Programınız tüm gereksinimlerinizi
karşılayana kadar tekrar tekrar.