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

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

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

実行結果は全て

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

上の形になります。

最初に日本の発祥の言語である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")

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

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

# -*- 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) +"歳になります。")

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

次はみんな大好き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はやっぱり難しいですね。2バイト文字の扱いにつまづきました。

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

#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;
}

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

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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください