x

Ana bölümler

  1. LimeSurvey Cloud ve LimeSurvey CE karşılaştırması
  2. Hızlı başlangıç kılavuzu - LimeSurvey 3.0+
  3. Kurulum - LimeSurvey CE
  4. İyi bir anket nasıl tasarlanır (kılavuz)
  5. Başlarken
  6. LimeSurvey'i Yönetme
  7. Anketler - giriş
  8. Anket ayarları
  9. Anket menüsü
  10. Anket yapısı
  11. Sorular - giriş
  12. Soru grupları - giriş
  13. Anketler - yönetim
  14. Anket araç çubuğu seçenekleri
  15. Çok dilli anket
  16. ExpressionScript Motoru - Hızlı başlangıç kılavuzu
  17. Kategorize edilmemiş ve gelişmiş özellikler
  18. Genel SSS
  19. Sorun giderme
  20. Geçici çözümler
  21. Lisans
  22. Sürüm değişiklik günlüğü
  23. Eklentiler
 Actions

ExpressionScript örnekleri

From LimeSurvey Manual

Bu sayfa makine çevirisiyle çevrilmiş olabilir ve hatalar içerebilir. İngilizce orijinali göster · Bu çeviriyi iyileştir
This page is a translated version of the page ExpressionScript examples and the translation is 100% complete.
Lütfen bu makalenin genişletilmesine yardımcı olun. Kendi örneklerinizi ekleyerek başkalarının İfade betiğini kullanmaya başlamasına katkıda bulunabilirsiniz.


Yapı

Makalenin ilk bölümünde ifadelerin ne için kullanılabileceği ve bir ifadenin nerede bulunacağı/ekleneceği açıklanmaktadır. İkinci bölümde ise ifadelerin nasıl kullanılacağına ilişkin örnekler yer almaktadır.


İfade kategorileri

LimeSurvey, ifadeleri aşağıdaki amaçlarla kullanır:


İlinti

Amaç: Soru gruplarını/soruları gizlemek

İlinti, bir soru grubunun veya sorunun gösterilip gösterilmeyeceğini belirler. İfadenin sonucu "true" (yani 1) ise öğe gösterilir. Aksi halde (ifadenin sonucu "false" (yani 0) ise) öğe gizlenir.

Tür Gösterir/gizler Nerede bulunur Ekran görüntüsü
Soru grubu ilintisi soru grubu Soru grubu oluştur/düzenle -> "İlinti denklemi:"
Soru ilintisi soru Soru oluştur/düzenle -> "İlinti denklemi:"
Alt soru ilintisi alt soru Alt soruları düzenle -> "İlinti denklemi:"


Geçerlilik

Amaç: Sorular/alt sorular/yanıtlar üzerindeki girdileri/işlemleri doğrulamak

Geçerlilik, yanıtlayıcının bir soruya girdiği verinin veya yaptığı işlemin geçerli olup olmadığını denetler. İfadenin sonucu "true" (yani 1) ise öğeye ve geçerlilik iletisine "good" sınıfı uygulanır. Aksi halde, ifadenin sonucu "false" (yani 0) ise öğeye ve geçerlilik iletisine "error" sınıfı uygulanır. Bu sınıflar için bir biçem template.css dosyasında tanımlayabilirsiniz.

Tür Doğrular Nerede bulunur Ekran görüntüsü
Soru geçerliliği soru Soru oluştur/düzenle -> "Mantık sekmesi" -> "Soru geçerliliği denklemi"
Alt soru geçerliliği alt sorular Soru oluştur/düzenle -> "Mantık sekmesi" -> "Alt soru geçerliliği denklemi" ‎

Yazı çıktısı

Amaçlar: (Bir işlem yapmak ve) bir yazı çıktısı vermek

Bir ifade, bir yazı çıktısı vermek için kullanılabilir. Örneğin bir şeyi sınayabilir veya hesaplayabilir ve çıktıyı sınamanın ya da hesaplamanın sonucuna göre belirleyebilirsiniz. Ayrıca ifadeden önce kullanılan bir sorunun soru yazısını, yanıtlarını, soru türlerini vb. eklemek için de kullanılabilir. Yazı çıktısı, bir yazının gösterildiği her yerde kullanılabilir ve her türlü sonucu döndürebilir.

Kullanım durumu Açıklama
Mikro uyarlama Bir yazıyı uyarlayın; örneğin daha önce sorulan bir cinsiyet sorusuna göre "Bay" veya "Bayan" yazın
Hesaplama Bir değeri hesaplayıp yazdırın; örneğin "Aile geliriniz xxx"
Başvuru Bir öğeden yazı ekleyin; örneğin "Adınız xxx. Kaç yaşındasınız?"


Yanıtların saklanması

Amaçlar: (Bir işlem yapmak,) (bir yazı çıktısı vermek) ve veritabanında bir şey saklamak

Denklem soru türü, veritabanında bir şey saklamak için kullanılabilir. Bir ifadeyle bir işlem yapabilir, Denklem sorusunu (yazı görünümü ile benzerdir) gösterebilir ve ifadenin sonucunu veritabanında saklayabilirsiniz. Yanıt, yanıtlar tablosuna kaydedilir. Ardından sonuç istatistik özelliğinde kullanılabilir veya LimeSurvey dışa aktarma işlevinin sunduğu biçimlerden birine aktarılabilir.

İfade örnekleri

Önceki bir sorudan yanıt eklemek

Amaç Önceki bir sorudan yanıt eklemek
Tür Başvuru
Örnek Birinci soru (soru kodu "Q00"): Hangi şehirde yaşıyorsunuz?
İkinci soru (soru kodu "Q01"): CITY şehrinde ne kadar zamandır yaşıyorsunuz?
Yapılacak: İkinci sorudaki "CITY" yerine birinci sorunun yanıtı kullanılmalıdır.
İfade {QOO}
Açıklama Q00'da verilen yanıt, ikinci sorudaki Q00 alanının yerine geçer
Adımlar İkinci soruyu oluşturun/düzenleyin
Soru yazısı alanına "{QOO} şehrinde kaç yıldır yaşıyorsunuz (yıl)?" yazısını ekleyin

Bir yanıtı otomatik doldurmak için gizli denklem sorusu kullanmak

Sorun: Q1 ve Q2 adlı iki sorunuz olduğunu düşünün. Q1, yanıtlayıcılara yaşlarını sorar. Q2 ise yanıtlayıcıları üç gruba ayırır: yaş 20'nin altında, yaş 20, yaş 20'den büyük. Bu nedenle Q2, yukarıdaki koşullara karşılık gelen "1", "2", "3" değerlerini kullanmalıdır. Ayrıca Q2'yi görünmez yapmayı da unutmamalıyız (soru ankette görüntülenmez, ancak değerler "arka plan işlemi" ile yanıtlar tablosunda yer alır).

Denklem soru türünü kullanarak veritabanını doldurmak için:

  • Önce Q1 kodlu bir soruyu Sayısal giriş sorusu olarak oluşturun.
  • Ardından Q2 kodlu başka bir soruyu Denklem sorusu olarak oluşturun.
  • Q2'nin "Görünüm ayarları" sekmesinde:
    • "Bu soru her zaman gizlensin" alanını "Açık" olarak ayarlayın
    • "Denklem" alanına şu ifadeyi yazın:
{if(Q1.NAOK < 20, "1", if(Q1.NAOK > 20, "3", "2"))}

Yer tutucuları kullanarak özet sayfası oluşturmak

Bu eğitimde, anketin sonunda tüm soruları ve yanıtları ExpressionScript yer tutucuları aracılığıyla listeleyen bir özetin nasıl oluşturulabileceği gösterilmektedir. Ayrıca böyle bir özetin yalnızca yanıtlanan sorularla nasıl sınırlandırılacağı da anlatılmaktadır.

Örneğimizi buradan indirebilirsiniz: Yer tutucular anket örneği.


Burada kullanılan soru türleri:

1. Bir seçimli sorular / tek yazı/sayısal sorular

  • Liste (açılan)
  • Liste (radyo) [L]
  • Evet/Hayır [Y]
  • Uzun serbest yazı [T]
  • Kısa serbest yazı [S]
  • Sayısal giriş [N]
  • Denklem [*]


2. Alt sorulu sorular

  • Birkaç kısa yazı [Q]
  • Birkaç seçim [M]
  • Dizi [F]
  • Dizi (Evet/Hayır/Kararsız) [C]
  • Dizi (10 noktalı seçim) [B]


3. 2 ölçekli sorular

  • Çift ölçekli dizi [1]


4. X ve Y ölçekli sorular

  • Dizi (Rakamlar) [:]


5. Kalıp sorular

  • Yazı görünümü [X]


Bu basit örnekte özetimiz şu biçimde basit bir liste olacaktır:

- Soru yazısı: Kullanıcının yanıtı


Bir seçimli sorular / tek yazı/sayısal sorular

Tüm bu soru türleri için LimeSurvey tek bir yanıt saklar:

  • Liste (açılan)
  • Liste (radyo)
  • Açıklamalı liste
  • 5 noktalı seçim
  • Evet/Hayır
  • Kısa serbest yazı
  • Uzun serbest yazı
  • Çok uzun serbest yazı
  • Sayısal giriş
  • Denklem
  • Tarih
  • Cinsiyet

Sorunun soru kodunun q1 olduğunu varsayarsak, soru yazısına ve yanıta şunu kullanarak başvurabiliriz:

- {q1.question}: {q1.shown}

Örnek:

- Kaç yaşındasınız?: 25


Sorunun yanıtlanıp yanıtlanmadığını kontrol etmek istiyorsanız, çıktınızın etrafına bir IF ifadesi koyabilirsiniz:

{if(!is_empty(q1),join("- ",q1.question,": ",q1.shown),"")}

Bu ifade şu anlama gelir: EĞER q1 kodlu soru boş değilse, "- " VE soru yazısı VE ": " VE yanıt yazısını çıktı olarak ver (join() işlevi öğeleri yeni bir dize olarak birleştirir); DEĞİLSE: hiçbir şey çıktılama ("" boş dize anlamına gelir).

Alt sorulu sorular

Tüm bu soru türleri için LimeSurvey alt soruları kullanır:

  • Birkaç kısa yazı
  • Birkaç seçim
  • Açıklamalar ile birkaç seçenek
  • Dizi
  • Dizi (5 noktalı seçim)
  • Dizi (10 noktalı seçim)
  • Dizi (Evet/Hayır/Kararsız)
  • Dizi (Artış/Aynı/Düşüş)
  • Sütuna göre dizi

Sorunun soru kodunun q2 ve alt soruların SQ001, SQ002 şeklinde numaralandırıldığını (otomatik numaralandırma LimeSurvey tarafından yapılır) varsayarsak, soru yazısına ve yanıta şunu kullanarak başvurabiliriz:

- {q2_SQ001.question}: {q2_SQ001.shown}

- {q2_SQ002.question}: {q2_SQ002.shown}

Birkaç seçimli sorularda, işaretlenen alt sorunun yazısını göstermek yerine seçilen her seçenek için bir Y göstermek mantıklıdır:

- {q2_SQ001.question}: {q2_SQ001}

- {q2_SQ002.question}: {q2_SQ002}

...

Şu anda alt sorulu soruların soru yazısını çıktılamanın mümkün olmadığını unutmayın, bkz. bu özellik isteği.


Örnek 1 (soru türünün Birkaç seçim olduğu varsayılarak)

- Bu araba markalarını biliyor musunuz?

-- Mercedes: Y

-- Audi: N

-- Volvo: Y


Yalnızca işaretlenmiş ögeleri çıktı olarak almak istiyorsanız, çıktınızın etrafına bir IF ifadesi ekleyip onay kutusunun değerini kontrol edebilirsiniz:

{ if( q2_SQ001=="Y", join( "- ", q2_SQ001.question, ": ", q2_SQ001.shown ), "" ) }


Yalnızca Seçilmiş ögelerin listesini çıktı olarak almak istiyorsanız listifop işlevini kullanın, örneğin: Mercedes, Volvo

{ listifop( 'value', '==', 'Y', 'question', ', ', that.q2.sgqa ) }


Burada  that.q2 , q2'nin tüm alt sorularına genişler. Daha fazla ayrıntı için bkz. self, this ve that.


Örnek 2 (soru türünün Dizi (10 noktalı seçim) olduğu varsayılarak)

- Lütfen aşağıdaki araba markalarının kalitesini 1=çok kötü ile 10=çok iyi arasındaki bir ölçekte derecelendirin?

-- Mercedes: 7

-- Audi: 9

-- Volvo: 9


Yalnızca derecelendirilmiş ögeleri çıktı olarak almak istiyorsanız, çıktınızın etrafına bir IF ifadesi ekleyip geçerli alt sorunun yanıtlanıp yanıtlanmadığını şu şekilde kontrol edebilirsiniz:

