第5講 メソッド(1)
第7話 第4話課題Bをint型メソッドで実現する
解答例
//以下C#を始めるためのお呪い
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//以上C#を始めるためのお呪い
namespace a //初心者はお呪い=決まり事と思い一切気にしない
{
class Program //初心者はお呪い=決まり事と思い一切気にしない
{
static void Main(string[] args) //私は社長だ。
{
int s, k, m, w; //s:初項 k:交差 m:末項 w:和
Console.WriteLine("キーボーから初項、交差、末項を順に入力して下さい。");
Console.Write("初項=");
s = int.Parse(Console.ReadLine()); //キーボードからsの値を取得
Console.Write("交差=");
k = int.Parse(Console.ReadLine()); //キーボードからkの値を取得
Console.Write("末項=");
m = int.Parse(Console.ReadLine()); //キーボードからmの値を取得
w = f(s, k, m); //社員f()に仕事を命じている。
Console.WriteLine("初項{0:d}、交差{1:d}、末項{2:d}の等差数列の和={3:d}", s, k, m, w);
}
static int f(int s,int k,int m)
{
int w = 0;
for (int i = s; i<= m; i += k) w += i;
return (w);
}
}
}
実行画面例
キーボーから初項、交差、末項を順に入力して下さい。
初項=45
交差=8
末項=845
初項45、交差8、末項845の等差数列の和=44945
さて、今回のコードを次のように書き換えてみて下さい。
//以下C#を始めるためのお呪い
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//以上C#を始めるためのお呪い
namespace a //初心者はお呪い=決まり事と思い一切気にしない
{
class Program //初心者はお呪い=決まり事と思い一切気にしない
{
static void Main(string[] args) //私は社長だ。
{
int s, k, m, w; //s:初項 k:交差 m:末項 w:和
Console.WriteLine("キーボーから初項、交差、末項を順に入力して下さい。");
Console.Write("初項=");
s = int.Parse(Console.ReadLine()); //キーボードからsの値を取得
Console.Write("交差=");
k = int.Parse(Console.ReadLine()); //キーボードからkの値を取得
Console.Write("末項=");
m = int.Parse(Console.ReadLine()); //キーボードからmの値を取得
w = f(s, k, m); //社員f()に仕事を命じている。
Console.WriteLine("初項{0:d}、交差{1:d}、末項{2:d}の等差数列の和={3:d}", s, k, m, w);
}
static int f(int x,int y,int z)
{
int w = 0;
for (int i = x; i<= z; i += y) w += i;
return (w);
}
}
}
変更箇所は、色で示してあります。
こんなことをしてプログラムは正常に動くのでしょうか。
Ctrl+F5をしてみて下さい。
答えは例によって30行下。
答え
正常に動くです。
どうしてでしょうか。不思議ですね。
それは
ということなのです。
メソッド内で変数名がそろっていれば良いのです。
どうしてかは、次話で扱う変数のスコープと値参照が関係しています。
ですので、理由を知りたい型は次話をクリック!