4. Hafta Uygulama Dokümanı

BM102 BİLGİSAYAR PROGRAMLAMA II
LABORATUVAR UYGULAMALARI
4. Hafta
Ön bilgi:


1.
Özyineli fonksiyon tanımlanabilmeli.
Dizilerin fonksiyon parametresi veya geri dönüş değeri olarak kullanımı bilinmeli.
Klavyeden girilen sayı n olmak üzere [1..n] aralığındaki sayıların toplamı iki farklı
fonksiyon ile hesaplanmıştır. İnceleyiniz.
static void Main()
{
Console.Write("Type a positif number: ");
int value = Convert.ToInt32(Console.ReadLine());
int sumRegular = SumRegular(value);
int sumRecursive = SumRecursive(value);
}
static int SumRecursive(int val)
{
if (val == 0)
return 0;
return val + SumRecursive(val - 1);
}
static int SumRegular(int val)
{
int sum = 0;
for (int i = 1; i <= val; i++)
{
sum += i;
}
return sum;
}
2.
Aşağıda dizilerin fonksiyona parametre olarak gönderilmesi ve fonksiyonların geri
dönüş değeri olarak atanmasına yönelik bir örnek bulunmaktadır. İnceleyiniz.
static void Main()
{
int[,] myArray = GetArrayItems(2, 3);
PrintArrayItems(myArray);
}
static int[,] GetArrayItems(int row, int column)
{
int[,] myArray = new int[row, column];
for (int i = 0; i < row; i++)
{
for (int j = 0; j < column; j++)
{
myArray[i, j] = Convert.ToInt32(Console.ReadLine());
}
}
return myArray;
}
BM102 BİLGİSAYAR PROGRAMLAMA II
LABORATUVAR UYGULAMALARI
4. Hafta
static void PrintArrayItems(int[,] arr)
{
int row = arr.GetLength(0);
int column = arr.GetLength(1);
for (int i = 0; i < row; i++)
{
for (int j = 0; j < column; j++)
{
Console.WriteLine(i.ToString() + ":" + j.ToString() + " = " +
arr[i, j].ToString());
}
}
}
3.
Klavyeden girilen 𝑠𝑡𝑟𝑖𝑛𝑔 tipinde bir değeri klavyeden girilen bir karaktere göre ayrıştıran
program kodunu yazınız. 𝑆𝑝𝑙𝑖𝑡 ismindeki hazır fonksiyonu kullanmayınız.
Beklenen Fonksiyonlar ve Main Fonksiyon
static string[] Split(string text, char splitter)
static void PrintArrayItems(string[] arr)
static void Main(string[] args)
{
Console.Write("Type a text: ");
string tex = Console.ReadLine();
Console.Write("\nType a character as splitter: ");
char splitter = Convert.ToChar(Console.ReadLine());
string[] words = Split(tex, splitter);
PrintArrayItems(words);
}
Beklenen ekran çıktısı (boşluk karakterine göre ayrıştırılmış metin)
4.
Fibonacci serisini özyineli fonksiyonla uygulayınız. Oluşan seriyi 𝑖𝑛𝑡𝑒𝑔𝑒𝑟 bir diziye atıp ekrana
yazdırınız.
𝐹𝑛 = 𝐹𝑛−1 + 𝐹𝑛−2
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, …
BM102 BİLGİSAYAR PROGRAMLAMA II
LABORATUVAR UYGULAMALARI
4. Hafta
5.
Klavyeden girilen x ve y değerleri için aşağıdaki f(x,y) fonksiyonu sonucunu veren program
kodunu fonksiyon overload işlemi ile yazınız. Fonksiyonlardan dönen değerler ve parametre
türlerine aşağıda yer verilmiştir.
(𝑖𝑛𝑡𝑒𝑔𝑒𝑟)(𝑥 + 𝑦 ) → 𝐸ğ𝑒𝑟 𝑥 𝑣𝑒 𝑦 𝑖𝑛𝑡𝑒𝑔𝑒𝑟 𝑑𝑒ğ𝑖ş𝑘𝑒𝑛 𝑖𝑠𝑒
𝑓(𝑥, 𝑦, 𝑧) = {(𝑑𝑜𝑢𝑏𝑙𝑒) |𝑥 − 𝑦| → 𝐸ğ𝑒𝑟 𝑥 𝑖𝑛𝑡𝑒𝑔𝑒𝑟 𝑣𝑒 𝑦 𝑑𝑜𝑢𝑏𝑙𝑒 𝑑𝑒ğ𝑖ş𝑘𝑒𝑛 𝑖𝑠𝑒 }
(𝑖𝑛𝑡𝑒𝑔𝑒𝑟)(𝑥/𝑦) → 𝐸ğ𝑒𝑟 𝑥 𝑣𝑒 𝑦 𝑑𝑜𝑢𝑏𝑙𝑒 𝑑𝑒ğ𝑖ş𝑘𝑒𝑛 𝑖𝑠𝑒
Overload: Aynı imzaya sahip ancak aldıkları parametrelerin türleri ve/veya geri döndürdüğü
değerin tipi farklılık gösteren fonksiyonlardır. Aşağıdaki kod bloğunda 𝑓 fonksiyonu üç kere
overload edilmiştir.
static int f(int x, int y)
{
}
static double f(double x, int y)
{
}
static double f(double x, double y)
{
}
6.
Koordinat düzleminde 𝐴 noktası 𝐴(𝑥, 𝑦) olarak ifade edilmektedir. Kullanıcı tarafından girilen n
adet noktanın orijine olan uzaklıklarını hesaplayıp orijine en yakın olan noktadan en uzak olana
sıralama yapıp, noktaları bu sıra ile ekrana yazdıran program kodunu C# programlama dili ile
yazınız.
K ve L iki nokta olmak üzere bu iki nokta arasındaki uzaklık formülü aşağıdadır.
2
|𝐾𝐿| = √(𝑥𝑘 − 𝑥𝑙 )2 + (𝑦𝑘 − 𝑦𝑙 )2
7.
Klavyeden girilen bir tamsayının karesini hesaplayan, aynı imzaya sahip fakat parametre tipi
sırasıyla integer, double ve string olan 3 farklı fonksiyonu yazarak sonuçları ekranda gösteriniz.
8.
Klavyeden girilen bir sayı için 1'den o sayıya kadarki sayıların üstlerini alarak toplamlarını veren
konsol uygulamasını özyineli bir şekilde yazınız.
9.
Taban alanı ve yükseklik bilgisi klavyeden girilen bir silindirin hacmini, aynı imzaya sahip ancak
parametre tipi bir fonksiyon için integer diğer fonksiyon için double olan fonksiyon ile bulunuz.