{ if( ! is_empty( q3_SQ001 ), join( "- ", q3_SQ001.question, ": ", q3_SQ001.shown ), "" ) }


Örneğin yalnızca sekizden büyük Seçilmiş ögelerin listesini çıktı olarak almak istiyorsanız listifop işlevini kullanın, örneğin: Audi / Volvo

{ listifop( 'value', '>', 8, 'question', ' / ', that.q3.sgqa ) }


İki ölçekli soru

Bu yalnızca çift ölçekli soru türü için geçerlidir.


Aşağıdaki kodların kullanıldığını varsayalım:

  • Soru kodu: q4
  • Alt soru kodları: SQ001, SQ002, ...
  • Ölçek 1 Yanıt kodları: A1, A2, ...
  • Ölçek 2 Yanıt kodları: B1, B2, ...


Belirli bir ölçekteki belirli bir alt sorunun sonucuna başvurmak için QuestionCode . '_' . SubQuestionCode . '_' . ScaleID biçimini kullanmanız gerekir. "ScaleID" değerinin ilk ölçek için 0, diğeri için 1 olduğunu unutmayın!
Üçüncü alt sorunun ve ikinci ölçeğin yanıtına başvuru örneği: q4_SQ003_1 - Soru 4, alt soru 3, ikinci ölçek.


Her iki ölçek ve ilk iki alt soru için sonuçları çıktı olarak alalım:

- {q4_SQ001_0.question}: {q4_SQ001_0.shown} / {q4_SQ001_1.shown}

- {q4_SQ002_0.question}: {q4_SQ002_0.shown} / {q4_SQ002_1.shown}

Alt soru metnini çıktı olarak almak için yer tutucuya ölçek kimliğini eklemeniz gerekir (metinler her iki ölçek için de aynı olsa da). Bu nedenle {q4_SQ001.question} yerine {q4_SQ001_0.question} veya {q4_SQ001_1.question} kullanmamız gerekir.

Alt soruların sonuçlarını yalnızca en az bir yanıt içerenler için dışa aktarmak/görüntülemek istiyorsanız, her alt soru için şu sözdizimini kullanın:

{if(count(q4_SQ001_0,q4_SQ001_1)>0,join("- ",q4_SQ001_0.question,": ",q4_SQ001_0.shown," / ",q4_SQ001_1.shown),"")}

X ve Y ölçekli soru

Bu, her hücre için yanıta izin veren (daha önce gösterildiği gibi yalnızca her satır için değil) tüm matris sorular için geçerlidir:

  • Dizi (Metinler)
  • Dizi (Rakamlar)


Kullanıldığı varsayılan kodlar:

  • Soru kodu: q5
  • Alt soru kodları: SQ001, SQ002, ...
  • Yanıt kodları: A1, A2, ...

Belirli bir sütundaki belirli bir alt sorunun sonucuna başvurmak için QuestionCode . '_' . SubQuestionCode . '_' . AnswerCode biçimini kullanmanız gerekir. Üçüncü alt sorunun ve ikinci sütunun yanıtına başvurmak için örnek: q5_SQ003_A2.

İlk iki alt sorunun 1-3. sütunlarının sonuçlarını çıktı olarak verelim:

- {q5_SQ001_A1.question}: {q5_SQ001_A1.shown} | {q5_SQ001_A2.shown} | {q5_SQ001_A3.shown}

- {q5_SQ002_A1.question}: {q5_SQ002_A1.shown} | {q5_SQ002_A2.shown} | {q5_SQ002_A3.shown}


Bu soru türlerinde her hücre (X ekseni ve Y ekseni kombinasyonu) bir yanıt seçeneğine karşılık geldiğinden, mevcut verilerin kontrolü her hücre için yapılmalıdır. Örnek:

{if(!is_empty(q5_SQ001_A1),join("- ",q5_SQ001_A1.question,": ",q5_SQ001_A1.shown),"")}


Alt soru metnini çıktı olarak vermek için yer tutucuya yanıt kodunu eklemeniz gerekir (metinler tüm yanıt seçenekleri için aynı olsa da). Bu nedenle {q5_SQ001.question} yerine {q5_SQ001_A1.question} veya {q5_SQ001_A2.question} kullanmamız gerekir.

Önceki sorunun yanıtı boşsa soruyu gizleme

