Module: Alt programlar: prosedürler ve işlevler - 1


Problem

12/12

Bağımsız Değişkenleri Değiştirme

Theory Click to read/hide

Sorun: iki değişkenin değerlerini değiştiren bir prosedür yazın.
Bu görevin özelliği, çağıran program tarafından bilinmek için prosedürde yapılan değişikliklere ihtiyaç duymamızdır.

Prosedürü şöyle yazmaya çalışalım:

var x, y: tamsayı;

prosedür Swap(a, b: tamsayı); // prosedür parametrelerinin böyle bir açıklaması ile,
var c: tamsayı;
başla // bağımsız değişkenlerin (x ve y) değerlerini kopyalar
                      // a ve b değişkenleri, x ve y ile ilgili olmayan bağımsız değişkenlerdir
c := bir;
bir := b;
b := c;
son;

başlamak
  x := 1;
  y := 2;
  Değiştir(x, y); //x ve y değişkenlerinin (argümanlar) değerleri a ve b parametrelerine kopyalanır
  writeln('x = ', x, ', y = ', y); // x=1, y=2
son.
Bu programı çalıştırırsanız x ve y değişkenlerinin değerlerinin değişmediğini görebilirsiniz. Parametrelerin bağımsız değişkenlerin değerlerini değiştirmesi için verileri başvuruya göre iletmeyi kullanmalısınız.Bunu yapmak için, veri türünün adından sonra alt programın başlığına var  kelimesini koymalısınız
prosedür Swap(var a, b: integer);   // şimdi a ve b değişkenleri bellekteki x ve y değişkenlerinin adreslerini alıyor
var c: tamsayı; 
başlamak
c := bir;
bir := b;
b := c;
son;
Kullanım: Bir bağımsız değişkeni referans olarak iletirseniz, prosedür çağrılırken bu yerde yalnızca değişken adı (bir sayı ve bir aritmetik ifade DEĞİL) bulunabilir!< br />
Şunun gibi bir prosedür ÇAĞRILAMAYIN:
Swap(x, 4);
Swap(5+x, y);

Problem

İki değişkenin değerlerini değiştiren bir prosedür yazın.

Bu prosedürdeki hataları bulun ve düzeltin