Programda değişkenlerde ve alt program isimlerinde kullanılan etiketler

Başlatan F.T, 21 Temmuz 2015, 21:44:32

F.T

Arkadaşlar programlarda kullanılan etiketlerde nasıl isimler kullanmalıyız.Doğrusu nedir?
örneğin z1a veya 1say,say2,say7bir vb...
bunlardan nasıl formatlar uygun olur.
Hakk şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

OG

Doğrusu syntax hatası olmayandır  :D

Şaka tabi. Kişiye göre yani programcının en iyi algılama şekline göre değişir.

Başka bir konu ama etiketleme ile ilgili,
Büyük programlar için, çaplı etiketleri modul modul ayrı bas dosyalarına bölmek kargaşayı azaltıyor.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

MrDarK

Bir değişkenin isminde bence şunlar yer almalı;
- Değişkenin görev yaptığı konu ne ise onunla ilgili anlam taşıması
- Değişkenin boyutu hakkında bilgi içermesi
- Değişkenin yerel mi global mı olduğunu ifade etmesi
Picproje Eğitim Gönüllüleri ~ MrDarK

ERdow

Dediğiniz şeyleri "coding style , coding convention" diye arattığınızda karşınıza güzel kaynaklar çıkacaktır. Mesela google c++ stil kılavuzu güzel örnekler içeriyor.

Parantezlerin kullanımıda "indent style" olarak geçiyor, misalen 'Allman' şeklinde yazılmış kodu ben çok daha rahat okuyabiliyorum. Genel geçer bir kural bireysel olarak yok, lakin bunları alışkanlık edinmek iyi olabilir. Bunlara ek olarak açıklayıcı yorumlarda içerirse kod hem hatırlanması hem paylaşılması ve anlaşılması kolay oluyor.

F.T

Şundan dolayı sordum.
         
Dim K1HAB  As Bit         
Dim ZAK1   As Bit
Dim T2     As Byte         
Dim TOP2   As Word       
Dim Z2K    As Bit

bu tip değişkenler kullandığım programda abuk subuk durumlar yaşıyorum.

mesela IF K1HAB=1 THEN ZAK1=0  dediğim bir satır proteuseta çalışıyor fakat gerçekte çalışmıyor gibi değişik durumlar yaşıyorum bunun sebebi bu harf rakam karışık isimlendirmeler olurmu.Doğrusu nedir?
Hakk şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

t2

proteuseta çalışıyor fakat gerçekte çalışmıyor durumu değişken isimleri ile ilgili değildir.
Derleyici nasıl bir isim koyduğunuza bakıp farklı derleme yapmaz.

değişken veya etiket isminde yanlışlık varsa bildirir. düzeltmenizi ister. sonra yeniden derlersiniz

K1HAB,  Degisken1  olarak değiştirilirse derleme sonucu aynı olur.
Şu kod ile:
Device 16F628A

All_Digital=true

Dim K1HAB  As Bit         
Dim ZAK1   As Bit
Dim T2     As Byte         
Dim TOP2   As Word       
Dim Z2K    As Bit


 If K1HAB=1 Then ZAK1=0 
 
 End


aşağıdaki kod, aynı hexi üretir

Device 16F628A

All_Digital=true

Dim Degisken1    As Bit         
Dim ZAK1   As Bit
Dim T2     As Byte         
Dim TOP2   As Word       
Dim Z2K    As Bit


 If Degisken1  =1 Then ZAK1=0 
 
 End

F.T

t2 hocam dediğiniz gibi olduğunu biliyorum.ama o kadar tuhaf işler olunca her yerden kıl kapmaya başladım.bir satırda 1 olan bir bit şartı yerine getiriyor fakat farklı satırda getirmiyor.proteuseta sorunsuz çalışan program karta yüklenince sapıtıyor.proteuseta adım adım progu çalıştırıp inceliyorum tüm şartlar doğru fakat ne oluyosa karta yükleyince çalışmıyor.bendemi sorun protondamı anlamadım gitti.donanım hatam yok.programda 100 özellik varsa 90 tanesinde sıkıntı yok fakat 10 tanesinde bu tip sıkıntılar oluşuyor.
örneğin;
IF T2=1 THEN
SIREN1=1
SIREN2=1
ALARMRLY=1
ENDIF

Bu satırlaarda seren ve alarm relay çekiyor zaman zaman bırakıp tekrar çekiyor.Ne oluyorki....???
Hakk şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

t2

Role nedeniyle sorun çıkıyor olabilir. Gerçek devredeki sorun bundan kaynaklanır.

Bence röle yerine deneme amaçlı,  LED baglarsaniz sorun çıkmaz.
Yine sorun çıkıyorsa,  programı basit halde,adımlar halinde calistiralim. Bit degiskenleri ayrı baytlardan seçelim. Hatta her biri komple bayt olsun.

derleyicide saçmalık olabilir.
Proton zaten çıkış olan pini, yanlışlıkla giriş yapar, sacmalar.
Çıkış aktif etmek için
siren=1 yerine,  mesela
high siren
yazalım daha iyi çalışır.

Veya  siren=1 yerine LATB.1=1 gibi  Lat register kullanılabilir.


F.T

t2 hocam röleler sürekli olarak çekip bırakmıyor.bit değişkenlerini byte olarak değilde bit bazlı yapmıştım.dedğiniz gibi geçenlerde zaten aynı porta ait çıkışları aktif edememe sorunu yaşamıştım.ayn anda aynı portta çıkış yapan iki ayaktan biri aktif oluyor diğeri olmuyordu.bende ayakların yerini farklı iki porta tanımladım sorun çözülmüştü.bu sorunlarımın protondan kaynaklandığını düşünsem insafsızlıkmı yapmış olurum acaba.hatta 3.2.5.5 sürümünde değişken tanımlamasında bayrak1 isimli değişkenin sonundaki 1 den dolayı hatalı olduğu uyarısını aldım.demekki protonun geçmişinde bu tip bir hata var ve düzeltme yoluna gidilmiş ve tamda düzeltilememiş olabilir diye düşünüyorum.acaba kürekten kaynaklı sorunlarmı bunlar oda ayrı bir konu.en stabil sürüm hangisi önerebilirmisin.
Hakk şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

t2

Sonsivride güncel stabil sürüm ve ilacı vardır. Projeye göre deneme yaparak uygun sürüm bulmak gerek. En iyisi hangisi bilmiyorum.

Fakat sizin önceki problemde mantık hatası vardı. port değiştirmekle düzeldi demişsiniz. mantıksız kısmı düzelttiğinize dair hiç bir bilgi edinemedik. aynı hata devam ediyorsa başka portta da sorun çıkar. hatta derleyici değiştirseniz yine sorun çıkar.

hata neydi? bilgisayarını yeni açanlar için özetleyelim:

Portu okuyarak bir pini değiştirerek yeniden yazıyordunuz. Halbuki okunan portda bazı pinde kondansatör varmış. doldu boşaldı durumu oluyor hemen okudunuz geç okudunuz fark ediyordu. işte bu sorunu düzelttiniz mi? bilmiyoruz.

https://www.picproje.org/index.php/topic,59781.msg461963.html#msg461963

Alıntı yapılan: F.T - 11 Haziran 2015, 16:02:39
kapasitörsüz denemeyide yapıp yazarım.