Amaç Önceki sorunun yanıtı boşsa soruyu gizleme
Tür Soru ilintisi
Örnek Birinci soru: soru kodu "name", soru yazısı "Adınız nedir?"
İkinci soru: soru yazısı "{name}, kaç yaşındasınız?"
Yapılacak: Birinci sorunun metin alanı boşsa ikinci soruyu gizle
İfade !is_empty(name)
Açıklama is_empty() bir değişkenin boş kabul edilip edilmediğini belirler. "!" sonucu tersine çevirir. Dolayısıyla değişken boş değilse ifade doğru olur ve soru gösterilir
Adımlar İkinci soruyu oluşturun/düzenleyin
"İlinti denklemi:" alanına "!is_empty(name)" yazın
Örnek dosya Hide_question_if_empty_question_group.zip


Önceki sorunun yanıtı Evet veya Hayır ise soru grubunu gizleme

Amaç Önceki sorunun yanıtı Evet veya Hayır ise soru grubunu gizleme
Tür Soru grubu ilintisi
Örnek Birinci sayfa, birinci soru grubu, birinci soru: soru kodu "PET", soru yazısı "Evcil hayvanınız var mı?" -Evet -Hayır
İkinci sayfa, ikinci soru grubu: Başlık "Evcil hayvanlarınız hakkında"
Yapılacak: Birinci sorunun yanıtı Evet/Hayır ise ikinci soru grubunu göster/gizle
İfade PET == "Y"
Açıklama PET, yanıtını kontrol etmek istediğiniz sorunun soru kodudur. Bir son ek kullanmazsanız EM "Qcode.code" kullanır. Böylece PET sorusunun yanıt kodunu "Y" değeriyle karşılaştırırsınız. Katılımcı "Evet" yanıtını verirse ifade doğru olur ve "Evcil hayvanlarınız hakkında" soru grubu gösterilir.
Adımlar İkinci soru grubunu oluşturun/düzenleyin
"İlinti denklemi:" alanına "PET == "Y"" yazın
Örnek dosya Hide_question group_if_answer_from_previous_question_is_Yes_or_No.zip


Çoklu yanıt girişli soru alanının değerini görüntüleme

Amaç Çoklu yanıt girişli soru alanının değerini görüntüleme
Tür Başvuru
Örnek Birinci soru: soru kodu "AskChildAge", soru yazısı "Çocuklarınız kaç yaşında?". Alt soru kodları -Child1 -Child2 -Child3 - ChildXXX
İkinci soru: soru kodu "ReportChildAge", soru yazısı "İlk çocuğunuz hakkında: - CHILD1 AGE1 yaşında."
İfade {AskChildAge_Child1.question}, {AskChildAge_Child1.value}
Açıklama Bir alt sorunun değerini sonraki bir soruda kullanmak istiyorsunuz. Alt soru değerine şu tür bir ifadeyle erişebilirsiniz: QcodeQuestion_QcodeSubquestion.value
Adımlar İkinci soruyu oluşturun/düzenleyin
Açıklamaya şu metni ekleyin: "İlk çocuğunuz hakkında: - {AskChildAge_Child1.question} {AskChildAge_Child1.value} yaşında."
Örnek dosya Display_value_of_a_multiple_answer_input_question_field.zip

"Dizi (Rakamlar) İşaret kutusu" sorusunda satır başına işaretlenen kutu sayısını doğrulama

Amaç Satır başına işaretlenen kutu sayısını doğrulama
Tür Doğrulama
Örnek "Dizi (Rakamlar) (İşaret kutusu yerleşimi)" türünde soru
İfade sum(...)
Açıklama (sum(Test_A_1, Test_A_2, Test_A_3, Test_A_4, Test_A_5) <= X) ifadesi, A satırında en az X işaret kutusunun işaretlenip işaretlenmediğini belirler.
Üç satırın (A, B, C) tümünü kontrol etmek isterseniz ifadeyi "&&" ile birleştirebilirsiniz:
(sum(Test_A_1, Test_A_2, Test_A_3, Test_A_4, Test_A_5) <= X)
&& (sum(Test_B_1, Test_B_2, Test_B_3, Test_B_4, Test_B_5) <= X)
&& (sum(Test_C_1, Test_C_2, Test_C_3, Test_C_4, Test_C_5) <= X)
Adımlar "Dizi (Rakamlar) (İşaret kutusu yerleşimi)" türünde bir soru oluşturun/düzenleyin.
Yukarıdaki ifadeyi gelişmiş soru ayarlarındaki "Soru geçerliliği denklemi" alanına ekleyin (değişken adlarını uyarlamanız gerekebilir!).
Örnek dosya Validate number of boxes ticker per row for an Array (Numbers) Checkbox.lss

