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ı! Paket oluşturmak, kodunuzu farklı programlarda içe aktarılabilen ve kullanılabilen yeniden kullanılabilir modüller halinde düzenlemenize olanak tanır.

Bir paket oluşturmak için, dosyanızın en üstünde package anahtar kelimesi ve ardından paket adını kullanarak bildirim yaparak başlarsınız. Hesap makinesi paketimiz için şunu kullanacağız:

package calculator

Bu paket içinde fonksiyonlar, değişkenler ve tipler tanımlayabilirsiniz. Sadece dışa aktarılan tanımlayıcıların (büyük harfle başlayanlar) diğer paketlerden erişilebilir olacağını unutmayın. İşte dışa aktarılan bir Add fonksiyonunu ş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 fonksiyonları çağırabilirsiniz:

package main

import "calculator"

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

Bu modüler yaklaşım, kodunuzu daha düzenli hale getirir ve kod tekrarı yapmadan işlevselliği birden fazla programda yeniden kullanmanıza olanak tanır.

quiz iconKendini test et

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

quiz iconKendini test et

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

quiz iconKendini test et

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

challenge icon

Görev

Kolay

Temel matematiksel işlemleri içeren özel bir mathutils paketi oluşturun ve ardından bunu ana programınızdan kullanın. Bu meydan okuma, bir paket oluşturma, dışa aktarılan (exported) fonksiyonları tanımlama ve özel paketinizi başka bir programda kullanmak üzere içe aktarma yeteneğinizi test edecektir.

İki girdi alacaksınız:

  • "function1:param1,param2:operation|function2:param1,param2:operation" formatında fonksiyon tanımlarını 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" formatında hesaplama isteklerini içeren bir dize (örneğin, "Add:15,25|Multiply:6,8|Subtract:50,20")

Göreviniz şunları yapmaktır:

  1. En üstte package mathutils bildirerek bir mathutils paketi oluşturun
  2. Bireysel fonksiyon tanımlarını elde etmek için ilk girdiyi pipe (|) karakterine göre ayırarak ayrıştırın
  3. Her fonksiyon tanımı için, fonksiyon adını, parametreleri ve işlem türünü elde etmek üzere iki nokta üst üste karakterine göre ayırın
  4. mathutils paketinizde aşağıdaki dışa aktarılan fonksiyonları 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 - a ve b'nin çarpımını döndürür
    • Divide(a, b int) int - a'nın b'ye bölümünü (tam sayı bölmesi) döndürür
  5. Ana programınızda mathutils paketini içe aktarın
  6. Paket bilgi başlığını görüntüleyin: "=== MATHUTILS PACKAGE DEMO ==="
  7. İlk girdiyi ayrıştırın ve kullanılabilir fonksiyonları görüntüleyin:
    • "Available functions in mathutils package:"
    • Her fonksiyon için: "- [function_name]: Performs [operation_type] on two integers"
  8. Bireysel hesaplama isteklerini elde etmek için ikinci girdiyi pipe karakterine göre ayırarak ayrıştırın
  9. Her hesaplama isteği için, fonksiyon adını ve parametreleri elde etmek üzere iki nokta üst üste karakterine göre ayırın
  10. İki tam sayı değerini elde etmek için parametreleri virgül karakterine göre ayırın
  11. strconv.Atoi kullanarak parametre dizelerini tam sayılara dönüştürün
  12. Hesaplama süreci başlığını görüntüleyin: "Performing calculations:"
  13. Her hesaplama isteği için:
    • mathutils paketinden uygun fonksiyonu çağırın
    • Şunu görüntüleyin: "mathutils.[function_name]([param1], [param2]) = [result]"
  14. Özet istatistikleri 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 onayını görüntüleyin:
    • "Package demonstration completed successfully"
    • "All functions from mathutils package executed correctly"

Girdi dizelerini ayırmak için strings paketini, dizeleri tam sayılara dönüştürmek için strconv paketini ve formatlı çıktı için fmt paketini kullanın. Yalnızca büyük harfle başlayan fonksiyonların dışa aktarılacağını ve diğer paketlerden erişilebilir olacağını unutmayın.

Önemli: Her iki girdi satırı da girişler arasında sınırlayıcı olarak pipe (|) karakterini kullanır. İlk girdideki her giriş FunctionName:param1,param2:operationtype formatındadır — önce | karakterine göre ayırın, ardından fonksiyon adını (indeks 0) ve işlem türünü (indeks 2) çıkarmak için her girişi : karakterine göre ayırın.

Bu meydan okuma, özel paketler aracılığıyla nasıl yeniden kullanılabilir kod oluşturulacağını ve işlevselliğin nasıl mantıksal modüllere ayrılacağını gösterir.

Kopya kağıdı

Özel bir paket oluşturmak için, dosyanızın en üstünde package anahtar kelimesiyle bildirin:

package calculator

Sadece dışa aktarılan tanımlayıcılara (büyük harfle başlayanlar) diğer paketlerden erişilebilir:

package calculator

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

Özel paketinizi başka bir dosyadan içe aktarın ve kullanın:

package main

import "calculator"

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

Bu modüler yaklaşım kodu düzenler ve kod tekrarı yapmadan birden fazla programda yeniden kullanıma olanak tanır.

Kendin dene

package main

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

// TODO: mathutils paket fonksiyonlarınızı burada oluşturun
// Ayrı dosyalar kullanamadığımız için fonksiyonları doğrudan tanımlayın
// Bunlar normalde ayrı bir paket dosyasında olurdu

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

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

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

	// TODO: Kodunuzu aşağıya yazın
	// 1. Add, Subtract, Multiply, Divide fonksiyonlarını tanımlayın (mathutils paketini simüle ederek)
	// 2. functionDefs'i ayrıştırın: her tanımı almak için '|' ile bölün, ardından her birini ':' ile bölün
	//    Format: FonksiyonAdı:parametre1,parametre2:işlem (örneğin "Add:5,3:addition")
	// 3. Paket bilgilerini ve mevcut fonksiyonları görüntüleyin
	// 4. calcRequests'i ayrıştırın ('|' ile bölün), hesaplamaları gerçekleştirin
	// 5. Sonuçları ve özet istatistikleri görüntüleyin

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

	// Yarışmada belirtilen gerekli formatta çıktı vermeyi unutmayın
}
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