Menu
Coddy logo textTech

Basit Bir Paket Oluşturma

Coddy'nin GO Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 53 / 68.

Şimdi kendi özel paketinizi oluşturma zamanı! Paketler oluşturmak, kodunuzu farklı programlarda içe aktarılıp kullanılabilen yeniden kullanılabilir modüller hâlinde düzenlemenizi sağlar.

Bir paket oluşturmak için dosyanızın en üstünde, ardından paket adı gelen package anahtar sözcüğüyle paketi bildirmeye başlarsınız. Hesap makinesi paketimiz için şunu kullanacağız:

package calculator

Bu paket içinde işlevler, değişkenler ve türler tanımlayabilirsiniz. Yalnızca dışa aktarılan tanımlayıcıların (büyük harfle başlayanların) diğer paketlerden erişilebilir olacağını unutmayın. Dışa aktarılan bir Add işlevini şu şekilde tanımlayabilirsiniz:

package calculator

func Add(a, b int) int {
    return a + b
}

Özel paketinizi başka bir dosyadan kullanmak için, onu tıpkı diğer paketler gibi içe aktarırsınız. main paketinizden, ardından dışa aktarılan işlevleri çağırabilirsiniz:

package main

import "calculator"

func main() {
    result := calculator.Add(5, 3)
}

Bu modüler yaklaşım, kodunuzu daha düzenli hâle getirir ve kodu yinelemeden işlevselliği birden çok programda yeniden kullanmanıza olanak tanır.

challenge icon

Görev

Kolay

Temel matematiksel işlemler içeren özel bir mathutils paketi oluşturun ve ardından bunu ana programınızdan kullanın. Bu görev, bir paket oluşturma, dışa aktarılan işlevler tanımlama ve özel paketinizi başka bir programda kullanmak üzere içe aktarma becerinizi test edecektir.

İki girdi alacaksınız:

  • "function1:param1,param2:operation|function2:param1,param2:operation" biçiminde işlev tanımları içeren bir dize (örneğin, "Add:5,3:addition|Multiply:4,7:multiplication|Subtract:10,4:subtraction")
  • "operation1:value1,value2|operation2:value1,value2|operation3:value1,value2" biçiminde hesaplama istekleri içeren bir dize (örneğin, "Add:15,25|Multiply:6,8|Subtract:50,20")

Göreviniz:

  1. Üst kısmına mathutils bildirimi ekleyerek bir package mathutils paketi oluşturun
  2. Bireysel işlev tanımlarını elde etmek için ilk girdiyi dikey çubuklara (|) göre bölerek ayrıştırın
  3. Her işlev tanımı için işlev adını, parametreleri ve işlem türünü elde etmek üzere iki nokta üst üste işaretlerine göre bölün
  4. mathutils paketinizde aşağıdaki dışa aktarılan işlevleri oluşturun:
    • Add(a, b int) int - a ve b'nin toplamını döndürür
    • Subtract(a, b int) int - a eksi b'yi döndürür
    • Multiply(a, b int) int - çarpımı döndürür
    • Divide(a, b int) int - a'nın b'ye bölümünü döndürür (tamsayı bölmesi)
  5. Ana programınızda mathutils paketini içe aktarın
  6. Paket bilgisi başlığını görüntüleyin: "=== MATHUTILS PACKAGE DEMO ==="
  7. İlk girdiyi ayrıştırın ve kullanılabilir işlevleri görüntüleyin:
    • "Available functions in mathutils package:"
    • Her işlev için: "- [function_name]: Performs [operation_type] on two integers"
  8. Bireysel hesaplama isteklerini elde etmek için ikinci girdiyi dikey çubuklara göre bölerek ayrıştırın
  9. Her hesaplama isteği için işlev adını ve parametreleri elde etmek üzere iki nokta üst üste işaretlerine göre bölün
  10. İki tamsayı değerini elde etmek için parametreleri virgüllere göre bölün
  11. Parametre dizelerini strconv.Atoi kullanarak tamsayılara dönüştürün
  12. Hesaplama işlemi başlığını görüntüleyin: "Performing calculations:"
  13. Her hesaplama isteği için:
    • mathutils paketindeki uygun işlevi çağırın
    • Şunu görüntüleyin: "mathutils.[function_name]([param1], [param2]) = [result]"
  14. Özet istatistiklerini hesaplayın ve görüntüleyin:
    • "Calculation Summary:"
    • "Total calculations performed: [number_of_calculations]"
    • "Functions used: [comma_separated_list_of_unique_function_names_used]"
    • "Sum of all results: [sum_of_all_calculation_results]"
  15. Paket kullanımını onaylayın:
    • "Package demonstration completed successfully"
    • "All functions from mathutils package executed correctly"

Girdi dizelerini bölmek için strings paketini, dizeleri tamsayılara dönüştürmek için strconv paketini ve biçimlendirilmiş çıktı için fmt paketini kullanın. Yalnızca büyük harfle başlayan işlevlerin dışa aktarılacağını ve diğer paketlerden erişilebilir olacağını unutmayın.

Önemli: Her iki girdi satırı da girdiler arasındaki sınırlayıcı olarak dikey çubukları (|) kullanır. İlk girdideki her giriş FunctionName:param1,param2:operationtype biçimindedir: önce | karakterine göre, ardından işlev adını (indeks 0) ve işlem türünü (indeks 2) çıkarmak için her girişi : karakterine göre bölün.

Bu görev, özel paketler aracılığıyla yeniden kullanılabilir kodun nasıl oluşturulacağını ve işlevselliğin mantıksal modüller hâlinde nasıl düzenleneceğini gösterir.

Kendin dene

package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
	"strings"
)

// TODO: Create your mathutils package functions here
// Ayrı dosyalar kullanamadığımız için fonksiyonları doğrudan tanımla
// Bunlar normalde ayrı bir paket dosyasında olurdu

func main() {
	// Boşlukları düzgün işlemek için bufio.Scanner kullanarak girdi oku
	scanner := bufio.NewScanner(os.Stdin)

	scanner.Scan()
	functionDefs := scanner.Text()

	scanner.Scan()
	calcRequests := scanner.Text()

	// TODO: Kodunu aşağıya yaz
	// 1. Define Add, Subtract, Multiply, Divide functions (simulating mathutils package)
	// 2. functionDefs'i ayrıştır: her tanımı almak için '|' ile böl, sonra her birini ':' ile böl
	//    Biçim: FuncName:param1,param2:operation  (ör. "Add:5,3:addition")
	// 3. Display package information and available functions
	// 4. Parse calcRequests (split by '|'), perform calculations
	// 5. Sonuçları ve özet istatistikleri görüntüle

	// Kullanılmayan değişken uyarılarını bastır
	_ = functionDefs
	_ = calcRequests
	_ = fmt.Sprintf
	_ = strconv.Atoi
	_ = strings.Split

	// Challenge'da belirtildiği gibi gerekli formatı çıktılamayı unutma
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık ve Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online Go derleyicisi