İki tarih arasındaki farkı hesaplama

Amaç İki tarih arasındaki farkı hesaplama
Tür İlinti / Denklem soru türü / Doğrulama
Örnek Birinci soru (tarih/saat, kod: DOB): Doğum tarihiniz nedir?
İkinci soru (tarih/saat, kod: datetoday): Bugünün tarihi nedir?
Üçüncü soru (boilerplate): XXXX günlüksünüz.
Yapılacak: 1. soruda verilen tarih ile 2. soru arasındaki gün sayısını hesapla ve görüntüle.
İfade {(strtotime(datetoday)-strtotime(DOB))/60/60/24}
Açıklama strtotime, 1 Ocak 1970 ile verilen tarih arasındaki saniye sayısını hesaplar. Yukarıdaki ifade, verilen iki tarih arasındaki saniye sayısını hesaplar. "/60/60/24" terimi ise saniye sayısından gün sayısını hesaplar.
"datetoday" değerini sormak yerine strtotime('now') veya doğrudan Ocak 1970'ten şimdiye (yani anketin yapıldığı ana) kadar geçen saniye sayısını döndüren time() işlevini de kullanabilirsiniz. Böylece bir kişinin yaşını {(time() - strtotime(DOB)) / 60 / 60 / 24 / 365.25} denklemiyle hızlıca yıl olarak bulabilirsiniz. Bu durumların hepsinde tarihin uygun bir biçimde girilmesi çok önemlidir; aksi halde strtotime() işlevi doğru çalışmaz.
Adımlar İki tarih sorusu (doğum tarihi ve bugünün tarihi için) ile bir boilerplate sorusu oluşturun.
Boilerplate sorusunun soru yazısına şunu ekleyin: "{datetoday} tarihinde {(strtotime(today)-strtotime(dob))/60/60/24} günlüktünüz."

Lütfen unutmayın: strtotime işlevi ÇOK sayıda tarih biçimiyle çalışabilir ancak hepsiyle değil. Sorun yaşarsanız anketinizin tarih biçimini mm/dd/yyyy, yyyy-mm-dd veya dd.mm.yyyy olarak ayarlayın."
Örnek dosya Date_difference.zip

Değerlendirmeler için ExpressionScript kullanımı

İşte ExpressionScript'in Dizi türü sorular ve değerlendirmelerle nasıl kullanılacağına dair başka bir örnek:</ br>

Diyelim ki 2 dizi sorunuz var ve hesaplama sonuçlarını veritabanınıza kaydetmek istiyorsunuz. Aslında çok basit; dizilerinizi oluşturup test etmeniz ve çalışıp çalışmadığını görmek için sahte bir yanıt göndermeniz yeterlidir; sonuçları tamamlanma sayfasında görürsünüz.


Uygulama ayrıntıları:

  • denklem türünde bir soru ekleyin
  • Q1'in dizi sorunuzun soru kodu, Q2'nin ise ikinci soru olduğunu varsayarak aşağıdaki satırı ekleyin:
    • {sum(Q1_SQ001.value,Q2_SQ001.value)}

SQ001'in herhangi bir alt soru için varsayılan kod olduğunu unutmayın. Alt soru kodunu değiştirirseniz yukarıdaki denklemi buna göre uyarlayın.


Dizide em_validation_q kullanımı

Bir diziyi herhangi bir koşulla denetlemek için soru geçerliliği denklemi özelliğini kullanabilirsiniz.


Uygulama ayrıntıları:

  • birinci dizi için: tekli seçim dizisi
    • Soru kodu ARRAY
    • Alt soru kodları SQ01, SQ02, SQ03 ve SQ04
    • Tüm soru için geçerlilik denklemini güncelleyin ve şunu yazın:
      !is_empty(ARRAY_SQ01) and !is_empty(ARRAY_SQ03) 
  • ikinci dizi için: metin dizisi
    • Soru kodu ARRAYTEXT
    • Y eksenindeki alt soru kodları SY01, SY02, SY03 ve SY04
    • Tüm soru için geçerlilik denklemini güncelleyin ve şunu yazın:
      count(self.sq_SY01 >= 1) and count(self.sq_SY03 >= 3)