いろんな言語齧ってみました。

最近 いくつかの言語の触りだけ齧ってみました。

齧るのに西暦を入れると年齢・干支・和暦を返してくれるコードを書きました。

実行結果は全て

年(西暦)を入力して下さい。:
1975
1975年は昭和50年で、干支は午年であり、この年に生まれた方は今年42歳になります。

上の形になります。

最初に日本の発祥の言語であるrubyを書いてみました。

[ruby]
# coding: utf-8
puts ‘年(西暦)を入力してください’
y = gets.chop # y 入力された西暦

year = y.to_i # yをintに変換した値
key = year + 9 # 干支と配列の添字を対応させるため
wareki_key = 0 #和暦の添字の対応
wareki_year = 0 #和暦年号を計算した値の保存
age = 0 #年齢の保存

eto = ["亥","子","丑","寅","卯","辰","巳","午","未","申","酉","戌"]
wareki = ["明治","大正","昭和","平成"]

if year < 1912 wareki_key = 0.to_i
wareki_year = year – 1867
elsif year >= 1912 && year < 1926 wareki_key = 1.to_i wareki_year = year – 1911
elsif year >= 1926 && year < 1989 wareki_key = 2.to_i wareki_year = year – 1925
elsif year >= 1989 wareki_key = 3.to_i wareki_year = year – 1988
end

key = (year+9)%12

print(year , "年は" , wareki[wareki_key] , wareki_year , "年で、干支は" , eto[key] , "年であり、この年に生まれた方は今年" , 2017-year , "歳になります\n")
[/ruby]

楽しく書けることをモットーにしている言語なので、初心者でも書きやすかったです。

次に最近人気のPython3で書きました。

[python]
# -*- coding: utf-8 -*-

print("年(西暦)を入力して下さい")

year=int(input())

eto_key = (year + 9)%12
wareki_key = 0
wareki_year = 0
age = 2017 – year

eto = ["亥","子","丑","寅","卯","辰","巳","午","未","申","酉","戌"]
wareki = ["明治","大正","昭和","平成"]

if year < 1912: wareki_key = 0 wareki_year = year – 1867 elif year >= 1912 and year < 1926: wareki_key = 1 wareki_year = year – 1911 elif year >= 1926 and year < 1989: wareki_key = 2 wareki_year = year – 1925 elif year >= 1989:
wareki_key = 3
wareki_year = year -1988

print (str(year) +"年は"+ wareki[wareki_key] + str(wareki_year) +"年で、干支は" + eto[eto_key] +"年であり、この年に生まれた方は今年"+ str(age) +"歳になります。")
[/python]

インデントが規則化されているため綺麗な見た目のコードになります。複数人に見せる時とかは良さそうです。

次はみんな大好きC言語です。

[c]
#include <stdio.h>
int main(void){
int year,eto_key,wareki_year,wareki_key,age;
/*
year : ユーザーから入力してもらった年号
eto_key : 配列「eto」に対する添字
wareki_year : 和暦の年号の保存
warkeki_key : 配列「wareki」に対する添字
age : 年齢の保存
*/

printf("年(西暦)を入力して下さい。:");
scanf("%d",&year);

char eto[12][24] = {"亥","子","丑","寅","卯","辰","巳","午","未","申","酉","戌"};
char wareki[4][8] = {"明治","大正","昭和","平成"};

if (year >= 1868 && year < 1912){ wareki_key = 0; wareki_year = year – 1867; }else if (year >= 1912 && year < 1926){ wareki_key = 1; wareki_year = year – 1911; }else if (year >= 1926 && year < 1989){ wareki_key = 2; wareki_year = year – 1925; }else if (year >= 1989){
wareki_key = 3;
wareki_year = year – 1988;
}else{
printf("明治以前(1868年より前)の暦は対応しておりません\n");
return 0;
}

age = 2017 – year;
eto_key = (year+9)%12;

/*
printf(year + "年は" + wareki[wareki_key] + wareki_year + "年で、干支は" + eto[year%12] + "年であり、この年に生まれた方は今年" + age + "歳になります。");
*/
printf("%d年は%s%d年で、干支は%s年であり、この年に生まれた方は今年%d歳になります。\n",year,wareki[wareki_key],wareki_year,eto[eto_key],age);
/*
printf("年は");
printf("%s",wareki[wareki_key]);
printf("%d",wareki_year);
printf("年で、干支は");
printf("%s",eto[eto_key]);
printf("年であり、この年に生まれた方は今年");
printf("%d",age);
printf("歳になります。\n");
*/
return 0;
}
[/c]

Cはやっぱり難しいですね。2バイト文字の扱いにつまづきました。

Cを書いたのでちょっと派生してC++も齧りました

[cpp]
#include <iostream>
using namespace std;
int main(void){
int year,eto_key,wareki_year,wareki_key,age;
/*
year : ユーザーから入力してもらった年号
eto_key : 配列「eto」に対する添字
wareki_year : 和暦の年号の保存
warkeki_key : 配列「wareki」に対する添字
age : 年齢の保存
*/

cout << "年(西暦)を入力して下さい。:" << endl; cin >> year ;

char eto[12][24] = {"亥","子","丑","寅","卯","辰","巳","午","未","申","酉","戌"};
char wareki[4][8] = {"明治","大正","昭和","平成"};

if (year >= 1868 && year < 1912){ wareki_key = 0; wareki_year = year – 1867; }else if (year >= 1912 && year < 1926){ wareki_key = 1; wareki_year = year – 1911; }else if (year >= 1926 && year < 1989){ wareki_key = 2; wareki_year = year – 1925; }else if (year >= 1989){
wareki_key = 3;
wareki_year = year – 1988;
}else{
cout <<"明治以前(1868年より前)の暦は対応しておりません" << endl;
return 0;
}

age = 2017 – year;
eto_key = (year+9)%12;

cout << year<<"年は"<<wareki[wareki_key]<< wareki_year<<"年で、干支は"<<eto[year%12]<<"年であり、この年に生まれた方は今年"<<age<<"歳になります。"<< endl;
}
[/cpp]

Cとはだいぶ書き方の違う部分があり、迷いそうです。ちゃんとCに慣れてから触りたいと思います。

こんな感じにざっくりですがいろんな言語を齧ってみました。
まだまだ何もできませんが、もっと勉強してちゃんと扱えるようになりたいと思います。
まずはrubyあたりかなぁ…