- Çok dallı koşullar ve
?()ifadesi yazmak - Göreve uygun döngüyü seçmek,
ПрерватьveПродолжитьkullanmak - Prosedür ve fonksiyon yazmak, parametrelerin nasıl aktarıldığını açıklamak
Bir mağaza 200 manatın üzerindeki alışverişlere %5, 500 manatın üzerindekilere %10 indirim yapıyor. Faturada yüz satır var ve her satırın tutarı hesaplanmalı. Bu tür görevler için programın karar vermesi (koşullar), işleri tekrarlaması (döngüler) ve kodu parçalara bölmesi (prosedürler ve fonksiyonlar) gerekir.
Koşullar
СуммаПокупки = 250;
Если СуммаПокупки >= 500 Тогда
Скидка = 10;
ИначеЕсли СуммаПокупки >= 200 Тогда
Скидка = 5;
Иначе
Скидка = 0;
КонецЕсли;
Сообщить("Скидка: " + Скидка + "%");
Остаток = 0;
Статус = ?(Остаток > 0, "В наличии", "Нет в наличии");
Сообщить(Статус);Скидка: 5% Нет в наличии
Если = If, Тогда = Then, ИначеЕсли = ElsIf, Иначе = Else, КонецЕсли = EndIf.Dallar yukarıdan aşağıya kontrol edilir ve ilk doğru koşul çalışır; bu yüzden 250 için %5 çıktı. ?(Koşul, A, B) kısa biçimdir: koşul doğruysa A'yı, değilse B'yi döndürür. Karmaşık koşullar И, ИЛИ, НЕ ve parantezlerle kurulur: Если (Сумма > 100 И НЕ Оплачено) ИЛИ Срочно Тогда.
Üç tür döngü
| Döngü | İngilizcesi | Ne zaman |
|---|---|---|
Для Н = 1 По 10 Цикл … КонецЦикла | For … To … Do … EndDo | tekrar sayısı önceden bilinir |
Для Каждого Эл Из Коллекция Цикл | For Each … In … Do | bir koleksiyonun tüm öğelerini dolaşmak |
Пока Условие Цикл … КонецЦикла | While … Do … EndDo | koşul doğru olduğu sürece tekrarlamak |
Для Н = 1 По 10 Цикл
Если Н % 2 = 1 Тогда
Продолжить; // нечётные пропускаем
КонецЕсли;
Если Н > 8 Тогда
Прервать; // выходим из цикла
КонецЕсли;
Сообщить(Н);
КонецЦикла;
Города = СтрРазделить("Bakı,Gəncə,Şəki", ",");
Для Каждого Город Из Города Цикл
Сообщить(Город);
КонецЦикла;2 4 6 8 Bakı Gəncə Şəki
Продолжить (Continue) sonraki adıma geçer, Прервать (Break) döngüyü hemen bitirir.1000 manatlık bir mevduat her yıl %10 büyüyor. Kaç yıl sonra tutar ilk kez 2000 manata ulaşır ya da onu aşar? Пока (While) döngüsüyle çöz.
Çözümü gösterÇözümü gizle
Вклад = 1000; Лет = 0;Пока Вклад < 2000 Цикл Вклад = Вклад * 1.1; Лет = Лет + 1; КонецЦикла;7 yıl sonra: 1000 · 1,1⁷ ≈ 1948,7 < 2000.
8 yıl sonra: 1000 · 1,1⁸ ≈ 2143,6 ≥ 2000.
Cevap: 8 yıl. Tekrar sayısı önceden bilinmediği için burada en uygun döngü
Пока'dır.Prosedürler ve fonksiyonlar
Prosedür (Процедура … КонецПроцедуры) bir işlem yapar, fonksiyon (Функция … КонецФункции) ise Возврат (Return) ile bir değer döndürür. Parametrelerin varsayılan değerleri olabilir. Экспорт (Export) sözcüğü prosedürü diğer modüllerden çağrılabilir yapar, örneğin: РаботаСЦенами.СуммаСоСкидкой(200, 5).
Функция СуммаСоСкидкой(Сумма, ПроцентСкидки = 0) Экспорт
Возврат Сумма - Сумма * ПроцентСкидки / 100;
КонецФункции
Процедура Удвоить(Значение)
Значение = Значение * 2;
КонецПроцедуры
Процедура УдвоитьКопию(Знач Значение)
Значение = Значение * 2;
КонецПроцедуры
Процедура Тест()
Сообщить(СуммаСоСкидкой(200, 5));
Сообщить(СуммаСоСкидкой(80));
А = 5;
Удвоить(А);
Б = 5;
УдвоитьКопию(Б);
Сообщить(А);
Сообщить(Б);
КонецПроцедуры190 80 10 5
А değişti); Знач (Val) ise bir kopya aktarır (Б değişmedi).Prosedürler ve fonksiyonlar her zaman bir modülde bulunur. Modülün türü kodun ne zaman ve nerede çağrılacağını belirler; bu yüzden yeni bir prosedür yazmadan önce ona doğru “evi” seç:
- Ortak modül (
Общие модули) — tüm konfigürasyonun paylaştığı kod; çağrı:ИмяМодуля.Процедура(). - Nesne modülü — belirli bir katalog öğesinin veya belgenin olayları (yazma, işleme).
- Yönetici modülü — tüm tür için fonksiyonlar:
Документы.РасходТовара.ПечатнаяФорма(). - Form modülü — bir formun olayları ve komutları; bir sonraki modülde ayrıntılı inceleyeceğiz.
- Uygulama ve oturum modülleri — programın başlangıcı ve oturum parametreleri.
Önemli noktalar
Если … ИначеЕсли … Иначе … КонецЕсли: ilk doğru dal çalışır;?(K, A, B)kısa biçimdir.- Döngüler:
Для … По,Для Каждого … Из,Пока; hepsiКонецЦиклаile biter. Прерватьdöngüden çıkar,Продолжитьsonraki adıma geçer.- Fonksiyon
Возвратile değer döndürür; prosedür döndürmez. - Parametreler referansla aktarılır;
Значkopya aktarır,Экспортprosedürü diğer modüllere açar.
Kendini test et
10 soru. Her doğru cevap XP kazandırır.
?(3 > 5, "A", "B") ifadesi ne döndürür?